Hallo , ich öffne mit folgendem Code ein PDF Dokument:
Dim Pfad As String
Pfad = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\RT1301.pdf"
DateiOeffnen "open", Pfad, 3
End Sub
Wenn die Datei aber eine laufende Nummer erhällt wie z.B. RT1301V1 oder RT1301V2 , kann man im VBA dann festlegen dass er das Dokument aufmachen soll, auch wenn nicht alle Zeichen eingibt z.B. wie früher in DOS mit dem Sternchen * (Wohl bemerkt ist im Ordner immer nur ein PDF drin nur heisst es immer anders wenn eine neue Version rauskommt). Dann würde die Zeile so aussehen:
Pfad = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\RT1301*.pdf"
Hab das probiert aber es geht nicht. Ist das überhaupt möglich?
Lg
Hallo
wenn nur eine Datei vorkommt dann verwende doch Dir um den Dateinamen zu verifizieren.
Dim Pfad As String
dim sFile as string
Path = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\"
sFile = dir$(path & "RT1301*.pdf")
if len(sFile) > 0 then DateiOeffnen "open", Pfad & sfile, 3
End Sub
Hi,
Habe mich da ein bischen falsch ausgedrück . Also in dem Ordner liegen die Dateien RT1301 , RT1701, RT1351, RT1721. Wenn ich die Dateien bekommt, sehen sie in etwa so aus. RT1301V12 oder RT1701V67. Diese kopiere ich dann in den Ordner RT und lösche die alte Version die darin noch liegt. Ich müsste aber dann den VBA Code immer wieder neu anpassen, damit das klappt, oder ich müsste die Datei immer umbenennen und das "V12" z.b. wegnehmen, dann klappts. Die Versionsnummer ist aber wichtig für die Archivierung der Dateien. Somit müsste er dann das Dokument öffnen und am den Sternchen müsste dann der Rest der Zeichen ignoriert werden wie bei dos früher. bspw (xcopy RT1301*.*)
Hallo
dir ist schon das * in der Zeile sFile = dir$(path & "RT1301*.pdf") aufgefallen?
Wenn nur eine Datei (RT1301.pdf oder RT1301V1.pdf ... oder RT1301V1000.pdf) vorkommt wird diese so mit dir gefunden. Der Dir-Befehl ist ähnlich wie Dos, * und ? kannst du entsprechen verwenden.
Hallo, Ja das ist mir aufgefallen, aber in dem Ordner sind wie gesagt 4 Dateien drin enthalten, die organisatorisch bedingt immer zusammen in einem Ordner liegen. Und genau da ist das Problem.
Hallo
ich komm jetzt irgendwie nicht mit. Das sind deine Angaben die du bisher gegeben hast, so wie ich es verstanden habe:
Du haste einen Ordner P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\. In diesem Ordner liegen meinetwegen 4 Dateien
RT1301VIrgendwas.pdf , RT1701VIrgendwas.pdf, RT1351VIrgendwas.pdf, RT1721VIrgendwas.pdf wobei VIrgendwas halt für igendeine ZahlenBuchstabenkombo steht
Du willst jetzt mit deiner Funktion DateiOeffnen ( die ich nicht kenne, die aber einen vollständigen Path benötigt) die Datei RT1301VIrgendwas.pdf verarbeiten, bei der du aber das VIrgendwas nicht kennst.
Wenn ich jetzt den Path mit dem Dir-Befehl mit der Maske RT1301*.pdf durchsuche wird bei der obigen Annahme die Datei RT1301VIrgendwas.pdf gefunden, Keine RT1701VIrgendwas.pdf, keine RT1351VIrgendwas.pdf und keine RT1721VIrgendwas.pdf.
Sollte dann in Zukunft die Datei RT1301VIrgendwas.pdf durch eine RT1301VIrgendwasAnderes.pdf ersetz werden (lt. deiner Aussage wird die Alte Datei gelöscht) wird Dir mit der Maske die neue Datei finden.
Ja ich glaube ich hab da etwas jetzt durcheinander geschmissen sorry :) Ich teste das gleich morgen mal :) Es gibt nicht zufällig einen Befehl der den Acrobat Reader "Maximiert aufmacht" Wenn es mehr als eine Zeile ist, ist es auch gut so, komm damit schon klar . Wie gesagt versuche mein Glück morgen :) Danke
Hallo habe das nun probiert, aber das Dokument öffnet sich nicht es geschieht an sich gar nix :) Es öffnet sich nur der Ordner
Hallo
Was hast du probiert? Wie schaut denn dein Code jetzt aus?
Hi, Der Code sieht so aus:
Private Sub Befehl4_Click()
Dim Pfad As String
Dim sFile As String
Pfad = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT"
sFile = Dir$(Pfad & "RT1301*.pdf")
If Len(sFile) > 0 Then DateiOeffnen "open", Pfad & sFile, 3
End Sub
Und hier noch das Modul:
Public Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long
Public hWnd As Long
Public Const SW_HIDE = 0 ' Versteckt öffnen
Public Const SW_MAXIMIZE = 3 ' Maximiert öffnen
Public Const SW_MINIMIZE = 6 ' Minimiert öffnen
Public Const SW_NORMAL = 1
Public Const SW_RESTORE = 9
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNOACTIVATE = 4
Public Function DateiOeffnen(Aktion As String, Pfad As String, _
Ansicht As Long) As Boolean
Call ShellExecute(hWnd, Aktion, Pfad, "", "", Ansicht)
End Function
Zitat von: wuffwuff2003Pfad = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT"
Zitat von: Ich quote mich mal selbstPath = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\"
Ich musste den Path in Pfad umändern da ich sonst Abstürze bekam mit der Fehlermeldung - variable nicht definiert.
Huch pfad ist mir nicht aufgefallen, stimmt ist ein Schreibfehler von mir, aber ich wollte eigentlich auf den fehlenden Backslsh hinaus am Ende hinaus.
Achso ja das hab ich ausprobiert, einmal mit und einmal ohne Backslash habe gedacht da wäre der Fehler aber das war's auch nicht.
Hallo,
versuche das mal so:
Private Sub Befehl4_Click()
Dim Pfad As String
Dim sFile As String
Pfad = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\"
sFile = Dir$(Pfad & "RT1301*.pdf")
If Len(sFile) > 0 Then
FollowHyperlink Pfad & Dir(Pfad) 'öffnet das 1.PDF
End If
End Sub
Das Modul und die Funktion (DateiOeffnen) sind dann beide vollständig überflüssig.
Im Dateinamen kann aber kein Joker (*) übergeben werden. Das würde auch für DateiOeffnen nicht mit dem Joker funktionieren.
Du kannst generell keine Datei mit einem Joker öffnen. Das geht nicht.
Du kannst höchstens nacheinander die PDFs aufrufen in dem Du das Verzeichnis abklapperst und ein PDF nach dem anderen öffnest.
Es passiert nix wenn die Datei nicht vorhanden ist. Dein Modul als auch die Sub (mit der zusätzlichen Dir-Zeile) funktionieren jedenfalls. Ob du nun Followhyperlink oder dein Modul verwendest ist für das nicht funktionieren bei dir nicht ausschlaggebend.
Aber evtl passiert ja so etwas bei dir:
Private Sub Befehl4_Click()
Dim Pfad As String
Dim sFile As String
Pfad = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\"
sFile = Dir$(Pfad & "RT1301*.pdf")
If Len(sFile) > 0 Then
DateiOeffnen "open", Pfad & sFile, 3
else
MSGBOX "Keine Datei mit dem Muster RT1301*.pdf vorhanden,,"Fehler"
end if
End Sub
Hallo,
hier mal noch ein Vorschlag für das abklappern wenn kein Dateiname bekannt ist.
Private Sub Befehl0_Click()
Dim Dateiname As String
Dim Pfad As String
Pfad = "P:\data\bureau dlt1\CFL CRM T1\SNCF\RT- Liste- Affichage\RT\"
Dateiname = Dir(Pfad)
While Dateiname <> ""
FollowHyperlink Pfad & Dateiname
Dateiname = Dir
Wend
End Sub
Es werden nacheinander in jeweils einem Fenster alle Dateien mit der der Endung zugeordneten Anwendung geöffnet.
Ist keine Datei vorhanden, wird auch nichts geöffnet.
So das hat jetzt funktioniert, Danke :) Zum Glück gibt es dieses Forum :)