Pytanie dotyczące mojego makra

Zmodyfikowałem zmienną w SWmoddoc.SaveAs(PathFileNamePDF), umieściłem pełny adres z plikiem, to nie zadziałało, po prostu umieściłem nazwę pliku pdf i tworzy go dla mnie w tym samym folderze co slddrw, i coś innego, jeśli folder, w którym chcę zapisać pdf, już istnieje, Ten błąd, czy ktoś może mi pomóc zrozumieć, oto tekst mojego makra.


sans_titre.png

Witam

 

Myślę, że błąd pochodzi ze zmiennej "PathPDFfileName" w tym poleceniu:

nErrors = SWmoddoc.SaveAs(FileNamePathPDF)

 

Kiedy zapisujesz za pomocą polecenia "Zapisz jako", musisz podać pełną nazwę pliku jako argument, Z rozszerzeniem (.pdf w Twoim przypadku).

 

Pozdrowienia.

 

Franck.

Widziałem to po Lucasie, zmodyfikowałem to, ale nadal nie działa.

Fgirard, też to widziałem, zmodyfikowałem, ale nadal nie działa do końca.

Aby zapoznać się z punktami przerwania, spójrz na link, który umieściłem powyżej:

http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html

 

Wyjaśniono kilka sposobów debugowania kodu, w tym punkty przerwania.

 

1 polubienie

Jeśli to nadal nie zadziała, dodaj szpiegów, jak pokazano poniżej:

http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html

 

A jakie są wartości zmiennych:

NazwaPlikPDF 

PlikNazwa_ścieżkiPDF

 

 

Gdzie kończy się Twoje makro?

1 polubienie

Ponownie

 

Aby przetestować > makra w edytorze równań, kliknij "Widok", "Okno zmiennej lokalnej" > zobacz załącznik


editeur_de_macro_fenetre_variables_locales.png
2 polubienia

Nasze posty się przecinają, przepraszamy.

 

Dziwne jest, że "Zapisz jako" nie działa poprawnie z pełną nazwą pliku (ścieżka+nazwa+rozszerzenie).

To samo dotyczy błędu z folderem, który już istnieje.

 

Spróbuj użyć polecenia "Zapisz jako" dla ModelDocExtension. To jest ten, którego używam w moich makrach.

Oto jak to zgłosić:

   Dim SWmodext jako SldWorks.ModelDocExtension

   Dim swExportPDFData     As SldWorks.ExportPdfData

Błędy              przyciemnienia tak długo   
Ostrzeżenia o przyciemnieniu            tak długo   

i jak to wpłynąć:

   Ustaw SWmodext = SWmoddoc.Extension

wtedy:

   nErrors = SWmodext.SaveAs(FileNamePathPDF, 0, 0, swExportPDFData, Błędy, Ostrzeżenia)

 

 

 

Do zarządzania folderami używam FileSystemObject:

Dim oFSO                As Scripting.FileSystemObject   
Dim oFld                  As Folder (Folder przyćmij jako folder)   

 

   Set oFSO = New Scripting.FileSystemObject

 

   Jeśli oFSO.FolderExists(FileNamePathPDF) = False, to
        Set oFld = oFSO.CreateFolder(FileNamePathPDF)
    Zakończ jeżeli:

2 polubienia

 Dziękuję caronmaxime, bardzo przydatne to okno!

 

Tak więc w twoim oknie moje zmienne mają wartość, którą chcę im nadać, ale nie działa to tak, jak chcę.

 

utworzy dla mnie plik 2014, z drugiej strony, jeśli plik już istnieje, zatrzymuje się na linii Mkdir (1. punkt, którego nie rozumiem)

 

i tworzy dla mnie plik pdf, ale z drugiej strony w tym samym folderze co aktywny plik, kiedy powinien go umieścić w folderze 2014 (2. punkt, którego nie rozumiem)

 

POMOC!!

1 polubienie

Czy błąd nie wynikałby z faktu, że testujesz folder i tworzysz inny?

 

Jeśli Dir$(FileNamePathPDF) = "" Następnie
MkDir NazwaPlikuPDF

Zakończ się, jeśli

 

PathFileNamePDF czy powinien być tutaj użyty 2 razy, prawda? Raz dla testu Dir$ i raz dla MkDir?

3 polubienia

re re re

 

Mathieu, moim zdaniem twój   [ MkDir  FileNamePDF]  powinien zostać zastąpiony przez    [ MkDir FileNamePathPDF]

 

W edytorze makr możesz kliknąć dwukrotnie słowo kluczowe MkDir, aby je zaznaczyć, a następnie nacisnąć F1. Pomoc pozwoli ci zrozumieć.

Z drugiej strony, w Kościele

 

dokonać podsumowania, biorąc pod uwagę doskonałe rekomendacje Fgirarda, a może spojrzeć na pytanie "moje makro PDF DXF, co powiedzieć? ", który opublikowałem.

 

W przeciwnym razie postępuję w ten sposób (patrz załącznik) debugowanie makra, gdy tworzy ono foldery lub pliki


capture_decran_sw_et_editeur_sw_et_explorer_windows.png

Wprowadziłem zmiany, ale nadal działa tak samo, a kiedy uruchamiam go ponownie tutaj lub działa błędy!

 

 


sans_titre.png

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

1 polubienie

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.

1 polubienie

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ęść!

 

 

1 polubienie

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).

1 polubienie

A w mojej wiadomości z 15:47 chodziło o utworzenie folderu, a nie o zapisanie PDF-a:

 

Łukasz P

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

1 polubienie