VBA: Anfang von Dateiname bekannt -> Datei öffnen

Ich hätte da ne Frage zum Thema Excel Datei mit VBA öffnen. Sagen wir mal ich hab da nen Code mit dem ich eine Datei öffnen will. Das Ende des Dateinamens ändert sich aber von Zeit zu Zeit, der Anfang bleibt gleich. Gibt es ne Möglichkeit dass ich den Anfang des Dateinamens angebe und Excel dann automatisch den Rest vervollständigt, weil es eh nur eine Datei in dem Ordner gibt die diesen Anfangsdateinamen hat?
Wie würdet ihr dieses Problem lösen? Kann ich auch so vorgehen (schematisch):

Drücke Button
-> Öffne Auswahlliste
-> Wähle Dokument aus Ordner aus (/ Abbrechen)
-> Mache mit Dokument
-> Schließe Dokument

Ziel des ganzen soll es sein, dass gewisse Daten aus dem Dokument in ein anderes Worksheet eingelesen werden. Problem ist halt nur, dass ich das Ende des Dateinamens regelmäßig ändert (angefügtes Datum wird aktualisiert).

Hallo Janadi

Sub Begin()
SendKeys "Dein_immergleicher_Text " & „+{Tab}“
Application.Dialogs(xlDialogFindFile).Show
End Sub

HTH.

Markus

Ich hätte da ne Frage zum Thema Excel Datei mit VBA öffnen.
Sagen wir mal ich hab da nen Code mit dem ich eine Datei
öffnen will. Das Ende des Dateinamens ändert sich aber von
Zeit zu Zeit, der Anfang bleibt gleich.

Hallo Janadi,

vielleicht so, ungetestet:

Sub Einlesen()
Dim Fso As Object, Ordner As Object, varDatei As Variant
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Ordner = Fso.getfolder("C:\test")
For Each varDatei In Ordner.Files
 If varDatei Like "Dateinameanfang" & "\*.xls" Then
 Workbooks.Open varDatei
 Exit For
 End If
Next varDatei
If ActiveWorkbook.Name = varDatei.Name Then
 With ActiveWorkbook
 '...
 'dein Code
 '...
 ActiveWorkbook.Close Savechanges:=False
 End With
End If
End Sub

Gruß
Reinhard

Danke Markus,

wie kann ich hier abfragen, ob in dem Dialogfeld dann Cancel gedrückt wurde, also nichts neues geöffnet wurde?

Hallo Janadi,

  • da Du weißt, wie der Dateiname beginnt, kannst Du die Workbooks-Auflistung untersuchen (vorher waren x Wbks offen, nach Ausführung des Makros sind’s dann entweder immer noch x oder x+1); außerdem sollte die zuletzt geöffnete Datei die oberste in der Auflistung sein, zugreifbar mit application.Workbooks.Count)

  • oder Du führst den Befehl so aus:

n=Dialogs(xxx).Show 'n ist vom Typ Long

und das sollte liefern
n=0 bei Abbrechen
n=-1 bei OK

HTH.

M.

Jetzt komm ich gleich zum nächsten Problem. Ich würd jetzt gerne per Macro etwas mit dem geöffneten Macro machen. Und zwar sollen 2 verschiedene Dinge möglich sein:

  1. will ich dass ich per Macro einen Knopf drücke der im zu öffnenden Workbook zu finden ist
  2. will ich daten in Zellen des zu öffnenden Workbooks reinschreiben.

Bei meinen bisherigen Versuchen war beides nicht möglich. Habe folgenden Ansatz verwendet:

Private Sub CommandButton1_Click()
Dim awb As Workbook
Dim bwb As Workbook

Set awb = ActiveWorkbook 'bereits geöffnetes Workbook für Zugriff definieren

Application.Dialogs(xlDialogFindFile).Show

Set bwb = ActiveWorkbook 'neu geöffnetes Workbook für Zugriff definieren

bwb.ActiveSheet.Cells(2, 2).Value = awb.ActiveSheet.Cells(2, 2).Value

bwb.Worksheets(1).CommandButton1_Click 'auf Knopf des neu geöffnetes WB zugreifen
End Sub

Danke schonmal!

Jetzt komm ich gleich zum nächsten Problem. Ich würd jetzt
gerne per Macro etwas mit dem geöffneten Macro machen. Und
zwar sollen 2 verschiedene Dinge möglich sein:

  1. will ich dass ich per Macro einen Knopf drücke der im zu
    öffnenden Workbook zu finden ist
  2. will ich daten in Zellen des zu öffnenden Workbooks
    reinschreiben.

Hallo Jan,

Sub test()
Dim wkbA As Workbook, wkbB As Workbook
Set wkbA = Workbooks("kwtest3.xls")
Set wkbB = ActiveWorkbook
With wkbA
 Application.Run .Name & "!Tabelle1.CommandButton1\_Click"
 .Worksheets("Tabelle1").Range("A5") = wkbB.Worksheets("Tabelle3").Range("X10")
End With
End Sub

Gruß
Reinhard