Discussion:
Elegir hoja excel para escribir desde visual basic
(demasiado antiguo para responder)
mauro
2005-02-23 22:25:03 UTC
Permalink
Hola tengo un codigo con el cual trabajo desde vb 6.0 a excel casi sin
problemas leo datos ingreso datos guardo cambios aunque a veces se pega debo
reiniciar el pc y funca bien (es por que el archivo esta como solo lectura) .
Lo malo es que solo me deja trabajar en una sola hoja la hoja uno.
Yo quiero que los datos los guarde en la hoja 2 por que en la primera hoja
la tengo como grafico y esta la quiero importar como objeto ole.

este es el codigo que utlizo que me funciona

Private Sub Command1_Click()

Dim b As String
Dim ApExcel As Variant
Dim arch As String, i As Byte

arch = "c:\clasificaciones.xls"
b = numeroensayo.Text

If b = "" Then
MsgBox "Ingrese el numero de ensayo y luego presione buscar "
Else
Set ApExcel = CreateObject("Excel.application")

ApExcel.Workbooks.Open FileName:=arch
ApExcel.Visible = False
ApExcel.Cells(25, 5).Formula = porcquepasa2.Text
ApExcel.Cells(27, 5).Formula = porcquepasa3.Text
ApExcel.Cells(28, 5).Formula = porcquepasa4.Text
ApExcel.Cells(29, 5).Formula = porcquepasa5.Text
ApExcel.Cells(30, 5).Formula = porcquepasa6.Text
ApExcel.Cells(31, 5).Formula = porcquepasa7.Text
ApExcel.Cells(32, 5).Formula = porcquepasa8.Text
ApExcel.Cells(33, 5).Formula = porcquepasa10.Text
ApExcel.Cells(34, 5).Formula = porcquepasa11.Text
ApExcel.Cells(35, 5).Formula = porcquepasa12.Text
ApExcel.Cells(40, 5).Formula = ll.Text
ApExcel.Cells(42, 5).Formula = ip.Text
aashto.Caption = ApExcel.Cells(47, 5)
uscsc.Caption = ApExcel.Cells(46, 5)
ApExcel.ActiveWorkbook.Close True
ApExcel.Quit
End If
End Sub


que modificaciones debo hacer para elegir la hoja en que quiero escribir los
datos.
Segundo si al insertar el archivo ole le marco la opcion vincular esta se
pierde a la segunda actualizada del archivo. como puedo hacer para que una
vez guardados los cambios de excel por lo cual el grafico se actualizaria lo
tome como objeto ole y yo lo guardaria en base de datos .
Agradeciendo de antemano
Mauro
Heich
2005-02-24 02:52:43 UTC
Permalink
No seas tan desesperado Mauro, los mensajes tardan en aparecer en el grupo y
los colaboradores tambien, porque seguramente tienen mil cosas mas que hacer
aparte de dar consejos en el foro
Create un objeto WorkBook y un WorkSheet y asigna el libro y la hoja que
desees a estos, en lugar de trabajar excusivamente con el objeto Application

Ademas, te sugiero que declares el objeto Excel. Application como object en
lugar de como Variant, la respuesta, tienes mejor rendimiento con el Object,
y el variant ocupa mas espacio en memoria.

Checate las siguientes lineas

Dim ApExcel As Object
Dim XlsLibro as Object
Dim XlsHoja as Object

Dim arch As String, i As Byte

arch = "c:\clasificaciones.xls"
b = numeroensayo.Text

If b = "" Then
MsgBox "Ingrese el numero de ensayo y luego presione buscar "
Else
Set ApExcel = CreateObject("Excel.application")

ApExcel.Visible = False
Set XlsLibro= ApExcel.Workbooks.Open FileName:=arch
'Aqui puedes seleccionar la hoja con la que trabajaras
Set XlsHoja=XlsLibro.WorkSheets("Hoja1")

XlsHoja.Cells(25, 5).Formula = porcquepasa2.Text
---
---
Set XlsHoja=Nothing
XlsLibro.Close True ' O False, se refiere a si graba o no
Set XlsLibro=Nothing
ApExcel.Quit
Set ApExcel=Nothing

Saludos
--
--
Heich
----------------------------------------------------------------------
cadena= _
"***@h1o2t3m4a5i6l7.com" : _
for a=0 to 9: cadena=replace(cadena,a,""): _
next a: ?cadena
----------------------------------------------------------------------
Daria todo lo que se por saber la mitad de lo que ignoro.
----------------------------------------------------------------------
NOTA: este mensaje se proporciona TAL CUAL.Sin ningun derecho o garantia
Guia de Netiquette:
http://www.geocities.com/heich_programmer/Netiquette.html

Siempre que tengo una duda, le pregunto primero a San Google
http://groups.google.com/groups?hl=es&lr=&ie=UTF-8&c2coff=1&group=microsoft.public.es.vb
Reglas de conducta para las Comunidades Microsoft
http://www.microsoft.com/spain/comunidades/reglas/reglas.asp
Post by mauro
Hola tengo un codigo con el cual trabajo desde vb 6.0 a excel casi sin
problemas leo datos ingreso datos guardo cambios aunque a veces se
pega debo reiniciar el pc y funca bien (es por que el archivo esta
como solo lectura) . Lo malo es que solo me deja trabajar en una sola
hoja la hoja uno.
Yo quiero que los datos los guarde en la hoja 2 por que en la primera
hoja la tengo como grafico y esta la quiero importar como objeto ole.
este es el codigo que utlizo que me funciona
Private Sub Command1_Click()
Dim b As String
Dim ApExcel As Variant
Dim arch As String, i As Byte
arch = "c:\clasificaciones.xls"
b = numeroensayo.Text
If b = "" Then
MsgBox "Ingrese el numero de ensayo y luego presione buscar "
Else
Set ApExcel = CreateObject("Excel.application")
ApExcel.Workbooks.Open FileName:=arch
ApExcel.Visible = False
ApExcel.Cells(25, 5).Formula = porcquepasa2.Text
ApExcel.Cells(27, 5).Formula = porcquepasa3.Text
ApExcel.Cells(28, 5).Formula = porcquepasa4.Text
ApExcel.Cells(29, 5).Formula = porcquepasa5.Text
ApExcel.Cells(30, 5).Formula = porcquepasa6.Text
ApExcel.Cells(31, 5).Formula = porcquepasa7.Text
ApExcel.Cells(32, 5).Formula = porcquepasa8.Text
ApExcel.Cells(33, 5).Formula = porcquepasa10.Text
ApExcel.Cells(34, 5).Formula = porcquepasa11.Text
ApExcel.Cells(35, 5).Formula = porcquepasa12.Text
ApExcel.Cells(40, 5).Formula = ll.Text
ApExcel.Cells(42, 5).Formula = ip.Text
aashto.Caption = ApExcel.Cells(47, 5)
uscsc.Caption = ApExcel.Cells(46, 5)
ApExcel.ActiveWorkbook.Close True
ApExcel.Quit
End If
End Sub
que modificaciones debo hacer para elegir la hoja en que quiero
escribir los datos.
Segundo si al insertar el archivo ole le marco la opcion vincular
esta se pierde a la segunda actualizada del archivo. como puedo hacer
para que una vez guardados los cambios de excel por lo cual el
grafico se actualizaria lo tome como objeto ole y yo lo guardaria en
base de datos .
Agradeciendo de antemano
Mauro
mauro
2005-02-24 12:35:03 UTC
Permalink
Hola gracias por la respuesta heich

probe con tu codigo
y me tira error de sintaxis en esta linea

Set XlsLibro= ApExcel.Workbooks.Open FileName:=arch

