Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenquelle dynamisch machen

Datenquelle dynamisch machen
29.09.2018 23:31:13
Markus
Hallo zusammen.
Ich hätte mal wieder ein kleines Problem bzw. anliegen.
Ich greife in meiner excel Arbeitsmappe auf eine Externe Quelle zu und möchte diese gerne dynamisch in meiner userform ändern können.
Mir geht es nur darum wie ich den quellpfad per vba ändern kann.
Ich habe im Netz schon einiges gefunden aber ich hab nichts zum Laufen bekommen.
Kurz zu den Details.
Ich greife auf eine Textdatei im Web zu die je nach Link Änderung anders aussieht und diesen Link bzw die Quelle möchte ich gerne ändern.
Gefunden habe ich das hier:
Sub Change_Link()
Dim myLinks As Variant
Dim NewSource As String
Dim OldSource As String
Dim i As Integer
myLinks = ThisWorkbook.LinkSources
For i = 1 To UBound(myLinks)
OldSource = CStr(myLinks(i))
NewSource = Application.GetOpenFilename()
ThisWorkbook.ChangeLink Name:=OldSource, Newname:=NewSource
Next
' ThisWorkbook.UpdateLink
End Sub
Ich hab es versucht aber ich bekomme es einfach nicht hin. Ich denke mein Hauptproblem ist, dass ich meienen alten Link gar nicht erst ausgelsen bekomme.
Also das ThisWorkbook.LinkSources funktioniert iwie nicht .. Bleibt immer leer beim ausführen.
Kennt hier jemand zufällig ne Variante die funktioniert oder findet hier jemand den Fehler?
Danke im Voraus
Gruß
Markus

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenquelle dynamisch machen
30.09.2018 14:38:15
Matthias
Moin!
Kannst du mal einen der LInks schicken? ALso den Text, der in der Zelle steht. Habe deinen Code in einer Exceldatei mal probiert und bei mir klappt er. Dachte erst, liegt vllt. am Platz der Quelle (netzwerk) aber dann sollte er m.E. wenigstens die Links auslesen. Würde den link mal in eine Zelle packen um zu sehen, wie sich das dann verhält - da kann man dann testen.
VG
AW: Datenquelle dynamisch machen
30.09.2018 15:00:34
Markus
Hallo Matthias , danke für deine Antwort.
Ich dachte mir schon, dass es mit diesem Link zu tun haben muss.
Ich kann ihn dir leider nicht schicken da es sich um vertrauliche Daten handelt aber....
Es handelt sich um einen

http://...
Link
Dieser endet mit

.../[Jahr]/[Monat]
also z.B.

.../2018/09

Dahinter steht eine SQL Datenbank die mir eine anhand des Links spezifische csv Datei generiert.
Sprich Daten aus dem im Link beschriebenen Jahr/Monat.
Auf die SQL selbst kann ich leider nicht zugreifen nur auf diese Links.
Ich hoffe diese Info hilft dir weiter.
Danke im Voraus.
Gruß
Markus
Anzeige
AW: Datenquelle dynamisch machen
30.09.2018 19:23:32
Matthias
Moin!
Also hast du Hyperlinks. Da geht der Code nicht. DAmit kannst du den PFad von Vernüpfungen ändern. Für die Links müsstest du durch alle Links auf dem Blatt gehen und dann ggf. durch alle Blätter.
DAfür am besten eine for each Schleife nehmen. Zum Ändern dann mit replace arbeiten oder halt nach eigenen Bedürfnissen anpassen. Da habe ich grad nicht erkannt, wie sie der Name ändert und ob Teile vom alten gleich bleiben.
VG
AW: Datenquelle dynamisch machen
30.09.2018 19:25:29
Matthias
noch als Ergänzung. Die Auflistung der Hyperlinks bekommst du mit so was
ActiveSheet.Hyperlinks
Dort ggf. auch durch die einzelnen Sheets gehen.
VG
Anzeige
AW: Datenquelle dynamisch machen
01.10.2018 13:05:51
Markus
Hallo Matthias .. nachmal vielen Dank für deine Hilfe.
Ich denke ich werde an dieser Stelle wohl nicht weiterkommen, da ich hier wohl das Problem habe, dass ich diesen Hyperlink in keiner Zelle sonder als Quelle angegeben habe.
Sollte ich hier etwas übersehen würde ich mich über einen weiteren Hinweis sehr freuen.
Trotzdem vielen Dank für deinen Tipp.
Gruß
Markus
AW: Datenquelle dynamisch machen
02.10.2018 22:27:52
Matthias
Moin!
Was meinst du den mit als Quelle angegeben. Damit kann ich grad nichts anfangen. Grundsätzlich kannst du mit VBA alles machen, was du auch manuell machst und meist noch mehr. Da sollte man auch das ändern können. Kannst du ggf. mal eine Datei hochladen. Der Link darin kann ja zu einer anderen Datei sein (wegen Datenschutz). Nur damit ich mal sehen, was du genau meinst. Und wenn möglich als xls - die neueren kann ich nicht öffnen.
VG
Anzeige
AW: Datenquelle dynamisch machen
03.10.2018 00:40:28
Markus
OK ich habe mich hier vielleicht etwas unklar ausgedrückt... also nochmal mit allen Details.
Ich bekomme über einen https://... link eine csv Datei erstellt.
Um mir diese Daten in Excel einzubinden habe ich mir genau diesen https://... Link als externe Quelle angelegt. Dazu bin ich wie folgt vorgegangen. Ich bin oben im Hauptmenü auf Daten - Neue Abfrage - Aus Datei - CSV Datei. Hier habe ich dann anstatt eine Datei auszuwählen einfach den https:// Link eingegeben. Ich dachte mir zuerst "dass kann ja nicht funktieren" aber siehe da es hat tatsächlich funktioniert.
Im Klartext ... ich sollte an dieser Stelle eine Datei auswählen und habe stattdessen einen https Link eingegeben. Excel hat mir trotzdem den Import Wizard incl der erwarteten Daten geöffnet und ich konnte mein csv Datei als neues Tabellenblatt importieren. Somit hatte ich erreicht, eine Externe Quelle zu haben die immer aktuelle ist ohne das ich eine lokale Datei zwischenspeichern muss.
Ich war mir seit deiner letzten Nachricht eigentlich sicher, dass ich auf diese Weise wohl nicht weiter komme und habe mir eine andere Möglichkeit ausgedacht.
Aktuell konnte ich mir tatsächlich weiterhelfen indem ich mir ein Windows Powershell Skript geschrieben habe welches mir über VBA Befehle meinen Link dementsprechend ändert. Also das Skript lädt mir meine CSV Datei immer wieder aktuell (natürlich dynamisch) runter und ersetzt mir die Alte.
Somit habe ich mein Ziel über Umwege doch noch erreicht.
Solltest du jetzt noch ein wenig mehr Klarheit gewonnen haben über die Situation und evtl doch noch eine Möglichkeit gefunden haben meine Pseudo Datei Quelle zu ändern .... Ich bin ganz Ohr ^^
Auf jeden Fall nochmals vielen Dank für deine Hilfe und ich hoffe ich konnte mich hier an dieser stelle doch noch etwas klarer ausdrücken.
Mit besten Grüßen
Markus
PS: Sollte jemand Interesse an der Powershell Methodik haben, so kann er das gerne hier rein schreiben dann werde ich das ganze hier posten.
Anzeige
AW: Datenquelle dynamisch machen
03.10.2018 09:00:09
Matthias
Moin!
ISt doch super wenn es läuft. Kann das hier grad nicht testen - mein altes Excel meckert da grad über nicht installierte Features (query). :-(
Wenn du deine alte Variante umsetzen willst, könntest du deinen Weg mal mit dem Markorekorder aufzeichnen und dann den von dir eingegebenen Pfad durch eine Abfrage dynamisch machen. Wäre jetzt so meine Idee.
Und wenn du Zeit und Lust hast, wäre ich schon an dem Lösungsweg mit der Shell interessiert. :-)
VG
AW: Datenquelle dynamisch machen
03.10.2018 12:46:56
Markus
Hi...
Also auf die Idee mit dem Makro Recorder bin ich natürlich auch schon gekommen aber hier ist ebenfalls das Problem mit dem https Link. In der Makroaufzeichnung finde ich keine Einträge wenn ich diesen Vorgang ausführe. Also den in dem ich die Datenquelle anlege. Ich finde dann zwar ein Eintrag über eine Quelle aber die ist nie der https Link sondern das was er mir ausgespuckt hat.
Zur Shell Variante....
Ich hab mir folgendes Windows Powershell Skript geschrieben:
Start-BitsTransfer https://......generator/1/month/2018/9 "D:\.......blablabla.csv"
Abgespeichert als

blabla.PS1
In meinem VBA Code rufe ich das Script folgendermaßen auf:
Call Shell("powershell -NoProfile -ExecutionPolicy Bypass -File ""D:\.......\blabla.PS1")
Dahinter habe ich mir noch eine kleine Zeit eingebaut da die shell auch eine kleine Weile benötigt. Also ca. 4 - 5 Sekunden.
Achso ... vorher ändere ich natürlich noch das Skript auf die gewünschten Werte ganz einfach über ein Makro zum erstellen von Text Dateien.
Dim Link As String
Dim PS1Datei As String
Dim Pfad As String
PS1Datei = "D:\.....blabla.PS1"
Link = "https:/.....blbla"
Pfad = Chr(34) & "D:\......blablabla.csv" & Chr(34)
Open PS1Datei For Output As #1
Print #1, "Start-BitsTransfer" & " " & Link & " " & Pfad
Close #1
Jo das wars eingentlich
Viel Spass beim Testen.
Achso eins noch.... Du musst in deinen Excel Einstellungen das skripting erlauben sonst schließt sich dein Excel ganz schnell ^^
Bei mir ging das über das TrustCenter in den Einstellungen.
Gruß
Markus
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige