utilizar datos de Excel en una aplicación externa

07/09/2004 - 11:05 por btomeu | Informe spam
Como puedo acceder a los datos de un libro de Excel desde una aplicación
externa que tambien utiliza VBA, como puedo moverme entre las casillas y
coger sus valores desde una aplicación externa a Excel y utilizarlos en
esa aplicación externa.

Gracias

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
07/09/2004 - 11:47 | Informe spam
"tomeu" escribió en el mensaje news:
Como puedo acceder a los datos de un libro de Excel desde una aplicación
externa que tambien utiliza VBA, como puedo moverme entre las casillas y
coger sus valores desde una aplicación externa a Excel y utilizarlos en
esa aplicación externa.

Gracias




Puedes establecer una referencia a la biblioteca de Excel (Microsoft Excel XX.x Object Library) y crear un objeto Application con, p.ej.:

Dim appExcel As New Excel.Application

Después ya podrás trabajar con dicho objeto normalmente. Por ejemplo, para abrir el libro C:\MiLibro.xls:

appExcel.Workbooks.Open "C:\MiLibro.xls"

Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#2 btomeu
07/09/2004 - 15:12 | Informe spam
Fernando Arroyo wrote:

"tomeu" escribió en el mensaje


news:
> Como puedo acceder a los datos de un libro de Excel desde una aplicación
> externa que tambien utiliza VBA, como puedo moverme entre las casillas y
> coger sus valores desde una aplicación externa a Excel y utilizarlos en
> esa aplicación externa.
>
> Gracias
>

Puedes establecer una referencia a la biblioteca de Excel (Microsoft Excel


XX.x Object Library) y crear un objeto Application con, p.ej.:

Dim appExcel As New Excel.Application

Después ya podrás trabajar con dicho objeto normalmente. Por ejemplo, para


abrir el libro C:MiLibro.xls:

appExcel.Workbooks.Open "C:MiLibro.xls"

Un saludo.


Fernando Arroyo
MS MVP - Excel



Tengo una aplicación. Donde puedo agregar código VBA, en el ejecuto un
procedimiento el cual coge los valores de una matriz.
Mi pregunta es si es posible coger esos valores de una hoja de Excel en
lugar de cogerlos de una matriz, así cualquier usuario sin conocimientos
de programación pudria cambiar los valores que luego utilizo en el
procedimiento.
Así abro una instancia al archivo donde tengo los valores deseados Como
puedo coger el valor de las casillas y moverme por la hoja como si se
tratara de una matriz. Yo lo se hacer aunque desde el mismo libro no desde
una aplicación Vb externa.

Así abro el libro del cual pretendo obtener sus datos

Dim xls As Object, _
strLibro As String

Set xls = CreateObject("Excel.Application")
strLibro = "la ruta de tu hoja de calculo"
xls.Workbooks.Open strLibro

Gracias
Respuesta Responder a este mensaje
#3 Fernando Arroyo
08/09/2004 - 09:47 | Informe spam
"tomeu" escribió en el mensaje news:%
Fernando Arroyo wrote:

> "tomeu" escribió en el mensaje
news:
> > Como puedo acceder a los datos de un libro de Excel desde una aplicación
> > externa que tambien utiliza VBA, como puedo moverme entre las casillas y
> > coger sus valores desde una aplicación externa a Excel y utilizarlos en
> > esa aplicación externa.
> >
> > Gracias
> >

> Puedes establecer una referencia a la biblioteca de Excel (Microsoft Excel
XX.x Object Library) y crear un objeto Application con, p.ej.:

> Dim appExcel As New Excel.Application

> Después ya podrás trabajar con dicho objeto normalmente. Por ejemplo, para
abrir el libro C:MiLibro.xls:

> appExcel.Workbooks.Open "C:MiLibro.xls"

> Un saludo.


> Fernando Arroyo
> MS MVP - Excel

Tengo una aplicación. Donde puedo agregar código VBA, en el ejecuto un
procedimiento el cual coge los valores de una matriz.
Mi pregunta es si es posible coger esos valores de una hoja de Excel en
lugar de cogerlos de una matriz, así cualquier usuario sin conocimientos
de programación pudria cambiar los valores que luego utilizo en el
procedimiento.
Así abro una instancia al archivo donde tengo los valores deseados Como
puedo coger el valor de las casillas y moverme por la hoja como si se
tratara de una matriz. Yo lo se hacer aunque desde el mismo libro no desde
una aplicación Vb externa.

Así abro el libro del cual pretendo obtener sus datos

Dim xls As Object, _
strLibro As String

Set xls = CreateObject("Excel.Application")
strLibro = "la ruta de tu hoja de calculo"
xls.Workbooks.Open strLibro

Gracias





¿Y cuál es el problema?. El código que pones debería funcionarte. Es una forma alternativa a la que yo sugería en mi mensaje anterior. La que usas tiene la ventaja de que no necesitas referenciar la librería de Excel, y el inconveniente de que no se desplegarán sus propiedades y métodos según escribes el código.

Supongo que después de abrir el libro harás visible Excel mediante

xls.visible=true

Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#4 btomeu
08/09/2004 - 17:19 | Informe spam
Creo que me estoy liando y fuerte. Más o menos me defiendo en VBA para
Excel pero no consigo realizar lo mismo desde fuera de Excel aunque se
utilize también VBA.Vale eso es lo que intente aunque luego no sabia como
moverme sobre la hoja y lo he intentado como tu dices y también fallo en
algo
Para hacer una prueba me hice un form con un TextBox y un boton que
ejecute el código
pero al ejecutarlo me aparece el siguiente error nº438 "Object doesnŽt
support this property or
method"


Sub CommandButton1_Click()
Dim xls As Object, strNombreLibro As String

Dim appExcel As Excel.Application

'Dim i As Integer
'Dim j As Integer
Dim Dato As String

On Error GoTo Control_Error



Set xls = CreateObject("Excel.Application")
strNombreLibro = "C:\AA.xls"
If Not xls.FileExists(strNombreLibro) Then
MsgBox "El libro " & strNombreLibro & " no existe.", vbCritical
Exit Sub
End If

xls.Workbooks.Open strNombreLibro
Dato = xls.Sheets("Hoja1").Cells(1, 1)
'i = 0
'j = 0
'While (i < 100)
' While (j < 6)
'Para referirte a una celda concreta de una hoja en base a la
fila y columna
' Dato = .Sheets(Hoja1).Cells(i, j) 'PRETENDO COGER EL VALOR DE LA
CELDA EN UNA VARIABLE Y NO LO CONSIGO
' j = j + 1
' Wend
'i = i + 1
'Wend

Me.TextBox1 = Dato

Exit Sub
Control_Error:
MsgBox "Se ha producido el error nº " & Err.Number _
& vbCrLf & Err.Description _
, vbCritical
End Sub


Fernando Arroyo wrote:

"tomeu" escribió en el mensaje


news:%
> Fernando Arroyo wrote:
>
> > "tomeu" escribió en el mensaje
> news:
> > > Como puedo acceder a los datos de un libro de Excel desde una


aplicación
> > > externa que tambien utiliza VBA, como puedo moverme entre las casillas


y
> > > coger sus valores desde una aplicación externa a Excel y utilizarlos en
> > > esa aplicación externa.
> > >
> > > Gracias
> > >
>
> > Puedes establecer una referencia a la biblioteca de Excel (Microsoft


Excel
> XX.x Object Library) y crear un objeto Application con, p.ej.:
>
> > Dim appExcel As New Excel.Application
>
> > Después ya podrás trabajar con dicho objeto normalmente. Por ejemplo,


para
> abrir el libro C:MiLibro.xls:
>
> > appExcel.Workbooks.Open "C:MiLibro.xls"
>
> > Un saludo.
>
>
> > Fernando Arroyo
> > MS MVP - Excel
>
> Tengo una aplicación. Donde puedo agregar código VBA, en el ejecuto un
> procedimiento el cual coge los valores de una matriz.
> Mi pregunta es si es posible coger esos valores de una hoja de Excel en
> lugar de cogerlos de una matriz, así cualquier usuario sin conocimientos
> de programación pudria cambiar los valores que luego utilizo en el
> procedimiento.
> Así abro una instancia al archivo donde tengo los valores deseados Como
> puedo coger el valor de las casillas y moverme por la hoja como si se
> tratara de una matriz. Yo lo se hacer aunque desde el mismo libro no desde
> una aplicación Vb externa.
>
> Así abro el libro del cual pretendo obtener sus datos
>
> Dim xls As Object, _
> strLibro As String
>
> Set xls = CreateObject("Excel.Application")
> strLibro = "la ruta de tu hoja de calculo"
> xls.Workbooks.Open strLibro
>
> Gracias
>
>

¿Y cuál es el problema?. El código que pones debería funcionarte. Es una


forma alternativa a la que yo sugería en mi mensaje anterior. La que usas
tiene la ventaja de que no necesitas referenciar la librería de Excel, y el
inconveniente de que no se desplegarán sus propiedades y métodos según
escribes el código.

Supongo que después de abrir el libro harás visible Excel mediante

xls.visible=true

Un saludo.


Fernando Arroyo
MS MVP - Excel


Vale eso es lo que intente aunque luego no sabia como moverme sobre la
hoja y lo he intentado como tu dices y también fallo en algo
Para hacer una prueba me hice un form con un TextBox y un boton que
ejecute el código
pero al ejecutarlo me aparece el siguiente error nº438 "Object doesnŽt
support this property or
method"


Sub CommandButton1_Click()
Dim xls As Object, strNombreLibro As String

Dim appExcel As Excel.Application

'Dim i As Integer
'Dim j As Integer
Dim Dato As String

On Error GoTo Control_Error



Set xls = CreateObject("Excel.Application")
strNombreLibro = "C:\AA.xls"
If Not xls.FileExists(strNombreLibro) Then
MsgBox "El libro " & strNombreLibro & " no existe.", vbCritical
Exit Sub
End If

xls.Workbooks.Open strNombreLibro
Dato = xls.Sheets("Hoja1").Cells(1, 1)
'i = 0
'j = 0
'While (i < 100)
' While (j < 6)
'Para referirte a una celda concreta de una hoja en base a la
fila y columna
' Dato = .Sheets(Hoja1).Cells(i, j) 'PRETENDO COGER EL VALOR DE LA
CELDA EN UNA VARIABLE Y NO LO CONSIGO
' j = j + 1
' Wend
'i = i + 1
'Wend

Me.TextBox1 = Dato

Exit Sub
Control_Error:
MsgBox "Se ha producido el error nº " & Err.Number _
& vbCrLf & Err.Description _
, vbCritical
End Sub
Respuesta Responder a este mensaje
#5 Fernando Arroyo
09/09/2004 - 09:52 | Informe spam
A mí el siguiente códio me funciona sin problemas desde un formulario de Access:

Sub CommandButton1_Click()
Dim xls As Object, strNombreLibro As String
Dim appExcel As Excel.Application
Dim Dato As String

On Error GoTo Control_Error

Set xls = CreateObject("Excel.Application")
strNombreLibro = "C:\kk.xls"
If Dir(strNombreLibro) = "" Then
MsgBox "El libro " & strNombreLibro & " no existe.", vbCritical
Exit Sub
End If

xls.Workbooks.Open strNombreLibro
Dato = xls.Sheets("Hoja1").Cells(1, 1)
Me.TextBox1 = Dato

xls.Quit
Set xls = Nothing

Exit Sub

Control_Error:
MsgBox "Se ha producido el error nº " & Err.Number _
& vbCrLf & Err.Description _
, vbCritical
End Sub


He sustituido el método FileExists por la función Dir, porque dicho método no pertenece a Excel sino al objeto FileSystemObject.

También he añadido una instrucción al final del código para salir de Excel, porque si no es libro quedaría abierto y podría haber dificultades para acceder a él luego.

Como dices que quieres trabajar con una matriz, te recuerdo que es posible volcar directamente el contenido de un rango a una matriz de tipo Variant. Por ejemplo, para volcar a la matriz mtr el rango A1:B3 de Hoja1:

Dim mtr as Variant
mtr = xls.Sheets("Hoja1").[A1:B3]

Un saludo.


Fernando Arroyo
MS MVP - Excel


"tomeu" escribió en el mensaje news:et%
Creo que me estoy liando y fuerte. Más o menos me defiendo en VBA para
Excel pero no consigo realizar lo mismo desde fuera de Excel aunque se
utilize también VBA.Vale eso es lo que intente aunque luego no sabia como
moverme sobre la hoja y lo he intentado como tu dices y también fallo en
algo
Para hacer una prueba me hice un form con un TextBox y un boton que
ejecute el código
pero al ejecutarlo me aparece el siguiente error nº438 "Object doesnŽt
support this property or
method"


Sub CommandButton1_Click()
Dim xls As Object, strNombreLibro As String

Dim appExcel As Excel.Application

'Dim i As Integer
'Dim j As Integer
Dim Dato As String

On Error GoTo Control_Error



Set xls = CreateObject("Excel.Application")
strNombreLibro = "C:\AA.xls"
If Not xls.FileExists(strNombreLibro) Then
MsgBox "El libro " & strNombreLibro & " no existe.", vbCritical
Exit Sub
End If

xls.Workbooks.Open strNombreLibro
Dato = xls.Sheets("Hoja1").Cells(1, 1)
'i = 0
'j = 0
'While (i < 100)
' While (j < 6)
'Para referirte a una celda concreta de una hoja en base a la
fila y columna
' Dato = .Sheets(Hoja1).Cells(i, j) 'PRETENDO COGER EL VALOR DE LA
CELDA EN UNA VARIABLE Y NO LO CONSIGO
' j = j + 1
' Wend
'i = i + 1
'Wend

Me.TextBox1 = Dato

Exit Sub
Control_Error:
MsgBox "Se ha producido el error nº " & Err.Number _
& vbCrLf & Err.Description _
, vbCritical
End Sub


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida