Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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
Dynamischer Pfadname über ComboBox
22.05.2020 22:05:08
Markus
Liebes Forum,
ist es möglich über die Auswahl einer CombBox einen Pfadnamen zum Verzeichnis für den jeweiligen Benutzer dynamisch anzupassen?
Meine Idee wäre: Arbeitet Benutzer 1 mit der Mappe wählt er, vor dem Durchlauf des Makros, im ComboBox Dropdown Benutzer 1 aus und der Pfadname beinhaltet Benutzer 1
Arbeitet Benutzer 2 mit der Mappe wählt er im ComboBox Dropdown Benutzer 2 aus und der Pfadname beinhaltet statt Benutzer 1 nun Benutzer 2.
Zur groben Veranschaulichung paar Codebruchstücke:
Code in UserForm:
Private Sub UserForm_Initialize()
Me.ComboBox1.AddItem "Benutzer1"
Me.ComboBox1.AddItem "Benutzer2"
End Sub
Code in Modul:
Option Explicit
Dim WBA As Workbook
Dim WBB As Workbook
Dim WBC As Workbook
...
Set WBA = Workbooks.Open("C:\Users\Benutzer1\Ordernname\Mappe1.xlsm")
Set WBB = Workbooks.Open("C:\Users\Benutzer1\Ordernname\Mappe2.xlsm")
Set WBC = Workbooks.Open("C:\Users\Benutzer1\Ordernname\Mappe3.xlsm")
Ich hoffe ihr konntet mein Anliegen verstehen.
Vielen Dank euch!

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

Betreff
Datum
Anwender
Anzeige
AW: Dynamischer Pfadname über ComboBox
22.05.2020 22:08:39
Regina
Hi,
ich würde den ausgewählten Eintrag in der Combobox in eine globale Variable schreiben und dann im Code den Pfad aus Strings zusammenbasteln
Globale Variable:
Public str_benutzer as string
Im userform:
str_benutzer = Me.ComboBox1
Verwendung;
Set WBA = Workbooks.Open("C:\Users\" & str_benutzer & "\Ordernname\Mappe1.xlsm")
Gruß Regina
AW: Dynamischer Pfadname über ComboBox
22.05.2020 22:51:33
Markus
Hi Regina,
vielen Dank für deine schnelle Antwort.
Da ich in dem Bereich nicht so bewandert bin:
Wenn der/die beiden Benutzer bspw. Peter123 und Anna456 heißen würde, wie müsste ich es dann formulieren ?
Globale Variable:
Public str_Peter123 as string
Public str_Anna456 as string
Im userform:
str_Peter123 = Me.ComboBox1
str_Anna456 = Me.ComboBox1
Verwendung;
Set WBA = Workbooks.Open("C:\Users\" & str_Peter123 & "\Ordernname\Mappe1.xlsm") '?
Vielen Dank!
Anzeige
AW: Dynamischer Pfadname über ComboBox
23.05.2020 07:20:20
Regina
...nee anders:
die eine Variable heißt einfach str_benutzer, Durch das Befüllen im userForm mit dem gewählten Eintrag aus der ComboBox "wandert" der Benutzername (z.B. Peter123) in die Variable. Beim Öffnen der Datei wird dieser Teil des Pfades aus der globalen Variablen ausgelesen.
Wenn Du da Probleme hast, lade mal eine Beispieldatei hoch. dann baue ich Dir das dort ein.
Gruß Regina
AW: Dynamischer Pfadname über ComboBox
23.05.2020 08:07:27
Regina
Nachtrag:
Die golable Variable muss in einem der Module AUßERHALB einer Sub stehen!
Gruß Regina
AW: Dynamischer Pfadname über ComboBox
23.05.2020 15:52:58
Markus
Hi Regina,
Vielen Dank für deine erneute Antwort.
Bei meiner Mappe handelt es sich um eine Konsolidierung bestehend aus mehreren bestimmten Tabellen aus mehreren Mappen. Es wird immer jeweils die benötigte Monats-Tabelle aus der jeweiligen Mappe ausgelesen. Die Monate werden mit M abgekürzt. Der gewünschte Monat wird auf einer UserForm mittels einer ComboBox (enthält die Monatsnamen: Oktober - September) ausgewählt und anschließend startet das Modul.
Ideal wäre es, wenn du die ComboBox für die unterschiedlichen Benutzer (zB. Peter123 und Anna456) ebenfalls auf der UserForm platzieren könntest. Der Benutzer würde dann in ComboBox1 den Monat wählen und in ComboBox2 seinen jeweiligen Benutzernamen für den Pfadnamen. Anschließend würde er das Makro auslösen (CommandButton1)
Hier das Makro der UserForm:
Option Explicit
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value = "" Then
Monat = ""
Me.CommandButton1.Enabled = False
Else
Select Case Me.ComboBox1.Value
Case Is = "Januar"
Monat = "M01"
Case Is = "Februar"
Monat = "M02"
Case Is = "März"
Monat = "M03"
Case Is = "April"
Monat = "M04"
Case Is = "Mai"
Monat = "M05"
Case Is = "Juni"
Monat = "M06"
Case Is = "Juli"
Monat = "M07"
Case Is = "August"
Monat = "M08"
Case Is = "September"
Monat = "M09"
Case Is = "Oktober"
Monat = "M10"
Case Is = "November"
Monat = "M11"
Case Is = "Dezember"
Monat = "M12"
End Select
Me.CommandButton1.Enabled = True
End If
End Sub

Private Sub CommandButton1_Click() ‘Makro wird ausgeführt
Call Zusammenfuehren(Monat)
Unload Me
End Sub

Private Sub CommandButton2_Click() ‘Schließen Button auf UserForm
Unload Me
End Sub

Private Sub UserForm_Initialize()
With Me.ComboBox1
.AddItem "Januar"
.AddItem "Februar"
.AddItem "März"
.AddItem "April"
.AddItem "Mai"
.AddItem "Juni"
.AddItem "Juli"
.AddItem "August"
.AddItem "September"
.AddItem "Oktober"
.AddItem "November"
.AddItem "Dezember"
End With
Me.CommandButton1.Enabled = False
End Sub

Makro des Moduls (wo der Pfadname entsprechend der Auswahl auf der UserForm - ComboBox2 angepasst werden sollte)
Option Explicit
Dim ws As Worksheet
Dim WBZ As Workbook
Dim Z As Workbook
Dim WBA As Workbook
Dim WBB As Workbook
Dim WBC As Workbook
Dim wsr As Worksheet
Public Monat As String
Dim intIndex As Integer
Dim Punkt As Integer
Sub Zusammenfuehren(ByRef Monat As String)
Application.DisplayAlerts = False
Application.ScreenUpdating = True
Application.EnableEvents = False
Set WBZ = ThisWorkbook
Set WBA = Workbooks.Open("C:\Users\Peter123\Ordnername\Land1.xlsm")
Set WBB = Workbooks.Open("C:\Users\Peter123\Ordnername\Land2.xlsm")
Set WBC = Workbooks.Open("C: \Users\Peter123\Ordnername\Land3.xlsm")
WBZ.Activate
With WBA
For Each ws In WBA.Worksheets
If InStr(1, ws.Name, Monat, vbTextCompare) > 0 Then
Punkt = InStr(1, WBA.Name, ".", vbBinaryCompare)
intIndex = ws.Index
End If
Next ws
If intIndex 12 Then
MsgBox "Fehler: Tabellenblatt " & Monat & " konnte nicht gefunden werden!" & vbNewLine & "Der Programmablauf wird abgebrochen", vbCritical, "Fehler"
WBA.Close False
WBB.Close False
WBC.Close False
Exit Sub
End If
Set wsr = WBA.Sheets(intIndex)
wsr.Copy after:=WBZ.Sheets(Sheets.Count)
ActiveSheet.Name = Left(WBA.Name, Punkt - 1)
WBA.Sheets("XY").Copy after:=WBZ.Sheets(Sheets.Count)
ActiveSheet.Name = "Land1_XY"
Set wsr = Nothing
.Close False
End With
With WBB
Punkt = InStr(1, WBB.Name, ".", vbBinaryCompare)
Set wsr = WBB.Sheets(intIndex)
wsr.Copy after:=WBZ.Sheets(Sheets.Count)
ActiveSheet.Name = Left(WBB.Name, Punkt - 1)
WBB.Sheets("XY").Copy after:=WBZ.Sheets(Sheets.Count) ' NEW
ActiveSheet.Name = "Land2_XY"
Set wsr = Nothing
.Close False
End With
With WBC
Punkt = InStr(1, WBC.Name, ".", vbBinaryCompare)
Set wsr = WBC.Sheets(intIndex)
wsr.Copy after:=WBZ.Sheets(Sheets.Count)
ActiveSheet.Name = Left(WBC.Name, Punkt - 1)
WBC.Sheets("XY").Copy after:=WBZ.Sheets(Sheets.Count) ' NEW
ActiveSheet.Name = "Land3_XY"
Set wsr = Nothing
.Close False
End With
Set WBA = Nothing
Set WBB = Nothing
Set WBC = Nothing
Sheets("Z").Move after:=Sheets(Sheets.Count)
WBZ.Activate
Set WBZ = Nothing
Set ws = Nothing
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
Hoffe es war einigermaßen verständlich - bei Fragen selbstverständlich gerne melden.
Vielen Dank im Voraus für deine Hilfe!
Anzeige
AW: Dynamischer Pfadname über ComboBox
23.05.2020 15:59:06
Regina
.. das hört sich alles etwas komplexer an, als zuerst dargestellt.
Lädst Du bitte die Exceldatei mit den UserForms hoch, so wie Du sie Dir vorstellst?
Dann passe ich den den Code gerne an.
Gruß Regina
AW: Dynamischer Pfadname über ComboBox
23.05.2020 16:52:23
Markus
Hi Regina,
anbei die Beispielmappe mit der Darstellung der beiden Comboboxen.
https://www.herber.de/bbs/user/137691.xlsm
Im Endeffekt geht es "nur" darum, dass der jeweilige Benutzer sich durch die Auswahl der Combobox 2 seinen eigenen Pfad zur Datei erstellt. Deshalb hab ich noch das Modul in der vorhergehenden Nachricht hinzugefügt, da sich die Auswahl in der ComboBox2 auf diese Stelle bezieht.
Set WBA = Workbooks.Open("C:\Users\Peter123\Ordnername\Land1.xlsm")
Dankeschön!
Anzeige
AW: Dynamischer Pfadname über ComboBox
23.05.2020 18:18:37
Regina
ok, ich habe Dir das in die Datei einmal eingebaut. Der Code "Zusammenführen" befindet sich in Modul2.
Gruß Regina
https://www.herber.de/bbs/user/137694.xlsm
AW: Dynamischer Pfadname über ComboBox
23.05.2020 18:24:49
Markus
Vielen Dank Regina :)

117 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige