Ich habe die Änderungen vorgenommen, aber es macht immer noch dasselbe, und wenn ich es hier neu starte, oder es buggt!
sans_titre.png
Ich habe die Änderungen vorgenommen, aber es macht immer noch dasselbe, und wenn ich es hier neu starte, oder es buggt!
Ah, ich glaube, es liegt daran, dass du den Backslash am Ende deines Weges nicht hast!!
Um dies zu überprüfen, fügen Sie Folgendes hinzu:
Wenn right(FileNamePathPDF,1) = "\" dann
DateinamePfadPDF = DateinamePfadPDF & "\"
Ende, wenn
Sie müssen es vor Ihre Zeile setzen:
Wenn Dir$(DateinamePfadPDF) = "" dann
Nein, Lucas, es ist dasselbe, ich habe es nicht so gemacht, wie du gesagt hast, ich habe es so gemacht.
DateinamePfadPDF = "C:\ANGER\pdf\" & DateinamePDF & "\"
Aber das ändert nichts.
Auf der anderen Seite, wie funktioniert es?
nErrors = SWmoddoc.SaveAs(DateinamePDF) DateinamePDF=045/1-2014-A
Was sollten wir in Klammern haben?
Ich finde es nicht und ich verstehe nicht wirklich, was es im Internet gibt.
Wie oben erwähnt, muss Ihre PDFFileName-Variable die Dateiendung enthalten!
Also für you.pdf
Und vielleicht auch der Weg?
Probieren Sie beides aus.
Ich habe derzeit nicht die Möglichkeit, es zu testen.
Ich habe die 2 ausprobiert, da ich wusste, dass die Variable "FileNamePDF" ursprünglich die Erweiterung hatte, aber sie bleibt gleich, sie speichert sie in dem Ordner, in dem die Datei aktiv ist.
Sie haben also nicht versucht, den Zielpfad (wo Sie ihn speichern möchten) in FileNamePDF aufzunehmen?
Denn ein "Speichern unter" ohne den Pfad speichert es in dem Ordner, in dem sich das Originalteil befindet!
Es wird sein:
nErrors = SWmoddoc.SaveAs(DateinamePfadPDF & DateinamePDF)
Indem Sie sicherstellen, dass zwischen den 2 ein umgekehrter Schrägstrich steht (in der ersten oder der zweiten Variablen spielt es keine Rolle).
Und bei meiner Nachricht von 15:47 ging es um die Erstellung des Ordners, nicht um das Speichern des PDFs:
Juli 15, 2014 - 03:47 PM
Ah, ich glaube, es liegt daran, dass du den Backslash am Ende deines Weges nicht hast!!
Um dies zu überprüfen, fügen Sie Folgendes hinzu:
Wenn right(FileNamePathPDF,1) = "\" dann
DateinamePfadPDF = DateinamePfadPDF & "\"
Ende, wenn
Sie müssen es vor Ihre Zeile setzen:
Wenn Dir$(DateinamePfadPDF) = "" dann
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+
Hallo an Sie,
Also habe ich ein bisschen ausprobiert, was du mir gegeben hast Caronmaxime
So fs
Set fs = CreateObject("Scripting.FileSystemObject")
Wenn fs. FolderExists("c:\A\2014") dann
Aufhören
Ende, wenn
Auf der anderen Seite habe ich meine Registrierungsphase verlassen, indem ich die vollständige Adresse eingegeben habe.
UND ES FUNKTIONIERT !!
Auf der anderen Seite und ja, es gibt nur ein Problem, wenn der Ordner existiert, haben Sie "STOP" markiert, ich muss was markieren, damit der Ordner nicht neu erstellt wird und dass er normal speichert.
Ich füge meinen Code an.
So fs
Set fs = CreateObject("Scripting.FileSystemObject")
Wenn fs. FolderExists(FileNamePathPDF) dann
Aufhören
Ende, wenn
MkDir (DateinamePfadPDF)
'------------------------------------------------------------------
"Prüfen Sie, ob die Datei bereits vorhanden ist, oder bestätigen Sie
"Dann wird die Aufnahme
If Dir$(FileNamePathPDF) = FileNamePDF Then 'Die Datei existiert bereits
Wenn MsgBox("Die Datei: " & DateinamePDF & vbNewLine & " bereits existiert. Wollen Sie ihn ersetzen?", _
vbOKCancel + vbExclamation) = vbOK Dann
nErrors = SWmoddoc.SaveAs(DateinamePfadPDF + DateinamePDF)
Oder
if MsgBox("PDF-Datei wurde nicht erstellt.", vbInformation) = vbOK dann exit sub '-------Nachricht und BEENDEN-------
Ende, wenn
Oder
Wenn msgBox("Datei: " & DateinamePDF & vbNewLine & " wird erstellt", vbOKCancel + vbInformation) = vbOK, dann
nErrors = SWmoddoc.SaveAs(DateinamePfadPDF + DateinamePDF)
Oder
if MsgBox("PDF-Datei wurde nicht erstellt.", vbInformation) = vbOK dann exit sub '-------Nachricht und BEENDEN-------
Ende, wenn
Ende, wenn
Ende Sub
Wir müssen die entgegengesetzte Bedingung testen:
Wenn fs. FolderExists(FileNamePathPDF) dann
Oder
MkDir (DateinamePfadPDF)
Ende, wenn
Perfekt Lucas, es funktioniert!!
VIELEN DANK AN ALLE FÜR IHRE HILFE!!!