Como exportar a excel

Una vez intente exportar a excel y tenia que meter un control o componente pero recuerdo que no funcionaba con todas las versiones de excel, ¿cómo hago para que funcione con cualquier excel desde el 97 hasta el 2007 del vista?

1 respuesta

Respuesta
1
Para utilizar excel desde vb se suele hacer primero una "referencia" a la librería de excel, dependiendo de la version que tengas instalada cascara si no coinciden en la version. Esto se puede solucionar si no se crea la referencia.
El siguiente ejemplo es para word pero debe funcionar igual para excel unicamente cambia ("Word.Application") por ("Excel.Application") y una vez que compruebes que funciona cambia los nombres de las variables.
También cambiará que en vez de Documents serán Sheets pero eso ya es otro tema.
Suerte.
Pon en un modulo esto
--------------------------------------------------
Public objWord As Object
Public objDoc As Object
Public Function CrearWord() As Boolean
On Error GoTo Error
If ObtenerWord = False Then
Set objWord = CreateObject("Word.Application")
End If
CrearWord = True
Salir:
Exit Function
Error:
CrearWord = False
MsgBox Err.Number & " - " & Err.Description
End Function
Public Function CerrarAppWord() As Boolean
On Error GoTo Error
If ObtenerWord = False Then
Set objWord = CreateObject("Word.Application")
End If
If objWord.Documents.Count <= 0 Then
' Cierra el Word
objWord.Quit
End If
' Elimina la referencia
Set objWord = Nothing
CerrarAppWord = True
Exit Function
Error:
CerrarAppWord = False
MsgBox Err.Number & " - " & Err.Description
End Function
Public Function CerrarWord() As Boolean
On Error GoTo Error
If ObtenerWord = False Then
Set objWord = CreateObject("Word.Application")
End If
objWord.ActiveDocument.Close
' Cierra el documento
'objWord.Quit
' Elimina la referencia
Set objWord = Nothing
CerrarWord = True
Salir:
Exit Function
Error:
CerrarWord = False
MsgBox Err.Number & " - " & Err.Description
End Function
Private Function ObtenerWord() As Boolean
On Error GoTo Error
Set objWord = GetObject(, "Word.Application")
ObtenerWord = True
Exit Function
Error:
ObtenerWord = False
End Function
Pon en un formulario esto otro
--------------------------------------------
Private Sub Form_Load()
CrearWord
ObjWord. Documents. Add
ObjWord. ActiveDocument.saveas "c:\prueba.doc"
ObjWord. Quit
CerrarWord
End Sub
'Te deberia crear un documento en el raiz de c llamado prueba.doc.
Prueba con distintas versiones de office yo lo he probado con 2K y XP.
Hola, gracias por contestar tan rapido, fíjate que pegue las funciones en un modulo y en un botón lo que iba en el form load, pero me marca error al cerrar el archivo, después de esta instrucción se va al error
Instruccion: "objWord.ActiveDocument.Close"
Y el error dice a veces: "-214717848 - Error de Automatización"
Otras veces: "424 - se requiere un objeto"
Y otras: "462 - el equipo servidor remoto no existe o no esta disponible"
Pero siempre es por la misma instrucción: "objWord.ActiveDocument.Close"
Tengo el XP y el office 97 (pesa mucho menos y hace casi lo mismo que los otros) pero no creo que tenga que ver con que no funcione, ¿no sera que primero hacemos un quit y luego lo tratamos de cerrar?
CrearWord
objWord.Documents.Add
objWord.ActiveDocument.saveas "c:\prueba.doc"
objWord.Quit
CerrarWord
Aunque el archivo si se termina creando pues lo busque en C y lo abre bien el word.
¿Otra pregunta como le agrego algo dentro? El archivo de excel que usaba era un texto separado por tabulaciones con terminación .xls
Gracias de antemano
Tienes razón, quita la linea del Quit del FormLoad, es que al llamar a CerrarWord se vuelve a llamar a quit y por eso casca.
Respecto al uso de la librería de Excel solo te puedo decir esto...
Arriba del formulario
-----------------------------
Private EApp As Object
Private EwkB As Object
Private EwkS As Object
Para crear la hoja
-----------------------------
Set EApp = CreateObject("excel.application")
Set EwkB = EApp.Workbooks.Add
Set EwkS = EwkB.Sheets(1)
'
' exibe a aplicação Excel
'
EApp.Application.Visible = True
' Preenche a primeira e a segunda coluna
' com alguns valores numéricos
EwkS.SaveAs "C:\" + Format(Date, "dd-mm-yy") + " " + Format(Now, "hh-mm")
Para Insertar datos
-----------------------------------
contFila = contFila + 1
EwkS.Range(A & contFila).FormulaR1C1 = Format(Now, "hh:mm:ss a/p")
EwkS.Range(B & contFila).FormulaR1C1 = Format(data1, "0,0000")
EwkS. Columns. AutoFit
EwkB.Save
Para liberar de memoria los objetos
----------------------------------------
If IsNull(EwkB) Then
EwkB.Close
End If
If IsNull(EApp) Then
EApp.Application.Quit
End If
Set EwkS = Nothing
Set EwkB = Nothing
Set EApp = Nothing
Hola
Muchas gracias por la respuesta, me fue de mucha ayuda y ya pude poner una instrucción para meter algo en una celda. El office 97 lo abre bien sin problemas me imagino que todos los office (falta ver el vista) lo han de abrir bien. Les recomiendo el office 97, casi ni pesa y tiene ya 11 años, ¿aun requiere licencia? o ya no?
Lo único es que me marco error en estas dos instrucciones pero ya las corregí, lo pongo aquí por si alguien más ve este foro que le sirva de ayuda, así estaban.
EwkS.Range(A & contFila).FormulaR1C1 = Format(Now, "hh:mm:ss a/p")
EwkS.Range(B & contFila).FormulaR1C1 = Format(data1, "0,0000")
y asi quedaron bien
EwkS.Range("A" & Trim(Str(contFila))).FormulaR1C1 = Format(Now, "hh:mm:ss am/pm")
EwkS.Range("B" & Trim(Str(contFila))).FormulaR1C1 = Format(Data1, "0,0000")
ah! y el excel se quedaba abierto así que entrecomille esto
    'If IsNull(EwkB) Then
      EwkB.Close
    'End If
Y ya jala bien todo, Gracias y saludos desde Monterrey, Mexico
PD ahora me surgió la duda de como agregar una linea dentro del word primero que me mandaste. Je

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas