Wprowadziłem zmiany, ale nadal działa tak samo, a kiedy uruchamiam go ponownie tutaj lub działa błędy!
sans_titre.png
Wprowadziłem zmiany, ale nadal działa tak samo, a kiedy uruchamiam go ponownie tutaj lub działa błędy!
Ach, myślę, że to dlatego, że nie masz ukośnika odwrotnego na końcu swojej ścieżki!!
Aby to sprawdzić, dodaj to:
Jeśli right(FileNamePathPDF,1) = "\" to
FileNamePathPDF = FileNamePathPDF & "\"
Zakończ się, jeśli
Musisz umieścić go przed swoją linią:
Jeśli Dir$(FileNamePathPDF) = "" Następnie
Nie, lucas, to jest to samo, nie zrobiłem tego tak, jak powiedziałeś, zrobiłem to w ten sposób.
FileNamePathPDF = "C:\GNIEW\pdf\" & FileNamePDF & "\"
Ale to niczego nie zmienia.
Z drugiej strony, jak to działa?
nErrors = SWmoddoc.SaveAs(NazwaPlikuPDF) NazwaPlikuPDF=045/1-2014-A
Co powinniśmy mieć w nawiasach?
Nie znajduję go i tak naprawdę nie rozumiem, co jest w internecie.
Jak wspomniano powyżej, zmienna PDFFileName musi zawierać rozszerzenie pliku!
Tak więc dla you.pdf
A może ścieżka też?
Wypróbuj jedno i drugie.
Obecnie nie mam możliwości przetestowania tego.
Próbowałem 2, wiedząc, że zmienna "FileNamePDF" ma pierwotnie rozszerzenie, ale pozostaje takie samo, zapisuje je w folderze, w którym plik jest aktywny.
Więc nie próbowałeś dołączyć ścieżki docelowej (miejsca, w którym chcesz ją zapisać) w FileNamePDF?
Ponieważ opcja "zapisz jako" bez ścieżki zapisuje ją w folderze, w którym znajduje się oryginalna część!
Będzie to:
nErrors = SWmoddoc.SaveAs(FileNamePathPDF & FileNamePDF)
Upewniając się, że między 2 znajduje się odwrotny ukośnik (w pierwszej zmiennej lub drugiej, nie ma to znaczenia).
A w mojej wiadomości z 15:47 chodziło o utworzenie folderu, a nie o zapisanie PDF-a:
lipiec 15, 2014 - 03:47 PM
Ach, myślę, że to dlatego, że nie masz ukośnika odwrotnego na końcu swojej ścieżki!!
Aby to sprawdzić, dodaj to:
Jeśli right(FileNamePathPDF,1) = "\" to
FileNamePathPDF = FileNamePathPDF & "\"
Zakończ się, jeśli
Musisz umieścić go przed swoją linią:
Jeśli Dir$(FileNamePathPDF) = "" Następnie
re re re re re
Obawiam się, że będę nalegał, ale rada Fgirarda jest taka, aby postępować zgodnie z [Scripting.FileSystemObject], jak i [Zapisz jako].
Cóż, teraz możemy upierać się przy używaniu Dir, ale musimy zrobić z bestii niezły bałagan, dokonać rozróżnienia między plikami a folderami !!
Twój fragment kodu:
'Sprawdź, czy folder z rokiem istnieje, jeśli nie, utwórz go
Jeśli Dir(PathFileNamePDF) = "" Następnie
MkDir NazwaPlikuŚcieżkiPDF, ŚcieżkaPlikuPDF
Zakończ jeżeli:
Tłumaczę: Jeśli pod adresem [PathFileNamePDF] nie ma pliku , wywołaj MkDir, aby utworzyć ostatni podfolder zawarty w adresie [PathFileNamePDF].
Twój test nie jest właściwy, więc MkDir może ulec awarii, jeśli istnieje ostatni podfolder adresu (błąd wykonania 75).
MkDir ulega również awarii, jeśli przedostatni podfolder adresu nie istnieje (błąd wykonania 76).
MkDir ulega awarii również wtedy, gdy dysk, na przykład [R:] nie jest dostępny, jeśli ...
Z drugiej strony, MkDir jest niewrażliwy na to, czy na końcu adresu znajduje się [\].
nieznacznie zmodyfikowany program z pomocy VBA (wybierz Dir i naciśnij F1, aby uzyskać pomoc):
' Wyświetla w oknie wykonywania (Ctrl+G) nazwy folderów znajdujących się w [C:\A\]
' i jeśli jedna z tych nazw folderów to "2014", program zatrzymuje się
Dim MyFile, MyPath, MyName
MyPath = "C:\A\" ' Definiuje ścieżkę.
MyName = Dir(MyPath, vbDirectory) ' Pobiera pierwszy wpis.
Do While MyName <> "" ' Uruchamia pętlę.
' Ignoruje bieżący folder i
' zawierający bieżący folder.
Jeśli mojaNazwa<> "." i MojaNazwa<> ".. " Następnie
' Używa porównania poziomu bitów w celu sprawdzenia, czy kolumna MojaNazwajest folderem.
Jeśli (GetAttr(MojaŚcieżka & MojaNazwa) I vbDirectory) = vbDirectory Then
Debug.Print MyName ' Wyświetla wpis tylko wtedy, gdy reprezentuje folder.
Jeśli MojaNazwa="2014", Zatrzymaj folder "2014", który istnieje!!
Zakończ jeżeli:
Zakończ jeżeli:
MyName = Dir ' Pobiera następujący wpis.
Pętla
ten fragment kodu jest korzystnie zastępowany przez (patrz uwagi Fgirarda):
Dim oFSO As Scripting.FileSystemObject
Dim oFld As Folder (Folder przyćmij jako folder)
Set oFSO = New Scripting.FileSystemObject
Jeśli oFSO.FolderExists(" "c:\A\2014") = True Then
Zatrzymać
Zakończ jeżeli:
Albo jeszcze prostsze i niezaskakujące
Słońce fs
Ustaw fs = CreateObject("Scripting.FileSystemObject")
Jeśli fs. FolderExists("c:\A\2014") następnie
Zatrzymać
Zakończ jeżeli:
Dopiero się okaże dla twojego [Zapisz]
Właśnie spróbowałem tego:
Dim swApp jako SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sun Rep jako wartość logiczna
Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc
Dir = swModel.SaveAs("C:\A\toto.pdf") ' " C:\A" powinien istnieć, jeśli istnieje "toto.pdf", zostanie automatycznie nadpisany
I działa to bardzo dobrze. >> Podczas debugowania zacznij od tekstu w nawiasach (tutaj "C:\A\toto.pdf"). Jeśli to zadziała, Dir zwraca wartość True. Następnie możesz spróbować zastąpić swój tekst zmienną (w tym przypadku zmienną zadeklarowaną jako ciąg znaków).
Klasa A+
Witam Państwa,
Więc spróbowałem trochę tego, co mi dałeś Caronmaxime
Słońce fs
Ustaw fs = CreateObject("Scripting.FileSystemObject")
Jeśli fs. FolderExists("c:\A\2014") następnie
Zatrzymać
Zakończ jeżeli:
Z drugiej strony wyszedłem z fazy rejestracji, podając pełny adres.
I DZIAŁA !!
z drugiej strony i tak jest tylko problem, jeśli folder istnieje, masz zaznaczony "STOP" muszę zaznaczyć co, aby nie odtworzył folderu i aby zapisywał się normalnie.
Załączam swój kod.
Słońce fs
Ustaw fs = CreateObject("Scripting.FileSystemObject")
Jeśli fs. FolderExists(FileNamePathPDF) Następnie
Zatrzymać
Zakończ jeżeli:
MkDir (NazwaPlikuPDF)
'------------------------------------------------------------------
"Sprawdź, czy plik już istnieje, lub potwierdź
"Następnie nagrywanie
Jeśli Dir$(FileNamePathPDF) = FileNamePDF, to 'Plik już istnieje
Jeśli MsgBox("Plik: " & NazwaPlikuPDF & vbNewLine & " już istnieje. Czy chcesz go zastąpić?", _
vbOKCancel + vbWykrzyknik) = vbOK Następnie
nErrors = SWmoddoc.SaveAs(ŚcieżkaNazwyPlikuPDF + NazwaPlikuPDF)
Inaczej
Jeśli MsgBox("Plik PDF nie został utworzony.", vbInformation) = vbOK Następnie wyjdź z sub '-------Message i EXIT-------
Zakończ jeżeli:
Inaczej
Jeśli MsgBox("Plik: " & NazwaPlikuPDF & vbNewLine & " zostanie utworzony", vbOKCancel + vbInformation) = vbOK to
nErrors = SWmoddoc.SaveAs(ŚcieżkaNazwyPlikuPDF + NazwaPlikuPDF)
Inaczej
Jeśli MsgBox("Plik PDF nie został utworzony.", vbInformation) = vbOK Następnie wyjdź z sub '-------Message i EXIT-------
Zakończ jeżeli:
Zakończ jeżeli:
Koniec subwoofera
Musimy przetestować odwrotny warunek:
Jeśli fs. FolderExists(FileNamePathPDF) Następnie
Inaczej
MkDir (NazwaPlikuPDF)
Zakończ jeżeli:
Idealny Lucas, to działa!!
DZIĘKUJĘ WSZYSTKIM ZA POMOC!!!