Hola amig@s,
Esta es mi primera vez que intento desarrollar una solución excel y me animé porque he visto que puedo reutilizar buena parte de lo que antes hice para una aplicación con VB 6... pero nada es tan facil y necesito de su ayuda para arrancar con esto.
Lo que tengo hasta ahora:
1.- Cree mi proyecto de solución y me presenta (en el modo de diseño) un libro de trabajo por defecto (MeUpdate.xlsx) con tres hojas que resulta ser el libro activo
2.- En el evento StarUp de ThisWorkBook he agregado:
(ThisWorkBook Events)
Código vb:
Ver originalPublic Class ThisWorkbook
Private Sub ThisWorkbook_Startup() Handles Me.Startup
'Al iniciar me posiciono en la carpeta con datos de origen
Dim FileSource As String = ""
FileSource = "F:\TareasOFF\Actualizacion 2013.xls"
'Compruebo el libro que se encuentra abierto... y veo que corresponde al de la aplicación
'(MeUpdate.xlsx)
Dim revisa As String = ActiveSheet.Parent.FullName ' Para saber qué libro está abierto
'Me devuelve el nombre del libro excel abierto
Dim test As String = Me.Name
'Abro el libro/archivo con datos de origen
Cairo_App = New Microsoft.Office.Interop.Excel.Application 'Funciona bien
Dim DataSourceWorkBook = Me.Application.Workbooks.Open(FileSource) 'Funciona bien
'Mis diferentes intentos por volver activo el libro con datos de origen
'DataSourceSheets = DataSourceWorkBook.Sheets(2)
'DataSourceSheets.Activate()
' Me.Application.Workbooks("Actualizacion Cairo 2013").Activate()
DataSourceWorkBook.Activate() 'Ésto no funciona
'porque "revisa" me sigue entregando como activo a "MeUpdate.xlsx"
revisa = ActiveSheet.Parent.FullName
'Me.Application.Workbooks("Actualizacion 2013.xls").Activate() 'tampoco funciona
revisa = ActiveSheet.Parent.FullName 'me sigue entregando el nombre del libro por default
"Sin Embargo...
Dim a As Integer = DataSourceWorkBook.Worksheets.Count
'Este "For Next" funciona bien..
For i = 1 To DataSourceWorkBook.Worksheets.Count
'Obtengo el nombre de cada hoja en el libro con los datos de origen...
'Si está abierto y puedo acceder a él desde fuera... porqué no lo puedo hacer activo?
Dim b As String = DataSourceWorkBook.Sheets(i).Name
Next
DataSourceWorkBook.Close()
Cairo_App.Quit()
End Sub
Private Sub ThisWorkbook_Shutdown() Handles Me.Shutdown
DataSourceWorkBook.Close()
End Sub
End Class