Live-Forum - Die aktuellen Beiträge
Datum
Titel
20.06.2025 08:39:33
19.06.2025 20:41:29
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateiname in Textbox ausgeben (Userform)

Dateiname in Textbox ausgeben (Userform)
01.08.2013 09:10:13
Frank
Hallo,
ich habe eine Userform gebastelt, in der ich über einen Button 'Durchsuchen' aus dem Windows-Explorer eine Datei auswählen kann, deren Dateipfad dann in eine Textbox auf der Userform geschrieben wird. Auf diese Datei sollen dann verschiedene Makros angewendet werden, die ich schon habe (jedoch noch nicht eingebunden habe, das spielt aber auch erstmal keine Rolle).
2 Probleme:
1. Ich würde gerne den Dateinamen inkl. Endung aus dem Pfad in der Textbox absplitten und in eine eigene Variable schreiben, damit ich diese Variable dann in den Makros angeben kann und somit immer die Datei 'bearbeitet' wird, die per Userform ausgewählt wurde. Dazu habe ich auch schon Code-Schnipsel im Internet gefunden, war nur nicht in der Lage, die gescheit so einzufügen, dass es klappt.
2. Wenn ich die Userform per Button 'Beenden' schließe, soll die Datei, deren Name in der Textbox steht, auch geschlossen werden. Wie verweise ich mit Worbooks.Close darauf? Oder ist das der falsche Ansatz?
Vielen Dank für die Hilfe!
Frank
Sub ZeigeForm()
UserForm1.Show vbModeless
End Sub

Private Sub UserForm_Initialize()
UserForm1.Left = Application.ActiveWindow.Width - UserForm1.Width
UserForm1.TextBox1.Text = "Datei über 'Durchsuchen' auswählen"
With Me.ComboBox1
.AddItem "Skript1"
.AddItem "Skript2"
.AddItem "Skript3"
.AddItem "Skript4"
.ListIndex = 0 '
End With
End Sub

Private Sub CommandButton1_Click()
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Microsoft Excel-Dateien", "*.xlsx"
.Show
If .SelectedItems.Count = 1 Then
TextBox1 = .SelectedItems(1)
Cancel = True
Workbooks.Open (TextBox1)
End If
End With
End Sub

Private Sub CommandButton2_Click()
If ComboBox1 = "Skript1" Then
MsgBox "Test erfolgreich"
End If
End Sub


Private Sub CommandButton3_Click()
'ActiveWorkbook.Close funktioniert hier nicht recht, weil oftmals mehrere Excel-Dateien  _
parallel geöffnet sind
Unload Me
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 09:35:03
thomas
hey frank
also du kannst doch einfach eine variable definieren und dort dann dasselbe eintragen wie in die TextBox
dim test as string
test= .selectedItems(1)

und beim schliessen musst du den Dateinamen angeben

Workbooks("name").Close

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 09:48:28
Frank
Hi, vielen Dank schon einmal für die Hilfe. Sorry für die blöden Nachfragen, aber:
1. An welche Position muss ich die Variablen-Deklaration setzen, damit die Variable für die gesamte Userform gilt? Wie bekomme ich es dabei hin, dass in der Variablen NUR der Dateiname steht, nicht mehr der Pfad? Dazu habe ich diesen Schnipsel gefunden, bekomme es aber nicht hin, den auch vernünftig einzubinden: Right(test, InStr(1, StrReverse(test), "\") - 1)
2. Ich will beim Schließen des Workbooks eben nicht mehr den Namen manuell eingeben, sondern würde genau dafür gerne die Variable mit dem 'extrahierten' Dateinamen verwenden. Wie klappt das?
Vielen Dank nochmal. Frank

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 10:02:38
thomas
hey
kein ding dafür ist das Forum da
1.also die variablen Definition kannst du einfach am anfang setzen bleibt dann für das gesamte Sub vorhanden
also das mit rechts abschneiden ist nicht so einfach ausser du hast immer einen gleich langen namen
gibt bestimmt Möglichkeiten aber bin auch kein vba Guru
kannst du nicht über

activeworkbook.name
an den namen gelangen?
2. du kannst die variable auch benutzen
wenn test die variable ist:
Workbooks(test).Close

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 10:13:01
Frank
Hi, danke nochmal. Wenn ich die Variablendeklaration ganz an den Anfang setze, 'kennt' er das .SelectedItems(1) ja noch nicht und zeigt entsprechend eine Fehlermeldung. Wie verhindere ich das?
Mit ActiveWorkbook möchte ich nicht so gerne arbeiten, weil in der Regel 10-15 Excel-Dateien parallel geöffnet sind und eben dieses spezielle Workbook angewählt werden soll.
Bleiben also folgende Fragen:
1. Kennt jemand eine Möglichkeit, den Dateinamen vom -pfad zu trennen und in eine Variable zu schreiben?
2. Wie deklariere ich die Variable, sodass sie in der gesamten Userform erkannt wird?
Danke! Frank

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 10:20:52
thomas
hey
1.also die Deklaration ist ja nur zu sagen welcher Datentyp
das befüllen geht natürlich nur wenn du die Daten hast also einfach dort dann einstellen wo er das .selecteditems(1) kennt
2. bin ich gerade überfragt ausser die Namen sind immer gleich lang dann abschneiden

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 10:36:42
Frank
Hi, angeblich soll der Schnipsel Right(test, InStr(1, StrReverse(test), "\") - 1) einfach alles VOR dem letzten Backslash abschneiden, sodass nur noch der Dateiname übrigbleibt. Hat jemand eine Idee, wie das in meinem Skript umzusetzen wäre?
Vielen Dank schonmal, Thomas, für Deine Hilfe!!
Frank

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 11:07:33
thomas
hey
bei mir funktioniert der codeschnipsel
du könntest den Dateinamen unter einer zweiten variablen speichern
test2 = Right(test, InStr(1, StrReverse(test), "\") - 1)
und diese dann schliessen
Workbooks(test2).Close

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 11:16:37
thomas
hey
das ist ungprüft und ich weiss nicht wie dein eingabefenster aussieht aber so stell ich mir das vor:
Private Sub CommandButton3_Click()
Dim test As String
Dim test2 As String
With Application.FileDialog(msoFileDialogFilePicker)
test = .SelectedItems(1)
test2 = Right(test, InStr(1, StrReverse(test), "\") - 1)
Workbooks(test2).Close
Unload Me
End Sub

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 11:35:02
Frank
Perfekt, ich teste das mal aus, sobald ich zu Hause bin. Vielen Dank für Deine Hilfe, hast mir jetzt schon sehr geholfen :). Frank

AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 11:48:13
Frank
Hi, ich habe es gerade getestet. Das Schließen der Datei funktioniert bei mir noch nicht, da der Aufbau der Userform folgender ist:
1. Man wählt eine Datei über den Durchsuchen-Button aus
2. Man macht irgedwas mit der Datei (spielt hier erstmal keine Rolle)
3. Man will die Userform und das in (1) geöffnete Workbook mit einem separaten Beenden-Button schließen.
Das Workbooks(test2).Close steht also in einem anderen Sub als das Befüllen der Variable. Wie bekomme ich es hin, dass mir die 'befüllte' Variable test2 aus dem Sub (1) "Datei durchsuchen" auch noch in einem späteren Sub zur Verfügung steht?
Danke, Frank

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 11:50:46
Frank
Jetzt habe ich es hinbekommen :)
Der Beenden-Button muss einfach so aussehen:
Private Sub CommandButton3_Click()
Dim dateiname As String
dateiname = Right(TextBox1, InStr(1, StrReverse(TextBox1), "\") - 1)
Workbooks(dateiname).Close
Unload Me
End Sub

Anzeige
AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 11:53:31
thomas
hey
jo genau das ist auch gut :-)
gruß thomas

AW: Dateiname in Textbox ausgeben (Userform)
01.08.2013 11:52:52
thomas
hey
du kannst die variable als public definieren
Public test As String
ganz oben in einem modul
dann müsste es überall verfügbar sein
gruß thomas

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige