2011-04-20 120 views

Respuesta

12

Primero necesita establecer una referencia (Menú: Herramientas-> Referencias) a la Biblioteca de objetos de Microsoft Excel y luego puede acceder a todos los Objetos de Excel.

Después de agregar la referencia, tiene acceso completo a todos los Objetos de Excel. Es necesario añadir Excel delante de todo por ejemplo:

Dim xlApp as Excel.Application 

Digamos que ha añadido un objeto de libro de Excel en su formulario y lo llamó xlObject.

Aquí es cómo acceder a una hoja de este objeto y cambiar los distintos

Dim sheet As Excel.Worksheet 
Set sheet = xlObject.Object.Sheets(1) 
sheet.Range("A1") = "Hello World" 

(I copied the above from my answer to this question)

Otra forma de utilizar Excel en Access está para iniciar Excel a través de un módulo de acceso (la shahkalpesh forma descrita en su respuesta)

3

Dentro de un módulo de

Option Explicit 
dim objExcelApp as Excel.Application 
dim wb as Excel.Workbook 

sub Initialize() 
    set objExcelApp = new Excel.Application 
end sub 

sub ProcessDataWorkbook() 
    dim ws as Worksheet 
    set wb = objExcelApp.Workbooks.Open("path to my workbook") 
    set ws = wb.Sheets(1) 

    ws.Cells(1,1).Value = "Hello" 
    ws.Cells(1,2).Value = "World" 

    'Close the workbook 
    wb.Close 
    set wb = Nothing 
end sub 

sub Release() 
    set objExcelApp = Nothing 
end sub 
+0

Sigue recibiendo el error "El tipo definido por el usuario no está definido" – Pablo

+0

¿Tal vez un problema con las referencias? – Oneide

+0

Agregue una referencia a "Microsoft Excel ... Biblioteca de objetos" usando el menú Herramientas -> Referencias. – shahkalpesh

29

Disiento de ambas respuestas. No crear una referencia en absoluto, sino utilizar el enlace:

Dim objExcelApp As Object 
    Dim wb As Object 

    Sub Initialize() 
    Set objExcelApp = CreateObject("Excel.Application") 
    End Sub 

    Sub ProcessDataWorkbook() 
    Set wb = objExcelApp.Workbooks.Open("path to my workbook") 
    Dim ws As Object 
    Set ws = wb.Sheets(1) 

    ws.Cells(1, 1).Value = "Hello" 
    ws.Cells(1, 2).Value = "World" 

    'Close the workbook 
    wb.Close 
    Set wb = Nothing 
    End Sub 

se dará cuenta de que la única diferencia en el código anterior es que las variables se declaran como objetos y se ejemplariza la instancia de Excel con CreateObject ()

Este código se ejecutará sin importar qué versión de Excel esté instalada, mientras que usar una referencia puede hacer que su código se rompa fácilmente si hay una versión diferente de Excel instalada o si está instalada en una ubicación diferente.

Además, el manejo de errores podría agregarse al código anterior para que si la instanciación inicial de la instancia de Excel falla (digamos, porque Excel no está instalado o no está registrado correctamente), su código puede continuar. Con un conjunto de referencia, su aplicación de acceso completa fallará si Excel no está instalado.

+3

Estoy completamente de acuerdo con esto, sin embargo, es útil vincularse tempranamente cuando se desarrolla inicialmente el código para obtener los beneficios de intellisense, luego cambiar a la vinculación tardía una vez que todo funciona. – majjam

+0

y tendrás que pensar en declarar algunas constantes que quieras usar – outofmind

Cuestiones relacionadas