RE:Abrir libro excel desde vba
Hola,
para que te reconozca las constantes de excel debes referenciar una libreria de excel (eso depende de lo que se tenga instalado en el ordenador en el que se ejecute). Para que te reconozca objetos como workbooks o cosas así (objetos o métodos de excel) previamente tienes que tener abierta una instancia de una aplicación excel, a través de la cual se accederá a esos objetos, métodos o propiedades. Desde excel se te reconoce todo eso porque precisamente tienes abierta una instancia de la aplicación excel (la aplicación actual), pero desde otro programa distinto, como es Access, debes primero abrir una instancia de excel. Por ejemplo:
Dim objExcel As Excel.Application
Dim libro As Excel.Workbook
Set objExcel = new Excel.Application
Set libro = objExcel.Workbooks.Add
libro.ActiveSheet.Cells(1, 1) = "Hola mundo!"
libro.Close True, "c:\milibroexcel"
Lo malo de declarar las variables como Excel.Application o similar es que necesitas referenciar una librería particular de Excel, con lo cual, si ejecutas ese código en un ordenador donde se utilice otra versión de excel (la versión 2000 o XP, por ejemplo) entonces todo fallará. En cambio si declaras las variables como Object y empleas los métodos CreateObject o GetObject, entonces el sistema decidirá qué versión utilizar en función de lo que ese PC tenga instalado. Por ejemplo:
Dim objExcel As Object
Dim libro As Object
Set objExcel = CreateObject("Excel.Application")
Set libro = objExcel.Workbooks.Add
libro.ActiveSheet.Cells(1, 1) = "Hola mundo!"
libro.Close True, "c:\milibroexcel"
de esta manera, mientras tengas instalado Excel, ese código se ejecutará, sin importar la versión. Eso sí, constantes como xlmedium tampoco te las entenderá, así que debes averiguar el valor de cada una de las constantes utilizando, por ejemplo, el examinador de objetos de visual basic, que te dirá el valor real de cada una de esas constantes, para que las puedas utilizar en tus aplicaciones, tanto si son de excel como si no. Por ejemplo, utilizando el código de antes:
Dim objExcel As Object
Dim libro As Object
Const xlHairline = 1
Const xlMedium = -4138
Const xlThick = 4
Const xlThin = 2
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set libro = objExcel.Workbooks.Add
libro.ActiveSheet.Cells(1, 1) = "Sin bordes"
libro.ActiveSheet.Cells(1, 1).Borders.Weight = xlHairline
libro.ActiveSheet.Cells(2, 1) = "Borde Medium"
libro.ActiveSheet.Cells(2, 1).Borders.Weight = xlMedium
libro.ActiveSheet.Cells(3, 1) = "Borde Grueso"
libro.ActiveSheet.Cells(3, 1).Borders.Weight = xlThick
libro.ActiveSheet.Cells(4, 1) = "Borde Delgado"
libro.ActiveSheet.Cells(4, 1).Borders.Weight = xlThin
libro.Close True, "c:\milibroexcel"
Espero que esta pequeña explicación te sirva.
Juan M. Afan de Ribera
:-)