VisualBasic einzige Datei im Ordner öffnen

>|Sh4d0w|<

Commander
Registriert
Jan. 2009
Beiträge
2.489
Hallo zusammen,
Ich möchte mit VB innerhalb eines Ordners, z.B. auf S:\Daten eine Datei öffnen, die aber am Ende von der Benennung unterschiedlich heißt. z.B. sind im Ordner Daten folgende Dateien vorhanden.
- Datei-001.mdb
- Datei-002.mdb
- Datei-003.mdb
- Datei-004.mdb
usw...

Je nach Berechtigung wird dem User aber nur eine Datei angezeigt und eine Leseberechtigung existiert. Derzeit habe ich ein Visual Basic Script, das eine festen Pfad öffnet. Dies möchte ich etwas dynamischer anhand der einzigen, aufzufindenden Datei lösen. Wie kann ich das im VB lösen?
es wäre gut, wenn man quasi Platzhalter angeben könne.
z.B.:
S:\Daten\Datei~.mdb
S:\Daten\Datei%.mdb
 
Müsste VBA sein (Office\Entwicklertools)

Aktuell schaut die Zeile zum Aufrufen folgendermaßen aus:
Code:
Set Db = OpenDatabase(Name:="S:\Daten\Datei-001.mdb")
 
Zuletzt bearbeitet:
Die Rechte sind im AD über Gruppen hinterlegt. Jeder User sieht daher nur genau eine Datei und sollte dynamisch geöffnet werden (über ein Makro im Dokument)
 
Ich würde das ganze so lösen (also mit C#, ist aber evtl. auch in VBA lösbar). Ich würde mir entweder den Dateipfad anhand der Berechtigung per Webservice holen, oder das ganze als zweite Möglichkeit in der DB speichern und den Pfad anhand der Berechtigungen auslesen.

greetz
hroessler
 
Mit dem Dir habe ich es bereits ausprobiert und komme irgendwie nicht klar. zumindest meckert er beim debuggen.

Wie würde das denn in der korrekten Syntax mit dem oben genannten Beispiel lauten?

Das war mal ein gescheiteter Versuch:
Code:
strPath = "S:\Daten\"
strExt = "*.mdb"
Dim strFile As String
If strPath = "" Then
    Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Set Db = OpenDatabase(Name:="strFile")
Loop
End If
 
Zuletzt bearbeitet:
Keine Ahnung, ich weiger mich mit VBA zu beschäftigen :( Ekelhafte Sprache ist das.

https://msdn.microsoft.com/de-de/library/dk008ty4(v=vs.90).aspx sagt aber:
Code:
' Returns filename with specified extension. If more than one *.INI
' file exists, the first file found is returned.
MyFile = Dir("C:\WINDOWS\*.INI")
 
Okay als mit dem Beispiel funktioniert das :)

Weiß aber nicht, wieso ich den Ordnerpfad beim Aufruf nochmal angeben muss, da er sonst nur den Dateinamen nimmt.

Code:
Dim MyFile As String

MyFile = Dir("S:\Daten\*.mdb")
Set Db = OpenDatabase(Name:="S:\Daten\" & MyFile)


Ich hätte nochmal eine weitere Frage diesbezüglich. Wie müsste ich das angeben, wenn er noch nach einem x-beliebigen Ordner suchen soll. also wenn unter S:\Daten jeweils zur Datei ein Unterordner existiert, weil ich gerne auf Ordner berechtigen möchte. Ein einfaches Einfügen eines *\ hinter dem Pfad bringt nichts.
 
Zuletzt bearbeitet:
Funktioniert, danke
 
Zuletzt bearbeitet:
Zurück
Oben