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
 

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?

Preguntas similares