Excel y Visual Basic

15/06/2006 - 03:55 por Pablo Di Martino | Informe spam
Gente estoy abriendo un archivo Excel y modificándolo de la siguiente
manera

Private oExcelApplication As Excel.Application
Private oExcelWorkbook As Excel.Workbook

Set oExcelApplication = New Excel.Application
Set oExcelWorkbook = oExcelApplication.Workbooks.Open("C:\libro.xls")

oExcelApplication.Cells(1, 1).Value = "TEXTO"
oExcelWorkbook.Save
oExcelWorkbook.Close
Set oExcelWorkbook = Nothing
Set oExcelApplication = Nothing

Mi problema es que si en el medio de abrir, grabar y cerrar el archivo
Excel, abren otro archivo Excel, este se levanta en la sesión creada por
oExcelApplication y encima si lo cierran pierdo la referencia y da error
cualquier operación que deseo ejecutar con oExcelApplication o
oExcelWorkbook.

Hay alguna forma de esconder la sesión de Excel que estoy abriendo desde
Visual para que no se use si se abre otro archivo de Excel por fuera de la
aplicación?

Muchas gracias por su ayuda, Pablo

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/06/2006 - 07:46 | Informe spam
hola, Pablo !

1) podrias probar con la propiedad .Visible establecida en False y aplicada al objeto oExcelApplication -?-

2) puedes 'obligar' a que [cualquier] 'otro' libro se abra en una instancia 'nueva/aparte/separada/...'
y para que no te 'avise' que hara 'caso omiso' a las 'solicitudes remotas'... prueba con algo +/- como...
a) al inicio de 'tus procesos'...
With oExcelApplication
.DisplayAlerts = False
.IgnoreRemoteRequests = True
.DisplayAlerts = True
End With
b) [y obviamente] al final de los mismos...
oExcelApplication.IgnoreRemoteRequests = False

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

p.d. espero que no me lo tomes a mal... [pero creo que]...
no es 'correcto' que postees la misma consulta en dos [o mas] grupos de manera 'aislada/indistinta...' :(
las respuestas en uno de ellos... no 'beneficiaran' al grupo [o grupos] 'excluidos' ;)
si consideras que tu pregunta pudiera ser de interes a varios grupos...
prueba a hacer [lo que se conoce como].. 'cross-posting' NO 'multi posting' :D

__ la consulta original __
... estoy abriendo un archivo Excel y modificandolo de la siguiente manera
Private oExcelApplication As Excel.Application
Private oExcelWorkbook As Excel.Workbook
Set oExcelApplication = New Excel.Application
Set oExcelWorkbook = oExcelApplication.Workbooks.Open("C:\libro.xls")
oExcelApplication.Cells(1, 1).Value = "TEXTO"
oExcelWorkbook.Save
oExcelWorkbook.Close
Set oExcelWorkbook = Nothing
Set oExcelApplication = Nothing
Mi problema es que si en el medio de abrir, grabar y cerrar el archivo Excel, abren otro archivo Excel
este se levanta en la sesión creada por oExcelApplication y encima si lo cierran pierdo la referencia
y da error cualquier operación que deseo ejecutar con oExcelApplication o oExcelWorkbook.
Hay alguna forma de esconder la sesion de Excel que estoy abriendo desde Visual
para que no se use si se abre otro archivo de Excel por fuera de la aplicacion?
Respuesta Responder a este mensaje
#2 Pablo
15/06/2006 - 16:38 | Informe spam
Ok muchas gracias, lo estaré probando.

Cómo hago el 'cross-posting' desde el Outlook Express?

"Héctor Miguel" escribió:

hola, Pablo !

1) podrias probar con la propiedad .Visible establecida en False y aplicada al objeto oExcelApplication -?-

2) puedes 'obligar' a que [cualquier] 'otro' libro se abra en una instancia 'nueva/aparte/separada/...'
y para que no te 'avise' que hara 'caso omiso' a las 'solicitudes remotas'... prueba con algo +/- como...
a) al inicio de 'tus procesos'...
With oExcelApplication
.DisplayAlerts = False
.IgnoreRemoteRequests = True
.DisplayAlerts = True
End With
b) [y obviamente] al final de los mismos...
oExcelApplication.IgnoreRemoteRequests = False

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

p.d. espero que no me lo tomes a mal... [pero creo que]...
no es 'correcto' que postees la misma consulta en dos [o mas] grupos de manera 'aislada/indistinta...' :(
las respuestas en uno de ellos... no 'beneficiaran' al grupo [o grupos] 'excluidos' ;)
si consideras que tu pregunta pudiera ser de interes a varios grupos...
prueba a hacer [lo que se conoce como].. 'cross-posting' NO 'multi posting' :D

__ la consulta original __
> ... estoy abriendo un archivo Excel y modificandolo de la siguiente manera
> Private oExcelApplication As Excel.Application
> Private oExcelWorkbook As Excel.Workbook
> Set oExcelApplication = New Excel.Application
> Set oExcelWorkbook = oExcelApplication.Workbooks.Open("C:\libro.xls")
> oExcelApplication.Cells(1, 1).Value = "TEXTO"
> oExcelWorkbook.Save
> oExcelWorkbook.Close
> Set oExcelWorkbook = Nothing
> Set oExcelApplication = Nothing
> Mi problema es que si en el medio de abrir, grabar y cerrar el archivo Excel, abren otro archivo Excel
> este se levanta en la sesión creada por oExcelApplication y encima si lo cierran pierdo la referencia
> y da error cualquier operación que deseo ejecutar con oExcelApplication o oExcelWorkbook.
> Hay alguna forma de esconder la sesion de Excel que estoy abriendo desde Visual
> para que no se use si se abre otro archivo de Excel por fuera de la aplicacion?



Respuesta Responder a este mensaje
#3 Pablo
15/06/2006 - 16:46 | Informe spam
Lo he resuelto como explicas en el punto 2

Muchas gracias, funcionó a la perfección

"Héctor Miguel" escribió:

hola, Pablo !

1) podrias probar con la propiedad .Visible establecida en False y aplicada al objeto oExcelApplication -?-

2) puedes 'obligar' a que [cualquier] 'otro' libro se abra en una instancia 'nueva/aparte/separada/...'
y para que no te 'avise' que hara 'caso omiso' a las 'solicitudes remotas'... prueba con algo +/- como...
a) al inicio de 'tus procesos'...
With oExcelApplication
.DisplayAlerts = False
.IgnoreRemoteRequests = True
.DisplayAlerts = True
End With
b) [y obviamente] al final de los mismos...
oExcelApplication.IgnoreRemoteRequests = False

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

p.d. espero que no me lo tomes a mal... [pero creo que]...
no es 'correcto' que postees la misma consulta en dos [o mas] grupos de manera 'aislada/indistinta...' :(
las respuestas en uno de ellos... no 'beneficiaran' al grupo [o grupos] 'excluidos' ;)
si consideras que tu pregunta pudiera ser de interes a varios grupos...
prueba a hacer [lo que se conoce como].. 'cross-posting' NO 'multi posting' :D

__ la consulta original __
> ... estoy abriendo un archivo Excel y modificandolo de la siguiente manera
> Private oExcelApplication As Excel.Application
> Private oExcelWorkbook As Excel.Workbook
> Set oExcelApplication = New Excel.Application
> Set oExcelWorkbook = oExcelApplication.Workbooks.Open("C:\libro.xls")
> oExcelApplication.Cells(1, 1).Value = "TEXTO"
> oExcelWorkbook.Save
> oExcelWorkbook.Close
> Set oExcelWorkbook = Nothing
> Set oExcelApplication = Nothing
> Mi problema es que si en el medio de abrir, grabar y cerrar el archivo Excel, abren otro archivo Excel
> este se levanta en la sesión creada por oExcelApplication y encima si lo cierran pierdo la referencia
> y da error cualquier operación que deseo ejecutar con oExcelApplication o oExcelWorkbook.
> Hay alguna forma de esconder la sesion de Excel que estoy abriendo desde Visual
> para que no se use si se abre otro archivo de Excel por fuera de la aplicacion?



Respuesta Responder a este mensaje
#4 Vinchenzo vinç
15/06/2006 - 22:12 | Informe spam
"Héctor Miguel" escribió en el mensaje news:

p.d. espero que no me lo tomes a mal... [pero creo que]...
no es 'correcto' que postees la misma consulta en dos [o mas] grupos de manera 'aislada/indistinta...' :(
las respuestas en uno de ellos... no 'beneficiaran' al grupo [o grupos] 'excluidos' ;)
si consideras que tu pregunta pudiera ser de interes a varios grupos...
prueba a hacer [lo que se conoce como].. 'cross-posting' NO 'multi posting' :D




Hola Héctor,
creo que tendrás que excusar a Pablo, ya que tal vez sea yo quien tenga parte de culpa. Hace unas semanas formuló esta pregunta
en el grupo de "microsoft.public.es.vb" (Visual Basic 'clásico'), y le comenté a Pablo un par de opciones que debería considerar
como "temporales", ya que yo desconocía el uso de la propiedad 'IgnoreRemoteRequests', pero sospechaba que debería existir una
opción intrínseca a Excel para solucionar el problema de instanciación.

Por consiguiente, al final del mensaje le sugerí explícitamente que de no recibir otras respuestas en el grupo, realizara la
consulta "en los grupos de Excel o de VBA".

http://groups.google.com/group/micr...266895d647
(...) Aunque así se consigue el objetivo que persigues, me lo tomaría como algo temporal hasta encontrar el método correcto. Si no
recibieras otras respuestas, te sugeriría que realizaras la consulta en los grupos de Excel o de VBA, en los que posiblemente
conozcan la solución adecuada. (...)

«Mea culpa»...

Saludos
( ! ) Respuestas precedentes en Google:
http://tinyurl.com/rkce5
( i ) Temperancia en el foro:
http://tinyurl.com/mawnn
Respuesta Responder a este mensaje
#5 Héctor Miguel
16/06/2006 - 08:19 | Informe spam
hola, Pablo !

Como hago el 'cross-posting' desde el Outlook Express?



cuando estas editando [o respondiendo] una consulta en un grupo...
puedes incluir otros grupos en el 'boton' de 'grupos de noticias' en el encabezado del mensaje
-> toma la apariencia de 'boton' cuando posas el puntero sobre el texto

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida