Zatrzymywanie makra

Witam

Używamy makra znalezionego na tej stronie, aby zapisać plik pdf i dxf rysunku, połączenie z naszym serwerem jest często bardzo wolne i jesteśmy zmuszeni "zabić" solidworks, aby zatrzymać proces makra, które na próżno próbuje się połączyć, czy można dodać kod, który zatrzyma go po chwili i pozwoli nam przełączyć się z powrotem na Solidworks.

Z góry dziękuję

1 polubienie

Witam

W rzeczywistości zamiast tego musisz poradzić sobie z błędem w swoim kodzie.

Spróbuj użyć metody OpenDoc7 , jak w tym przykładzie. Wtedy poradzisz sobie z każdym błędem.

Nie testowałem...

3 polubienia

Dziękuję za odpowiedź, ale to mi niewiele pomaga, nie jestem na tyle dobry w vb, aby zrobić to sam.
 

 

Oto nasze makro...

 


PDF-DXF.swp

Witam

Zgadzam się z remrem, będziesz musiał poradzić sobie z błędami w swoim kodzie.

Teraz, jeśli chcesz tylko fragment kodu, który pozwoli ci wyjść z makra po pewnym czasie, musisz być w stanie zrobić coś takiego (nie w pełni przetestowane):

Sub main()

Dim ts As Date
Dim tshour1 As Date
Dim tshour2 As Date

ts = Now
tshour1 = DateAdd("s", 20, ts)
tshour2 = Now

Do While True
    If Len(Dir("ton fichier pdf avec chemin")) <> 0 Then
	Exit Do
    End If
    tshour2 = Now
    If DateDiff("s", tshour2, tshour1) <= 0 Then
        Exit Sub
    End If
Loop

End Sub

Ten fragment kodu pozwala wyjść z pętli, jeśli plik pdf istnieje, lub wyjść z makra po 20 sekundach, jeśli plik nie istnieje, oczywiście w celu dostosowania do kodu.

Pozdrowienia

3 polubienia

Witam

Dziękuję bardzo d.roger, właśnie dostosowałem twój kod do naszego makra i wydaje się, że działa,

Aby to przetestować, zmieniłem nazwę katalogu docelowego.

adaptacja wygląda bardziej jak majsterkowanie, ale hej, jeśli działa...

Testuję w realu od kilku dni i jeszcze wrócę na forum.

Do zobaczenia wkrótce

 

Witam
Wielkie rozczarowanie! po próbie z niedostępnym serwerem nie wychodzę z makra...
Może nie wstawiłem kodu d.roger we właściwym miejscu?
Usunąłem jednak część, która sprawdza obecność pliku. Czy ktoś ma jakieś wyjaśnienia, które mógłby mi udzielić?

Pozdrowienia

 

 

Witam

Linie:

Sub main()

Dim ts As Date
Dim tshour1 As Date
Dim tshour2 As Date

ts = Now
tshour1 = DateAdd("s", 20, ts)

Przejdź do początku kodu.

Następnie wiersze:

tshour2 = Now

Do While True
    If Len(Dir("ton fichier pdf avec chemin")) <> 0 Then
	Exit Do
    End If
    tshour2 = Now
    If DateDiff("s", tshour2, tshour1) <= 0 Then
        Exit Sub
    End If
Loop

Idź zaraz po wierszu, w którym zapisujesz plik.

Teraz jest całkiem możliwe, że to nie zadziała, oznacza to, że Twój kod jest wstrzymywany lub błądzi, zanim dotrze do tych wierszy. Co się dzieje i jakie informacje zwrotne otrzymujesz w trybie debugowania, gdy wystąpi problem?

To prowadzi nas z powrotem do początkowej uwagi remrem, z którą całkowicie się zgadzam, będziesz musiał poradzić sobie z błędami w swoim kodzie. Ponieważ metoda "SaveAs2 (IModelDoc2)" jest przestarzała, lepiej byłoby przełączyć się na metodę "SaveAs (IModelDocExtension)" (zobacz tutaj), która pozwala na obsługę określonej liczby błędów poprzez zwroty "swFileSaveError_e Enumeration" i "swFileSaveWarning_e Enumeration" (patrz tutajtutaj). Bądź ostrożny, sposób zapisywania w formacie PDF jest inny i musi przejść przez "ExportPdfData" (patrz przykład tutaj).

Aby poradzić sobie z błędami w vba, możesz również zobaczyć tutaj.

Dla Twojej informacji, makra znajdujące się na tej stronie są na ogół fragmentami kodu, w których zarządzanie błędami nigdy nie jest wykonywane, to od wnioskodawcy zależy, czy ukończy i sprawi, że jego makro będzie niezawodne, w przeciwnym razie może szybko stać się konkretnym opracowaniem specyfikacji, a następnie staje się zadaniem...

Pozdrowienia

 

1 polubienie