Anzeige
Archiv - Navigation
1324to1328
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
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

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

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

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

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

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

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
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige