re re re re re
Ich habe Angst, darauf zu bestehen, aber Fgirards Rat ist, sowohl für die Verwendung von [Scripting.FileSystemObject] als auch für [SaveAs] zu befolgen.
Nun, jetzt können wir auf der Verwendung von Dir beharren, aber wir müssen das Biest zu einem guten Durcheinander machen, die Unterscheidung zwischen Dateien und Ordnern machen!!
Ihr Code-Snippet:
'Testen, ob der Ordner mit dem Jahr vorhanden ist, wenn nicht, erstellen Sie ihn
Wenn Dir(PfadDateiNamePDF) = "" dann
MkDir PfadDateinamePDF
Ende, wenn
Ich übersetze: Wenn es keine Datei an der Adresse [PathFileNamePDF] gibt, rufen Sie MkDir auf, um den letzten Unterordner zu erstellen, der in der Adresse [PathFileNamePDF] enthalten ist.
Ihr Test ist nicht der richtige, so dass MkDir abstürzen kann, wenn der letzte Unterordner der Adresse vorhanden ist (Laufzeitfehler 75).
MkDir stürzt auch ab, wenn der vorletzte Unterordner der Adresse nicht existiert (Laufzeitfehler 76).
MkDir stürzt auch ab, wenn das Laufwerk, z. B. [R:], nicht verfügbar ist, wenn ...
Auf der anderen Seite ist MkDir unempfindlich gegenüber der Frage, ob am Ende der Adresse ein [\] vorhanden ist oder nicht.
ein leicht modifiziertes Programm aus der VBA-Hilfe (wählen Sie Dir und drücken Sie F1, um die Hilfe zu erhalten):
' Zeigt im Ausführungsfenster (Strg+G) die Namen der Ordner an, die unter [C:\A\] vorhanden sind.
' und wenn einer dieser Ordnernamen "2014" ist, dann stoppt das Programm
Dimmen von MyFile, MyPath, MyName
MyPath = "C:\A\" ' Definiert den Pfad.
MyName = Dir(MyPath, vbDirectory) ' Ruft den ersten Eintrag ab.
Do while MyName <> "" ' Startet die Schleife.
' Ignoriert den aktuellen Ordner und die
' mit dem aktuellen Ordner.
Wenn MyName <> "." und MyName <> ".. " Dann
' Verwendet einen Vergleich auf Bitebene, um zu überprüfen, ob MyName ein Ordner ist.
if (GetAttr(MyPath & MyName) und vbDirectory) = vbDirectory dann
Debug.Print MyName ' Zeigt den Eintrag nur an, wenn er einen Ordner darstellt.
Wenn MyName = "2014" dann stoppt 'der '2014' Ordner existiert!!
Ende, wenn
Ende, wenn
MyName = Dir ' Ruft den folgenden Eintrag ab.
Schleife
Dieser Codeausschnitt ist vorteilhafterweise ersetzbar durch (siehe Fgirard-Bemerkungen):
Dim oFSO As Scripting.FileSystemObject
Dim oFld As Ordner
Set oFSO = Neues Scripting.FileSystemObject
Wenn oFSO.FolderExists(" "c:\A\2014") = true, dann
Aufhören
Ende, wenn
ODER noch einfacher und nicht überraschend
So fs
Set fs = CreateObject("Scripting.FileSystemObject")
Wenn fs. FolderExists("c:\A\2014") dann
Aufhören
Ende, wenn
Bleibt abzuwarten für eure [SaveAs]
Ich habe das gerade versucht:
Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sun Rep als Boolean
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
Dir = swModel.SaveAs("C:\A\toto.pdf") ' " C:\A" sollte vorhanden sein, wenn "toto.pdf" vorhanden ist, wird es automatisch überschrieben
Und es funktioniert sehr gut. >> Beginnen Sie beim Debuggen mit Text in Klammern (hier "C:\A\toto.pdf"). Wenn es funktioniert, gibt Dir True zurück. Dann können Sie versuchen, Ihren Text durch eine Variable zu ersetzen (hier eine Variable, die als String deklariert ist).
A+