Anzeige
Archiv - Navigation
1308to1312
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

Verknüpfungen setzen per Commandbutton

Verknüpfungen setzen per Commandbutton
19.04.2013 16:47:27
Andreas
Hallo Excelprofis,
Komme schon wieder nicht mehr weiter. Ich habe ein Userform mit einer ComboBox und einem Commandbutton.
In folgenden, gefundenen Code fülle ich die Combobox mit vorhandenen Dateien eines Ordners.
Hierzu schon eine Frage: Wie muss der Code aussehen, wenn automatisch der Inhalt des aktuellen Ordnern angezeigt
wird.
Private Sub UserForm_Initialize()
Dim strFile As String
strPath = "C:\Daten"
strFile = LCase(Dir(strPath & "\"))
With ComboBox1
.Clear
Do Until strFile = ""
.AddItem Left(strFile, Len(strFile))
strFile = Dir
Loop
End With
End Sub
Weiterhin möchte ich mit dem Commandbutton Verknüpfungen in mein Blatt schreiben und zwar unter folgenden
Bedingungen.
- Ursprungsdatei ist die in der Combobox ausgewählte, und hier das Blatt Daten.
- Zellen sollen ungefähr wie folgt verknüpft werden:
Ursprungsdatei, Blatt Daten = H5
diese Datei,Blatt "Übersicht" = A8
Ursprungsdatei, Blatt Daten = J5
diese Datei,Blatt "Übersicht" = J1
Ursprungsdatei Bereich: A8:AG32
diese Datei Bereich: A35:AG59
usw. Kann ich mir dann bestimmt selbst anpassen.
Habe trotz stundenlanger Suche nicht gefunden.
Kann Jemand helfen?
Danke!
mfg, Andreas

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Dateiliste in Combobox
19.04.2013 19:11:55
Erich
Hi Andreas,
was meinst du mit "Verknüpfungen in mein Blatt schreiben"?
Sollen die Werte von der Quellmappe Daten!H5 nach "diese Datei" Übersicht!A8 kopiert werden?
Oder soll in "diese Datei" Übersicht!A8 eine Formel geschrieben werden, in der Daten!H5 vorkommt?
Zu deiner ersten Frage: Das geht mit CurDir:

Private Sub UserForm_Initialize()
Dim strFile As String
strFile = Dir(CurDir & "\")
With ComboBox1
.Clear
Do Until strFile = ""
.AddItem Left(strFile, Len(strFile))
strFile = Dir
Loop
End With
End Sub
Noch eins: Beim ersten Dateinamen nimmst du LCase, bei den anderen nicht. Absicht?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Dateiliste in Combobox
19.04.2013 19:40:08
Andreas
Hallo Erich G.,
Danke für die Hilfe.
2. Nein, keine Absicht, hab den Code im Netz gefunden.
1. In dieser Datei sollen dann Formeln stehen, die zur Ursprungsmappe verweisen, also: Daten!H5.
Wenn also in der Ursprungsmappe (bzw. später werden es ein par mehr.) etwas geändert wird, soll der Wert auch in dieser Datei geändert werden.
Ich hoffe es ist verständlich.
mfg, Andreas

AW: Dateiliste in Combobox
19.04.2013 20:44:59
Erich
Hi Andreas,
das ginge mit der Click-Ereignis-Prozedur des CommandButtons:

Private Sub CommandButton1_Click()
Dim strFile As String, strForm As String
With ComboBox1
If .ListIndex > -1 Then
strFile = .List(.ListIndex)
Else
' keine Datei ausgewählt - was tun?
End If
End With
If strFile  "" Then
strForm = "='" & CurDir & "\[" & strFile     ' Anfang der Formel
With ThisWorkbook.Sheets("Übersicht")        ' Zielblatt
.Range("H5").Formula = strForm & "]Daten'!H5"
.Range("J5").Formula = strForm & "]Daten'!J1"
' oder
.Cells(5, 10).Formula = strForm & "]Daten'!J1"
.Range("A35:AG59").Formula = strForm & "]Daten'!A8"
End With
End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
P.S.: Mein Vorname ist einfach nur Erich. "Erich G." ist nur mein Username hier, wg. mehrerer Erichs.

Anzeige
etwas geschickter
19.04.2013 20:53:57
Erich
Hi Andreas,
da habe ich strForm nur ungenbügend genutzt. So gehts auch:

Private Sub CommandButton1_Click()
Dim strFile As String, strForm As String
With ComboBox1
If .ListIndex > -1 Then
strFile = .List(.ListIndex)
Else
' keine Datei ausgewählt - was tun?
End If
End With
If strFile  "" Then
' Anfang der Formel
strForm = "='" & CurDir & "\[" & strFile & "]Daten'!"
With ThisWorkbook.Sheets("Übersicht")        ' Zielblatt
.Range("H5").Formula = strForm & "H5"
.Range("J5").Formula = strForm & "J1"
' oder
.Cells(5, 10).Formula = strForm & "J1"
.Range("A35:AG59").Formula = strForm & "A8"
End With
End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: etwas geschickter
20.04.2013 15:55:37
Andreas
Hallo Erich,
Vielen Dank für die Hilfe und sorry das ich mich gestern nicht noch mal gemeldet habe.
Habe gerade testen wollen und habe bemerkt das der Code (auch meiner) meiner Combobox, mit dem ich das Verzeichnuns auslese unter Windows 7 nicht funktioniert. Hatte am Freitag nur nen WindowsXP-Rechner. Ich denke mal das es daran liegt.
Ich werde es am Montag noch mal nachprüfen, um sicher zu gehen. Melde mich dann auf jeden Fall noch mal.
Ein schönes WE.
mfg, Andreas

Windows 7 ist kein Problem
20.04.2013 17:21:56
Erich
Hi Andreas,
"habe bemerkt das der Code (auch meiner) meiner Combobox, mit dem ich das Verzeichnis auslese,
unter Windows 7 nicht funktioniert"

Das kann ich nicht glauben - ich arbeite unter Windows 7 und habe meinen Code getestet.
Woran hast du "bemerkt", dass der Code nicht funktioniert?
Gab es einen Fehler, der auf ein Windows-Problem hinweist?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Windows 7 ist kein Problem
20.04.2013 18:36:51
Andreas
Hallo Erich,
Vielen Dank für deine Mühe!
Liegt nicht am System, sorry. Ich hatte nen falschen Blattnahmen genutzt. Der von dir vorgeschlagene Code für die Verzeichnisanzeige funktioniert nicht, es werden 2 Dateien angezeigt, die nicht im Ordner liegen.
Wenn ich mit meinem Ursprungscode arbeite, werden die Dateien im Ordner, den ich ja aber im Code angeben muß angezeigt.
Wenn ich jetzt deinen Code für den Commandbutton teste, wird ein Fenster geöffnet in dem ich die Datei trotzdem noch angeben muß zu der verknüpft werden soll. Wenn ich diese dann auswähle wird zwar eine Verknüpfung generiert. Die führt aber zu einem falschen Dateipfad (eigeneDateien\Dokumente).
Ich habe mal eine Ursprungsdatei
https://www.herber.de/bbs/user/84965.xls
und eine Übersichtsdatei (diese Datei) hochgeladen.
https://www.herber.de/bbs/user/84964.xls
Bei beiden Dateien muss die Endung in .xlsb geändert werde. Ich kann keine Datei mit dieser Endung hochladen.
mfg, Andreas

Anzeige
Unklarheiten
21.04.2013 17:12:49
Erich
Hi Andreas, da gibt es noch einige Unklarheiten. Ich versuche mal, zu verstehen und stelle dazu auch einige Fragen:
"Der von dir vorgeschlagene Code für die Verzeichnisanzeige funktioniert nicht, es werden 2 Dateien angezeigt,
die nicht im Ordner liegen."
Welchen Ordner meinst du mit "im Ordner"? Das ist kein Ordner, der im Code viorgegeben wird,
sondern der gerade "aktuelle Ordner" - eben CurDir.
Das war deine Frage:
"Wie muss der Code aussehen, wenn automatisch der Inhalt des aktuellen Ordnern angezeigt wird."
"Wenn ich mit meinem Ursprungscode arbeite, werden die Dateien im Ordner,
den ich ja aber im Code angeben muß angezeigt."
Dier Dateien welches Ordners möchtest du jetzt eigentlich aufgelistet haben?
"Wenn ich jetzt deinen Code für den Commandbutton teste, wird ein Fenster geöffnet in dem ich die Datei
trotzdem noch angeben muß zu der verknüpft werden soll. Wenn ich diese dann auswähle
wird zwar eine Verknüpfung generiert. Die führt aber zu einem falschen Dateipfad
(eigeneDateien\Dokumente)."
eigeneDateien\Dokumente war dann wohl der aktuelle Ordner...
;öchtest du vielleicht den Inhalt des Verzeichnisses, in dem die Übersichtsmappe liegt?
Das hat dann nichts zu tun mit dem "aktuellen Pfad" (CurDir),
sondern der Pfad der jeweiligen Mappe: ThisWorkbook.Path
"Bei beiden Dateien muss die Endung in .xlsb geändert werde." Warum denn? Was hast du gegen
xlsm- oder xls-Dateien? Warum muss es BIFF12 sein?
In 84964.xls hast du in DieseArbeitsmappe eine Prozedur "Private Sub UserForm1_Initialize()".
Die hat hier nichts zu suchen.
Eine "UserForm_Initialize()" gehört in den Code einer UserForm, z. B. der UserForm1.
Was soll hier das Left() bewirken?
.AddItem Left(strFile, Len(strFile))
Ist Left(strFile, Len(strFile)) denn etwas anderes als strFile?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich - und noch einen schönen Sonntagabend!

Anzeige
AW: Unklarheiten
21.04.2013 18:18:17
Andreas
Hallo Erich,
Vielen, vielen Dank für deine Mühe.
Ja, ich möchte den Inhalt des Ordners angezeigt bekommen, in dem die Datei Uebersicht liegt.
Dann wird der Rest bestimmt auch funktionieren.
Das mit der Endung (xlsb) ist notwendig, weil in der Ursprungsmappe (später den Ursprungsmappen) eine Gültigkeitsprüfung der eingegebenen Werte durchgeführt wird. Diese funktioniert aber nur in diesem Format genau so wie ich sie brauche. Habe ich auch nur durch langes Suchen im Netz herausbekommen.
Ich habe den Code für das einlesen des Ordners auch nur aus dem Netz, habe leider wenig Ahnung von VBA.
mfg, Andreas

Anzeige
AW: Unklarheiten
21.04.2013 18:33:02
Andreas
Hallo Erich,
ist es wichig, dass später noch mehr Comboboxen und Commandbuttons vorgesehen sind, die genau das gleiche machen sollen.
Also ich möchte untereinander pro Combobox eine Datei auswählen können und per Commandbutton die Verknüpfungen in den dafür vorgesehenen Bereich eintragen.
Also ich wollte einfach nur mehrere Comboboxen und Commandbuttons mit deinem Code anlegen und nur die jeweiligen Verknüpfungen im Code ändern. Geht das?
mfg, Andreas

AW: Unklarheiten
21.04.2013 20:23:25
Erich
Hi Andreas,
die Geschichte mit dem xlsb ("Habe ich auch nur durch langes Suchen im Netz herausbekommen.") interessiert mich.
Lässt du uns teilhaben an deinem Fund im Netz? :-)
Wegen des "aktuellen Ordners" brauchst du nur CurDir auszutauschen gegen ThisWorkbook.Path
Wenn da mehrere ComboBoxen untereinander stehen: Sollen die alle dieselbe Liste zeigen?
Oder sind es verschiedene Dateilisten, evtl. aus verschiedenen Ordnern?
Würde dann vielleicht eine ComboBox ausreichen? Das Vorgehen wäre dann:
ComboBox1-Datei A auswählen - CommandButton1 - Werte übertragen aus A
ComboBox1-Datei B auswählen - CommandButton2 - Werte übertragen aus B
usw., also immer mit der einen Combobox, aber mit diversen CommandButtons.
"Geht das?": Ja - alles geht! :-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Unklarheiten
21.04.2013 20:50:21
Andreas
Hallo Erich,
Vielen Dank für deine Mühe und Hilfe, funktioniert alles super!
Es sollen in allen Comboboxen das geleiche Verzeichnis angezeigt werden.
Das mit der einen Combobox und mehreren Commandbuttons geht aber auch.
Das Thema xlsb kann ich gar nicht mehr so genau nachvollziehen, hatte aber etwas mit einer Gültigkeitsprüfung für Zelleingaben zu tun. Ich schau morgen noch mal auf Arbeit nach, da habe ich die Seite hoffentlich noch.
Nochmals Danke für die Hilfe!
Schönen Sonntag Abend noch.
mfg, Andreas

AW: Gültigkeitsprüfung
22.04.2013 13:17:45
Andreas
Hallo Erich,
habe noch mal geschaut wegen der Gültigkeitsprüfung. Die Webseite auf der ich den Tipp gefunden habe, kann ich leider nicht mehr nachvollziehen. Fakt ist aber, dass die in meiner "Ursprungsdatei.xlsb" (Zellbereich:C8.AG32) hinterlegte Gültigkeitsprüfung auf meinem Arbeitsrechner (Windows XP) im xlsm-Format nicht funktioniert, hier wird mir z.B. der Wert 1,25 als Fehler angezeigt.
Auf meinem Rechner zu hause (Windows7) gehts auch im xlsm-Format.
Vielen Dank noch mal für deine Hilfe, funktioniert jetzt alles.
mfg, Andreas
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige