Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Verbindungseigenschafte/Befehlstext

VBA-Verbindungseigenschafte/Befehlstext
21.10.2016 12:10:02
Fred
Hallo Experten,
mal wieder so eine Frage!
Meine Basis:
Meine betreffende Arbeitsmappe ist mit 6 weiteren Excel-Arbeitsmappen verbunden. Die verbundenen Mappen haben alle den gleichen „Struktur-Aufbau“,- also gleiche Blattanzahl und gleiche Blattnamen mit identischen Spaltenüberschriften.
Die (für meine Anfrage hier im Forum) wohl relevanten Verbindungseigenschaften meiner 6 Verknüpfungen lauten;
Verbindungsname: „1Jahr“, Befehlstext: D1$
Verbindungsname: „2Jahre“, Befehlstext: D1$
Verbindungsname: „3Jahre“, Befehlstext: D1$
Verbindungsname: „4Jahre“, Befehlstext: D1$
Verbindungsname: „5Jahre“, Befehlstext: D1$
Verbindungsname: „Aktuell“, Befehlstext: D1$
Will ich z.B. das Tabellenblatt mit dem Namen „E1“ durch meine Verbindungen aufrufen, ist meine bisherige Vorgehensweise so, daß ich jede einzelne Verbindungseigenschaft aufrufe und händisch den Befehlstext in „E1$“ ändere. Bei öfteren „wechseln“ ist das natürlich schon mit Aufwand und Zeit verbunden, dementsprechend auch mit „Fehleranfälligkeit“.
Meine „Wunschlösung“:
Ich habe in meiner betreffenden Arbeitsmappe das Tabellenblatt „Auswahl“.
In „A1“ steht z.B. „F1$“ und durch Klick auf eine Befehlsschaltfläche sollen die Befehlstexte in den Verbindungseigenschaften / Definitionen entsprechend geändert werden.
Oder zumindest eine „Definition“ und dann eben 6 Schaltflächen und Klicks 
Meine Frage ist folglich, ob diese Änderung in den Verbindungseigenschaften mit VBA überhaupt möglich ist und wenn ja, ob mir jemand diesen Syntax schreiben kann.
freundliche Grüße
Fred

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Verbindungseigenschafte/Befehlstext
22.10.2016 01:11:44
Piet
Hallo Fred,
ich nehme an das sich „F1$“ in einer Formel befindet und geaendert werden soll. Kleiner Tipp:
Alle Formeln lassen sich von Hand mit Suchen und Ersetzen aendern. Wenn du den Bereich vorher
eingrenzt wird nur in dem markierten Bereich geaendert. Formeln kann man so auch deaktivieren,
indem man vor das Gleichzeichen ein ' setzt. Dann ist die Formel ein Text. Zum aendern ein Beispiel:
Sub Replace_Text()
Range("B2:B20").replace what:="F1", replacement:="E1", lookat:=xlPart, MatchCase:=False
end Sub 
mfg Piet
AW: VBA-Verbindungseigenschafte/Befehlstext
22.10.2016 11:48:04
Fred
Hallo Piet,
also ich habe Verbindungsdaten z.B. zur Arbeitsmappe „1Jahr“ und deren Tabellenblatt „D1“.
Tabellenblatt „D1“ ist ja unter den Verbindungseigenschaften / Befehlstext mit „D1$“ definiert.
Ich möchte per VBA die Verbindung ändern. Es soll sich mit dem Tabellenblatt verbinden, welches in meiner ausgehenden Datei in Sheet „Auswahl“, Zelle „A1“ angegeben ist. Will ich also z.B. eine Verbindung zu Tabellenblatt „F1“, muß in Sheet „Auswahl“, Zelle „A1“ der Text stehen: „F1$“.
Mache ich die Verbindung z.B. über den Recorder, ist dies folgender Code:

Sub aendern()
Sheets("Auswahl").Select
With ActiveWorkbook.Connections("1Jahr").OLEDBConnection
.BackgroundQuery = True
.CommandText = Array("F1$")
.CommandType = xlCmdTable
.Connection = Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\Besitzer\ _
Desktop\Daten\1Jahr.xls;Mode=Shar" _
, _
"e Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB: _
Registry Path="""";Jet OLEDB:Engine Type=35;Jet" _
, _
" OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global  _
Bulk Transactions=1;Jet OLEDB:New Database P" _
, _
"assword="""";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" _
)
.RefreshOnFileOpen = True
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = _
"C:\Users\Besitzer\Desktop\Daten\1Jahr.xls"
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
With ActiveWorkbook.Connections("1Jahr")
.Name = "1Jahr"
.Description = ""
End With
ActiveWorkbook.Connections("1Jahr").Refresh
End Sub

Also, mein Wunsch:
„.CommandText = „ soll sich auf den Text in Sheet „Auswahl“, Zelle „A1“ beziehen.
mfg Fred
Anzeige
AW: VBA-Befehlstext
22.10.2016 12:40:56
Fred
also,
habe nun festgestellt, das folgender Syntax wohl absolut ausreichend ist:

Sub aendern()
Sheets("Auswahl").Select
With ActiveWorkbook.Connections("1Jahr").OLEDBConnection
.CommandText = Worksheets("Auswahl").Cells(1, 1)
End With
ActiveWorkbook.Connections("1Jahr").Refresh
End Sub

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige