Autor Tema: Duda al abrir Excel en nueva version desde Visual Basic  (Leído 6022 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Duda al abrir Excel en nueva version desde Visual Basic
« en: Febrero 04, 2013, 04:30:16 pm »
Hola amigos tengo este codigo que funciona correcto en OFFICCE 2003 instalado, mi pregunta es si lo corro en una PC que tenga el 2007 o posterior si me va a servir ya que no tengo la posibilidad de probarlo ahora con esa version de office si alguien lo tiene instalado y me hace el favor!!!!
TENGO LA REFERENCIA DE Microsoft Office 11 agregada!!


Código: (vb) [Seleccionar]
Private Sub bDeuda_Click()
Dim objExcel As Excel.Application
Dim xLibro As Excel.Workbook
Dim link As String
   
link = App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls"

If FileExists(link) Then
    Set objExcel = New Excel.Application
    Set xLibro = objExcel.Workbooks.Open(link)
    objExcel.Visible = True
Else
    If MsgBox("No existe el archivo de este cliente!" & vbNewLine & "¿Desea crearlo ahora?", vbYesNo + vbInformation) = vbYes Then
        FileCopy App.Path & "\CLIENTES\modelo.xls", App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls"
        Call Macro2(App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls")
        bDeuda_Click
    End If
   
End If
End Sub
« última modificación: Febrero 06, 2013, 08:18:59 pm por LeandroA »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #1 en: Febrero 04, 2013, 06:01:22 pm »
Estimado Bazooka

Para no tener dependencia de la versión de office instalada quita la referencia y crea una instancia de Office con la siguiente línea:
   Set objExcel = CreateObject("Excel.Application")

Luego desde aquí tu código que usas normalmente, la desventaja de trabajar de esta forma es que se pierde la posibilidad de usar Iintellisense sobre el Objeto creado
   objExcel.Visible = True
   objExcel.Workbooks.Add
   objExcel.Cells(1, 1).Value = "Bazooka"
   objExcel.Cells(1, 1).Font.Bold = TRUE
   objExcel.Cells(1, 1).Font.Size = 24
   objExcel.Cells(1, 1).Font.ColorIndex = 3

 
 
Saludos, desde algún lugar de Lima - Perú
Saludos, desde algún lugar de Lima-Perú

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #2 en: Febrero 04, 2013, 07:24:21 pm »
MUCHAS GRACIAS AMIGO!!! GENIAL
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #3 en: Febrero 04, 2013, 07:30:28 pm »
LE QUITE LA REFERENCIA PERO NO ME FUNCIONA CUANDO LLAMA A LA MACRO QUE ESTA COMO UN PROCEDIMIENTO
COMO QUEDARIA?


Código: (vb) [Seleccionar]
Private Sub bDeuda_Click()
Dim objExcel As Object
Dim xLibro As Object
Dim link As String

Set objExcel = CreateObject("Excel.Application")

link = App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls"

If FileExists(link) Then
    'Set objExcel = New Excel.Application
    Set xLibro = objExcel.Workbooks.Open(link)
    objExcel.Visible = True
Else
    If MsgBox("No existe el archivo de este cliente!" & vbNewLine & "¿Desea crearlo ahora?", vbYesNo + vbInformation) = vbYes Then
        FileCopy App.Path & "\CLIENTES\modelo.xls", App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls"
        Call Macro2(App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls")
        bDeuda_Click
    End If
   
End If
End Sub

Sub Macro2(file As String)
    Workbooks.Open FileName:=file '"C:\ADMINISTRATIVO\CLIENTES\0000003.xls"
    Range("A1:F2").Select
    ActiveCell.FormulaR1C1 = txtApellidos & ", " & txtNombres & " - " & txtTelefonoCasa
    Range("G1").Select
    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub
« última modificación: Febrero 06, 2013, 08:19:11 pm por LeandroA »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #4 en: Febrero 06, 2013, 12:02:13 am »
Estimado Bazooka
 
Al no tener tu archivo XLS, hay algunas cosas que no he podido reproducir como por ejemplo FormulaR1C1 pero me parece que con las modificaciones que he realizado ya te podrás guiar.
 
Código: (VB) [Seleccionar]
Private Sub bDeuda_Click()
  Dim objExcel As Object
  Dim xLibro As Object
  Dim xHoja As Object
  Dim link As String
 
 
  Set objExcel = CreateObject("Excel.Application")
  link = App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls"
 
  If FileExists(link) Then
    Set xLibro = objExcel.Workbooks.Open(link)
    objExcel.Visible = True
  Else
    If MsgBox("No existe el archivo de este cliente!" & vbNewLine & "¿Desea crearlo ahora?", vbYesNo + vbInformation) = vbYes Then
      FileCopy App.Path & "\CLIENTES\modelo.xls", App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls"
      Call Macro2(App.Path & "\CLIENTES\" & txtCodigo.Text & ".xls")
      bDeuda_Click
    End If
  End If
End Sub
 
 
Sub Macro2(file As String)
  Dim objExcel As Object
  Dim xLibro As Object
  Dim xHoja As Object
   
   
  Set objExcel = CreateObject("Excel.Application")
  'objExcel.Visible = True  '// Si quieres ver que va haciendo el código dejalo como True caso contrario False
 
  Set xLibro = objExcel.Workbooks.Open(file)  '"C:\ADMINISTRATIVO\CLIENTES\0000003.xls"
 
  Set xHoja = xLibro.Sheets("Hoja1")
  xHoja.Range("A1:F2").Select
  'xHoja.FormulaR1C1 = txtApellidos & ", " & txtNombres & " - " & txtTelefonoCasa
  xHoja.Range("G1").Select
 
  xLibro.Save
  xLibro.Close
End Sub

 
Saludos desde algún lugar de Lima - Perú

Editado: Por favor utilizar etiquetas de código o en su defecto nada, porque el formato azul es difícil de leer.
« última modificación: Febrero 06, 2013, 10:11:41 am por cobein »
Saludos, desde algún lugar de Lima-Perú

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #5 en: Febrero 09, 2013, 10:34:54 am »
si ya esta amigo muchas gracias!!!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #6 en: Febrero 26, 2013, 07:43:22 am »
Hola revivo este hilo por que me paso algo en una PC que necesito ayuda.
Resulta que si bien como me dijo el amigo Albertoni no cargo la refencia de Excel 11 sino que utilizo  CreateObject("Excel.Application") para que se abra con cualquier vesion de Office.

Ahora bien la aplciacion estaba funcionando correcto y tenia instalado el Officce 2007 y mi cliente lo saco y puso el 2010 y ahora no anda! me da el mensaje ' Una de la bibliotecas Stdole2.tlb falta o esta dañada ejecute la instalacion de nuevo y bla.....

Cosa que hice pero nada!!!.

En la desesperacion porel hacerlo andar se me ocurrio volver a colocarle la referencia de Excel 11 y le instale solo el excel 2003 del paquete office y al hacer click en el boto nque deberia abrir no sucede nada de nada!!

Que podría hacer?

Gracias
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #7 en: Febrero 26, 2013, 01:47:14 pm »
Estimado Bazooka

Después que ejecutes tu instalador verifica que la biblioteca de tipos Stdole2.tlb este en la carpeta de sistema (System32), si esta y el problema persiste registra la librería de tipos manualmente.
 
Registra la librería de tipos manualmente:
1. Seleccione Start » Run.
2. En la caja de diálogo que aparece escribe lo siguiente:
    regtlib <Full path of .tlb file>
    Donde <Full path of .tlb file>  es la localización del archivo de su librería de Tipo (System32)

Recuerda ejecutar el instalador como administrador si estas en un sistema operativo Microsoft Windows Vista o superior

 
Saludos, desde algún lugar de Lima - Perú
Saludos, desde algún lugar de Lima-Perú

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Duda al abrir Excel en nueva version desde Visual Basic
« Respuesta #8 en: Febrero 26, 2013, 04:40:22 pm »
eso debe ser que no ejecute como administrador los instaladores..

Ya que estoy para que es esa bolud.... de tener que ejecutar como administrador los programas???

que seguridad no es para nada es para jo.... nada mas
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.