Maxcro XLS - No me funciona desde VB.
Publicado por Elvis (21 intervenciones) el 18/12/2005 01:44:02
Holas amigos y amigas.
Estoy tratando de ejecutar un macro de excel desde me aplicacion en VB, el macro lo que hace es en excel hacer un import de un DB de Access.
EL Macro funciona en Excel, pero cuando lo copio y ejejcuto desde mi aplicion no hace nada.
Imagino que Algo debe tener que cambiar para que se ejecute correctamente.
Ademas necesito saber como puede hacer para que el nombre archivo( "Data Source=C:\Documents and Settings\Administrator\Escritorio\bla.mdb")
para que quede como variable y no como código duro.
El código que utilizo es el siguiente:
Sub Macro1()
'*** Inica Codigo que no incluye el macro de Excel
Dim MiExcel As Object 'en caso de que word no este abierto
On Error Resume Next 'revisar si word esta abierto
Set MiExcel = GetObject(, "Excel.application") 'si word no esta abierto entonces
If MiExcel Is Nothing Then
Set MiExcel = GetObject("", "Excel.Application")
End If
MiExcel.SheetsInNewWorkbook = 1
MiExcel.Workbooks.Add
MiExcel.Visible = True 'visible
'*** Finaliza Codigo que no incluye el macro de Excel
' tambien he probado con MiExcel.ActiveSheet.QueryTables.Add(Connection:=Array(.... pero tampoco funciona.
'codigo del macro.
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Documents and Settings\Administrator\Escritorio\bla.md" _
, _
"b;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Passwo" _
, _
"rd="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transa" _
, _
"ctions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Do" _
, _
"n't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("Cartera_credito")
.Name = "bla"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = _
"C:\Documents and Settings\Administrator\Escritorio\bla.mdb"
.Refresh BackgroundQuery:=False
End With
End Sub
GRacias.
Estoy tratando de ejecutar un macro de excel desde me aplicacion en VB, el macro lo que hace es en excel hacer un import de un DB de Access.
EL Macro funciona en Excel, pero cuando lo copio y ejejcuto desde mi aplicion no hace nada.
Imagino que Algo debe tener que cambiar para que se ejecute correctamente.
Ademas necesito saber como puede hacer para que el nombre archivo( "Data Source=C:\Documents and Settings\Administrator\Escritorio\bla.mdb")
para que quede como variable y no como código duro.
El código que utilizo es el siguiente:
Sub Macro1()
'*** Inica Codigo que no incluye el macro de Excel
Dim MiExcel As Object 'en caso de que word no este abierto
On Error Resume Next 'revisar si word esta abierto
Set MiExcel = GetObject(, "Excel.application") 'si word no esta abierto entonces
If MiExcel Is Nothing Then
Set MiExcel = GetObject("", "Excel.Application")
End If
MiExcel.SheetsInNewWorkbook = 1
MiExcel.Workbooks.Add
MiExcel.Visible = True 'visible
'*** Finaliza Codigo que no incluye el macro de Excel
' tambien he probado con MiExcel.ActiveSheet.QueryTables.Add(Connection:=Array(.... pero tampoco funciona.
'codigo del macro.
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Documents and Settings\Administrator\Escritorio\bla.md" _
, _
"b;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Passwo" _
, _
"rd="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transa" _
, _
"ctions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Do" _
, _
"n't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("Cartera_credito")
.Name = "bla"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = _
"C:\Documents and Settings\Administrator\Escritorio\bla.mdb"
.Refresh BackgroundQuery:=False
End With
End Sub
GRacias.
Valora esta pregunta


0