Mefisto...diabeĹ czy anioĹ?
Witam tęgie głowy.
Przy pomocy rejestratora popełniłem makro, które tworzy łącze do skoroszytu-bazy. I do tego momentu jest OK. Problem pojawia się gdy przenoszę pliki (bazę i docelowy) na inny komputer i chciałbym, by połączenie aktualizowało się bez konieczności ingerowania w kod. Po prostu do ThisWorkbook zapodałbym makro, które po otwarciu pliku odświeży dane. Konkretnie chodzi o ścieżkę. Próbowałem z Patch, ale coś jest nie halo.
Sheets("ark1").Select
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=C:\Users\Johan\Desktop\baza.xlsm;Mode=Share Deny Write;" _
, _
"Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:" _
, _
"Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OL" _
, _
"EDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale" _
, _
" on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" _
), Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdTable
.CommandText = Array("ark1$")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "C:\Users\Johan\Desktop\baza.xlsm"
.ListObject.DisplayName = "Tabela_baza_1"
.Refresh BackgroundQuery:=False
End With
zanotowane.pl doc.pisz.pl pdf.pisz.pl katkaras.opx.pl
Przy pomocy rejestratora popełniłem makro, które tworzy łącze do skoroszytu-bazy. I do tego momentu jest OK. Problem pojawia się gdy przenoszę pliki (bazę i docelowy) na inny komputer i chciałbym, by połączenie aktualizowało się bez konieczności ingerowania w kod. Po prostu do ThisWorkbook zapodałbym makro, które po otwarciu pliku odświeży dane. Konkretnie chodzi o ścieżkę. Próbowałem z Patch, ale coś jest nie halo.
Sheets("ark1").Select
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=C:\Users\Johan\Desktop\baza.xlsm;Mode=Share Deny Write;" _
, _
"Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:" _
, _
"Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OL" _
, _
"EDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale" _
, _
" on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" _
), Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdTable
.CommandText = Array("ark1$")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "C:\Users\Johan\Desktop\baza.xlsm"
.ListObject.DisplayName = "Tabela_baza_1"
.Refresh BackgroundQuery:=False
End With