y de nuevo muchas gracias por tu ayuda ya que soy nuevo en visual
Post by Heich
No seas tan desesperado Mauro, los mensajes tardan en aparecer en el grupo y
los colaboradores tambien, porque seguramente tienen mil cosas mas que hacer
aparte de dar consejos en el foro
Create un objeto WorkBook y un WorkSheet y asigna el libro y la hoja que
desees a estos, en lugar de trabajar excusivamente con el objeto Application
Ademas, te sugiero que declares el objeto Excel. Application como object en
lugar de como Variant, la respuesta, tienes mejor rendimiento con el Object,
y el variant ocupa mas espacio en memoria.
Checate las siguientes lineas
Dim ApExcel As Object
Dim XlsLibro as Object
Dim XlsHoja as Object
Dim arch As String, i As Byte
arch = "c:\clasificaciones.xls"
b = numeroensayo.Text
If b = "" Then
MsgBox "Ingrese el numero de ensayo y luego presione buscar "
Else
Set ApExcel = CreateObject("Excel.application")
ApExcel.Visible = False
Set XlsLibro= ApExcel.Workbooks.Open FileName:=arch
'Aqui puedes seleccionar la hoja con la que trabajaras
Set XlsHoja=XlsLibro.WorkSheets("Hoja1")
XlsHoja.Cells(25, 5).Formula = porcquepasa2.Text
---
---
Set XlsHoja=Nothing
XlsLibro.Close True ' O False, se refiere a si graba o no
Set XlsLibro=Nothing
ApExcel.Quit
Set ApExcel=Nothing
Saludos
--
--
Heich
----------------------------------------------------------------------
cadena= _
for a=0 to 9: cadena=replace(cadena,a,""): _
next a: ?cadena
----------------------------------------------------------------------
Daria todo lo que se por saber la mitad de lo que ignoro.
----------------------------------------------------------------------
NOTA: este mensaje se proporciona TAL CUAL.Sin ningun derecho o garantia
http://www.geocities.com/heich_programmer/Netiquette.html
Siempre que tengo una duda, le pregunto primero a San Google
http://groups.google.com/groups?hl=es&lr=&ie=UTF-8&c2coff=1&group=microsoft.public.es.vb
Reglas de conducta para las Comunidades Microsoft
http://www.microsoft.com/spain/comunidades/reglas/reglas.asp
Post by mauro
Hola tengo un codigo con el cual trabajo desde vb 6.0 a excel casi sin
problemas leo datos ingreso datos guardo cambios aunque a veces se
pega debo reiniciar el pc y funca bien (es por que el archivo esta
como solo lectura) . Lo malo es que solo me deja trabajar en una sola
hoja la hoja uno.
Yo quiero que los datos los guarde en la hoja 2 por que en la primera
hoja la tengo como grafico y esta la quiero importar como objeto ole.
este es el codigo que utlizo que me funciona
Private Sub Command1_Click()
Dim b As String
Dim ApExcel As Variant
Dim arch As String, i As Byte
arch = "c:\clasificaciones.xls"
b = numeroensayo.Text
If b = "" Then
MsgBox "Ingrese el numero de ensayo y luego presione buscar "
Else
Set ApExcel = CreateObject("Excel.application")
ApExcel.Workbooks.Open FileName:=arch
ApExcel.Visible = False
ApExcel.Cells(25, 5).Formula = porcquepasa2.Text
ApExcel.Cells(27, 5).Formula = porcquepasa3.Text
ApExcel.Cells(28, 5).Formula = porcquepasa4.Text
ApExcel.Cells(29, 5).Formula = porcquepasa5.Text
ApExcel.Cells(30, 5).Formula = porcquepasa6.Text
ApExcel.Cells(31, 5).Formula = porcquepasa7.Text
ApExcel.Cells(32, 5).Formula = porcquepasa8.Text
ApExcel.Cells(33, 5).Formula = porcquepasa10.Text
ApExcel.Cells(34, 5).Formula = porcquepasa11.Text
ApExcel.Cells(35, 5).Formula = porcquepasa12.Text
ApExcel.Cells(40, 5).Formula = ll.Text
ApExcel.Cells(42, 5).Formula = ip.Text
aashto.Caption = ApExcel.Cells(47, 5)
uscsc.Caption = ApExcel.Cells(46, 5)
ApExcel.ActiveWorkbook.Close True
ApExcel.Quit
End If
End Sub
que modificaciones debo hacer para elegir la hoja en que quiero
escribir los datos.
Segundo si al insertar el archivo ole le marco la opcion vincular
esta se pierde a la segunda actualizada del archivo. como puedo hacer
para que una vez guardados los cambios de excel por lo cual el
grafico se actualizaria lo tome como objeto ole y yo lo guardaria en
base de datos .
Agradeciendo de antemano
Mauro
Jordi Maycas
2005-02-24 14:00:39 UTC
Permalink
uso vb 6, y me dice q no entiende lo de excel.application.. es algun
componente.. de donde lo saco?
Post by mauro
Hola gracias por la respuesta heich
probe con tu codigo
y me tira error de sintaxis en esta linea
Set XlsLibro= ApExcel.Workbooks.Open FileName:=arch
y de nuevo muchas gracias por tu ayuda ya que soy nuevo en visual
Post by Heich
No seas tan desesperado Mauro, los mensajes tardan en aparecer en el grupo y
los colaboradores tambien, porque seguramente tienen mil cosas mas que hacer
aparte de dar consejos en el foro
Create un objeto WorkBook y un WorkSheet y asigna el libro y la hoja que
desees a estos, en lugar de trabajar excusivamente con el objeto Application
Ademas, te sugiero que declares el objeto Excel. Application como object en
lugar de como Variant, la respuesta, tienes mejor rendimiento con el Object,
y el variant ocupa mas espacio en memoria.
Checate las siguientes lineas
Dim ApExcel As Object
Dim XlsLibro as Object
Dim XlsHoja as Object
Dim arch As String, i As Byte
arch = "c:\clasificaciones.xls"
b = numeroensayo.Text
If b = "" Then
MsgBox "Ingrese el numero de ensayo y luego presione buscar "
Else
Set ApExcel = CreateObject("Excel.application")
ApExcel.Visible = False
Set XlsLibro= ApExcel.Workbooks.Open FileName:=arch
'Aqui puedes seleccionar la hoja con la que trabajaras
Set XlsHoja=XlsLibro.WorkSheets("Hoja1")
XlsHoja.Cells(25, 5).Formula = porcquepasa2.Text
---
---
Set XlsHoja=Nothing
XlsLibro.Close True ' O False, se refiere a si graba o no
Set XlsLibro=Nothing
ApExcel.Quit
Set ApExcel=Nothing
Saludos
--
--
Heich
----------------------------------------------------------------------
cadena= _
for a=0 to 9: cadena=replace(cadena,a,""): _
next a: ?cadena
----------------------------------------------------------------------
Daria todo lo que se por saber la mitad de lo que ignoro.
----------------------------------------------------------------------
NOTA: este mensaje se proporciona TAL CUAL.Sin ningun derecho o garantia
http://www.geocities.com/heich_programmer/Netiquette.html
Siempre que tengo una duda, le pregunto primero a San Google
http://groups.google.com/groups?hl=es&lr=&ie=UTF-8&c2coff=1&group=microsoft.public.es.vb
Reglas de conducta para las Comunidades Microsoft
http://www.microsoft.com/spain/comunidades/reglas/reglas.asp
Post by mauro
Hola tengo un codigo con el cual trabajo desde vb 6.0 a excel casi sin
problemas leo datos ingreso datos guardo cambios aunque a veces se
pega debo reiniciar el pc y funca bien (es por que el archivo esta
como solo lectura) . Lo malo es que solo me deja trabajar en una sola
hoja la hoja uno.
Yo quiero que los datos los guarde en la hoja 2 por que en la primera
hoja la tengo como grafico y esta la quiero importar como objeto ole.
este es el codigo que utlizo que me funciona
Private Sub Command1_Click()
Dim b As String
Dim ApExcel As Variant
Dim arch As String, i As Byte
arch = "c:\clasificaciones.xls"
b = numeroensayo.Text
If b = "" Then
MsgBox "Ingrese el numero de ensayo y luego presione buscar "
Else
Set ApExcel = CreateObject("Excel.application")
ApExcel.Workbooks.Open FileName:=arch
ApExcel.Visible = False
ApExcel.Cells(25, 5).Formula = porcquepasa2.Text
ApExcel.Cells(27, 5).Formula = porcquepasa3.Text
ApExcel.Cells(28, 5).Formula = porcquepasa4.Text
ApExcel.Cells(29, 5).Formula = porcquepasa5.Text
ApExcel.Cells(30, 5).Formula = porcquepasa6.Text
ApExcel.Cells(31, 5).Formula = porcquepasa7.Text
ApExcel.Cells(32, 5).Formula = porcquepasa8.Text
ApExcel.Cells(33, 5).Formula = porcquepasa10.Text
ApExcel.Cells(34, 5).Formula = porcquepasa11.Text
ApExcel.Cells(35, 5).Formula = porcquepasa12.Text
ApExcel.Cells(40, 5).Formula = ll.Text
ApExcel.Cells(42, 5).Formula = ip.Text
aashto.Caption = ApExcel.Cells(47, 5)
uscsc.Caption = ApExcel.Cells(46, 5)
ApExcel.ActiveWorkbook.Close True
ApExcel.Quit
End If
End Sub
que modificaciones debo hacer para elegir la hoja en que quiero
escribir los datos.
Segundo si al insertar el archivo ole le marco la opcion vincular
esta se pierde a la segunda actualizada del archivo. como puedo hacer
para que una vez guardados los cambios de excel por lo cual el
grafico se actualizaria lo tome como objeto ole y yo lo guardaria en
base de datos .
Agradeciendo de antemano
Mauro
mauro
2005-02-24 16:35:09 UTC
Permalink
Funcionando elegir hojas este es el codigo

Private Sub Command1_Click()

Dim oApp As Object
Dim oWorkBook As Object
Dim oSheet As Object

' Creo una instancia de Excel
Set oApp = CreateObject("Excel.Application")

' Abrimos el libro de trabajo
Set oWorkBook = oApp.Workbooks.Open("C:\pruebagrafico.xls")

' Referenciamos la hoja de cálculo
Set oSheet = oWorkBook.Worksheets("Hoja1")

' hago visible el libro
oApp.Visible = False

oSheet.Cells(1, 1).Formula = Text1.Text
oSheet.Cells(2, 1).Formula = Text2.Text
oSheet.Cells(3, 1).Formula = Text3.Text
oSheet.Cells(4, 1).Formula = Text4.Text

' Cierro el libro de Excel, indicando que el libro
' ya ha sido guardado
oWorkBook.Close True

' Cierro la aplicación
oApp.Quit

' Libero las referencias
Set oSheet = Nothing
Set oWorkBook = Nothing
Set oApp = Nothing

End Sub

Muchas gracias a los que se tomaron el tiempo para responder.
Pero me queda un problema estos datos los escribos en la hoja pero en el
principio del libro tengo un grafico como como hoja entonces este lo importo
como archivo ole al programa echo en visual basic.
Como hago para que el control ole se actualize automaticamente ya que tengo
que hacer click derecho sobre el ole (logicamente cuando el programa esta
corriendo),y presiono modificar luego cierro la ventana excel que me abre con
el grafico, y se actualiza y cuadra el ole como puedo dejar eso automatico,
el ole lo tengo enlazado.
Heich
2005-02-24 20:42:14 UTC
Permalink
:)
--
--
Heich
----------------------------------------------------------------------
cadena= _
"***@h1o2t3m4a5i6l7.com" : _
for a=0 to 9: cadena=replace(cadena,a,""): _
next a: ?cadena
----------------------------------------------------------------------
Daria todo lo que se por saber la mitad de lo que ignoro.
----------------------------------------------------------------------
NOTA: este mensaje se proporciona TAL CUAL.Sin ningun derecho o garantia
Guia de Netiquette:
http://www.geocities.com/heich_programmer/Netiquette.html

Siempre que tengo una duda, le pregunto primero a San Google
http://groups.google.com/groups?hl=es&lr=&ie=UTF-8&c2coff=1&group=microsoft.public.es.vb
----------------------------------------------------------------------
Post by mauro
Funcionando elegir hojas este es el codigo
Private Sub Command1_Click()
Dim oApp As Object
Dim oWorkBook As Object
Dim oSheet As Object
' Creo una instancia de Excel
Set oApp = CreateObject("Excel.Application")
' Abrimos el libro de trabajo
Set oWorkBook = oApp.Workbooks.Open("C:\pruebagrafico.xls")
' Referenciamos la hoja de cálculo
Set oSheet = oWorkBook.Worksheets("Hoja1")
' hago visible el libro
oApp.Visible = False
oSheet.Cells(1, 1).Formula = Text1.Text
oSheet.Cells(2, 1).Formula = Text2.Text
oSheet.Cells(3, 1).Formula = Text3.Text
oSheet.Cells(4, 1).Formula = Text4.Text
' Cierro el libro de Excel, indicando que el libro
' ya ha sido guardado
oWorkBook.Close True
' Cierro la aplicación
oApp.Quit
' Libero las referencias
Set oSheet = Nothing
Set oWorkBook = Nothing
Set oApp = Nothing
End Sub
Muchas gracias a los que se tomaron el tiempo para responder.
Pero me queda un problema estos datos los escribos en la hoja pero en el
principio del libro tengo un grafico como como hoja entonces este lo importo
como archivo ole al programa echo en visual basic.
Como hago para que el control ole se actualize automaticamente ya que tengo
que hacer click derecho sobre el ole (logicamente cuando el programa esta
corriendo),y presiono modificar luego cierro la ventana excel que me abre con
el grafico, y se actualiza y cuadra el ole como puedo dejar eso automatico,
el ole lo tengo enlazado.
Loading...