Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/07/2013, 16:27
sesebas
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 3 meses
Puntos: 1
Cambiar de libro activo en proyecto de solución excel con VB 2010 (Framework 4)

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 original
  1. Public Class ThisWorkbook
  2.  
  3.     Private Sub ThisWorkbook_Startup() Handles Me.Startup
  4.         'Al iniciar me posiciono en la carpeta con datos de origen
  5.        Dim FileSource As String = ""
  6.         FileSource = "F:\TareasOFF\Actualizacion 2013.xls"
  7.  
  8.         'Compruebo el libro que se encuentra abierto... y veo que corresponde al de la aplicación
  9.        '(MeUpdate.xlsx)
  10.        Dim revisa As String = ActiveSheet.Parent.FullName ' Para saber qué libro está abierto
  11.        'Me devuelve el nombre del libro excel abierto
  12.        Dim test As String = Me.Name
  13.  
  14.         'Abro el libro/archivo con datos de origen
  15.        Cairo_App = New Microsoft.Office.Interop.Excel.Application  'Funciona bien
  16.        Dim DataSourceWorkBook = Me.Application.Workbooks.Open(FileSource) 'Funciona bien
  17.  
  18.         'Mis diferentes intentos por volver activo el libro con datos de origen
  19.  
  20.         'DataSourceSheets = DataSourceWorkBook.Sheets(2)
  21.        'DataSourceSheets.Activate()
  22.        ' Me.Application.Workbooks("Actualizacion Cairo 2013").Activate()
  23.        DataSourceWorkBook.Activate() 'Ésto no funciona
  24.        
  25.         'porque "revisa" me sigue entregando como activo a "MeUpdate.xlsx"
  26.        revisa = ActiveSheet.Parent.FullName
  27.  
  28.         'Me.Application.Workbooks("Actualizacion 2013.xls").Activate() 'tampoco funciona
  29.        revisa = ActiveSheet.Parent.FullName 'me sigue entregando el nombre del libro por default
  30.  
  31.         "Sin Embargo...
  32.        Dim a As Integer = DataSourceWorkBook.Worksheets.Count
  33.  
  34.        'Este "For Next" funciona bien..
  35.        For i = 1 To DataSourceWorkBook.Worksheets.Count
  36.                        'Obtengo el nombre de cada hoja en el libro con los datos de origen...
  37.                        'Si está abierto y puedo acceder a él desde fuera... porqué no lo puedo hacer activo?
  38.                        Dim b As String = DataSourceWorkBook.Sheets(i).Name
  39.        Next
  40.        DataSourceWorkBook.Close()
  41.        Cairo_App.Quit()
  42.  
  43.    End Sub
  44.  
  45.    Private Sub ThisWorkbook_Shutdown() Handles Me.Shutdown
  46.  
  47.        DataSourceWorkBook.Close()
  48.  
  49.    End Sub
  50.  
  51. End Class