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 original
Public 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