Vb acceso excel

He visto tu currículo y he visto que tienes experiencia con VB y he pensado que podrías solucionar mi problema. Paso a explicar el problema, accedo a Excel desde VB vía Automation. Escribo mediante este método en un archivo Excel y cierro el objeto Excel. Application mediante el método Quit.
Si la aplicación de VB sigue ejecutándose, se puede observar en el Administrador de Tareas que hay un proceso Excel aun vivo. En este momento con la aplicación de VB en curso si voy al Administrador de Archivos y realizo doble click sobre el archivo Excel creado, éste no se abre. Sin embargo en la misma situación si voy a Microsoft Excel y pulso archivo->open-> el fichero creado, éste aparece en pantalla.
¿Sabes si estoy omitiendo alguna instrucción necesaria para que el proceso Excel concluya?
Gracias de antemano
'Formulario 1 codigo
Option Explicit
Private Sub Command1_Click()
name_fileXLS = App.Path & "\prueba.xls" 'Seleccionar el fichero Excel a modificar
Dim kk As String
Dim cont As Long
pulsacion = pulsacion + 1
'Función que abre el fichero en EXCEL:
Setup
'Escribir un nuevo datos en la primera hoja de Excel
Set shtplantilla = wbWorld.Worksheets(1)
shtplantilla.Activate
With shtplantilla
.Cells(pulsacion, 3) = "Hola PEPE"
End With
'Función que guarda los cambios en un fichero Excel con otro nombre
CleanUp
End Sub
'Codigo del modulo 1 donde se implementan la funciones Setup y CleanUp
Option Explicit
Global name_fileXLS As String
Global shtplantilla As Excel.Worksheet
Public appWorld As Excel.Application
Public wbWorld As Workbook
Public excelwasnorunning As Boolean
Global pulsacion As Integer
Public Sub Setup()
' IMPORTANT: If your machine does not have Excel 97 installed,
' you must change the reference to the Excel 95 Object Library.
' Then, in the Declarations section above, change the variable
' declaration "wbWorld as Workbook" to "shtWorld As Worksheet."
' Then change all references to "wbWorld" to "shtWorld."
On Error Resume Next 'ignore errors
Set appWorld = GetObject(, "Excel.Application") 'look for a running copy of Excel
If Err.Number <> 0 Then 'If Excel is not running then
Set appWorld = CreateObject("Excel.Application") 'run it
excelwasnorunning = True
End If
Err.Clear ' Clear Err object in case error occurred.
On Error GoTo 0 'Resume normal error processing
Set wbWorld = appWorld.Workbooks.Open(name_fileXLS)
End Sub
' Set the objects to Nothing.
Public Sub CleanUp()
Dim Name As String
' This should force an unload of Microsoft Excel,
' providing no other applications or users have it loaded.
On Error Resume Next 'ignore errors
Name = App.Path & "\kk.xls"
wbWorld.SaveCopyAs (Name)
wbWorld.Close (False)
Set wbWorld = Nothing
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
If excelwasnorunning = True Then
appWorld.Quit
End If
Set appWorld = Nothing
End Sub

1 Respuesta

Respuesta
1
Si te manda el error : " El componente ActiveX no puede crear el objeto o devolver la referencia a ese objeto (Error 429)"
Es que no tienes licencia del producto. El ejemplo esta bien, haz lo siguiente
1. Inicia excel sin abrir archivo.
2. No hagas referencia a objetos de excel sino genéricos as object
Global shtplantilla As Object
Public appWorld As Object
Public wbWorld As Object
3. Ejecuta el ejemplo.
Si deseas crear un componente OLE es necesario poder registrarlo en el sistema de los contrario no te dejará ocuparlo, esto lo notaras al crear un objeto y pedirle que se creee de un tipo especificado y no despliegue en la lista el objeto deseado. EJ.
DIM mixls as EXCEL.WORKSHEET lo que esta en mayúsculas no aparecera.
Posibles causas. Del problema.
La clase no está registrada. Por ejemplo, el registro del sistema no incluye ninguna mención de la clase, o la clase se menciona pero especifica un archivo de un tipo incorrecto o que no se encuentra.
Si es posible, intente iniciar la aplicación del objeto. Si la información del registro es antigua o está equivocada, la aplicación debe comprobar el registro y corregirla. Si al iniciar la aplicación no se soluciona el problema, vuelva a ejecutar el programa de instalación de la aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas