Makro umożliwiające konwersję SLDDRW do formatu PDF/DWG z polem wyboru i parametrem userfrom

Cze wszystkim

Obecnie modyfikuję istniejące makro, aby dostosowywało się do moich ograniczeń.

Istniejące makro umożliwia konwersję pliku SLDDRW do formatu PDF i DXF z wyborem folderu źródłowego i docelowego oraz zmianą nazwy po rewizji planu.

Krótki...

W moim przypadku chciałbym przekonwertować do formatu PDF i DWG nie martwiąc się o wersję, ale żebyśmy mieli wybór (np. pole wyboru między PDF a DWG.

Udało mi się wprowadzić kilka zmian (np. usunąć wszystko, co jest związane z wersją) i zmodyfikować DXF do DWG oraz wstawić moje chexboxy do Userfrom.

Ale z drugiej strony mam problem z kodowaniem pól wyboru (wiedząc, że nie mam dużo butelki w VBA, próbowałem czegoś, ale hej).

Masz pomysł?

Dziękuję :)

Oto część kodu:

Prywatny Sub FiltreBox_Change()
StartConvert.Enabled = Fałsz
TextSource.Caption = "Sprawdź poprawność katalogu źródłowego"
TextSource.ForeColor = RGB(255, 0, 0)
OkSource = Fałsz
CheckSource.Enabled = Prawda
Koniec subwoofera


Prywatny Sub SourceBox_Change()
StartConvert.Enabled = Fałsz
TextSource.Caption = "Sprawdź poprawność katalogu źródłowego"
TextSource.ForeColor = RGB(255, 0, 0)
OkSource = Fałsz
CheckSource.Enabled = Prawda
Koniec subwoofera
Prywatny Sub CheckBox1_Click()

Koniec subwoofera

Prywatna subskrypcja CheckBox2_Click()

Koniec subwoofera

Prywatny Sub StartConvert_Click()
Ustaw swApp = Application.SldWorks

TimeDebut = Zegar
NumerPlikuDocelowego = 0
NazwaPliku = Dir(PathDepart & FilterBox.Value & ". SLDDRW")
' Rozpoczyna pętlę

Wykonaj while FileName<> ""
NumerPlikuDocelowego = Numer PlikuDocelowego + 1
Advance.Caption = "Przetwarzanie pliku" & NumerPliku docelowego &" / " & Numer źródła pliku & " : " & Nazwa pliku
Zapisz katalog.Repaint
FileNameWithoutExtension = Left(NazwaPliku, Len(NazwaPliku) - 7)
Otwieranie pliku
Ustaw część = swApp.OpenDoc6(PathDepart & FileName, 3, 0, "", longstatus, longwarnings)
swApp.OpenDoc6 PathDepartir & FileName, 3, 0, "", longstatus, longwarnings
Ustaw część = swApp.ActivateDoc2(nazwa_pliku, fałsz, longstatus)
Ustaw swCustPrpMgr = Part.Extension.CustomPropertyManager("")
Tworzenie pliku pdf
Jeśli CheckBox1.Value = Prawda, to
Part.Extension.SaveAs PathArrival & FileNameWithoutExtension & ".pdf", 0, 0, Nothing, longstatus, longwarnings
Zakończ jeżeli:
'Tworzenie pliku dwg
Jeśli CheckBox1.Value = Prawda, to
Part.Extension.SaveAs PathArrivee & FileNameWithoutExtension & ".dwg", 0, 0, Nothing, longstatus, longwarnings
Zakończ jeżeli:
"Zamknięcie planu
Ustaw część = Nic
swApp.CloseDoc Nazwa pliku

FileName = Dir ' Pobiera następujący wpis.
Pętla

StartConvert.Enabled = Fałsz
TimeFin = Zegar

Progress.Caption = "Operacja zakończona." & DestinationFileNumber & " / " & FileSourceNumber&" plik(i) przetworzony. Czas, który upłynął: " & TimeSerial(0, 0, TimeFin - TimeDebut)

 

Koniec subwoofera

Prywatny Sub UserForm_Initialize()
OkSource = Fałsz
OkSource = Fałsz
StartConvert.Enabled = Fałsz
FiltreBox.Value = "*"
TextSource.Caption = "Wprowadź i zweryfikuj katalog źródłowy"
TextSource.ForeColor = RGB(255, 0, 0)
TextDestination.Caption = "Wprowadź i zatwierdź katalog docelowy"
TextDestination.ForeColor = RGB(255, 0, 0)
SourceBox.Value = "Z:\oferty"
DestinationBox.Value = "Z:\oferty"
Advancement.Caption = ""
Koniec subwoofera

Witam

Określ role pól CheckBox1 i CheckBox2 oraz to, co chcesz z nimi zrobić.

Zasada działania pola wyboru:

Ma właściwość Value, która waha się między True i False.

Aby skorzystać z tej zmiany, należy użyć zdarzenia Click.

Przykład:

Prywatny Sub CheckBox1_Click()
     Jeśli CheckBox1.Value = Prawda, to
          MsgBox ("Akcja tak prawdziwa")
     ElseIf CheckBox1.Value = Fałsz Następnie
          MsgBox ("Akcja, jeśli jest fałszywa")
     Zakończ jeżeli:

Koniec subwoofera

 

3 polubienia

Dobra, dziękuję,

Zamierzam spróbować. Będę Was informować na bieżąco ;)

 

1 polubienie

To działa, to jest świetne!

Jeszcze jedno,

Chciałbym umieścić błąd msgbox, jeśli nie jest zaznaczone żadne pole wyboru.

Pomyślałam, że napiszę tak:

Sub msgbox()
Jeśli CheckBox1.Value = Fałsz, to
ElseIf CheckBox2.Value = Fałsz Następnie
Wybierz wielkość liter msgbox("Proszę wybrać konwersję!", vbExquitation, "Błąd konwersji")
Koniec subwoofera

1 polubienie

Dla Twojego kodu:

Sub msgbox()
     Jeśli CheckBox1.Value = False i CheckBox2.Value = False, to
          Msgbox("Proszę wybrać konwersję!", vbExclamation, "Błąd konwersji")
     Zakończ jeżeli:
Koniec subwoofera

 

Ale w programowaniu, jeśli to możliwe, zawsze lepiej nie pozwolić użytkownikowi na zrobienie czegoś głupiego, zamiast mówić mu,  że to zrobił.

Dlatego wydaje mi się, że masz przycisk w swoim formularzu użytkownika, który rozpoczyna konwersję. Wyobraźmy sobie, że wyznaczyłeś go na Bouton_Lancement.

Private Sub CheckBox1_Click() 'Ten sub już istnieje, więc dodaj poniższy kod

     Jeśli CheckBox1.Value = False i CheckBox2.Value = False, to
          Bouton_Lancement.Visible = Fałsz    
     W przeciwnym razie, jeśli CheckBox1.Value = True Or CheckBox2.Value =  True Then
          Bouton_Lancement.Visible = Prawda
     Zakończ jeżeli:

Koniec subwoofera

Następnie zrób to samo z funkcją zdarzenia CheckBox2_Click

Ten kod pozwoli ci sprawić, że przycisk uruchamiania będzie niewidoczny, więc nie będzie można kontynuować. Nie będzie więc konieczne upominywanie użytkownika ;-)

Mam nadzieję, że ci pomogłem.

3 polubienia

Witam

Czy masz link do pobrania podstawowego makra? 

Z góry dziękuję

Dziękuję za odpowiedź,

Przyjrzę się temu i powiem ci, czy to działa.

 

RazFlash: Szukam go i jeśli go znajdę, podam ci link.

Daje mi błąd, kiedy stawiam drugie rozwiązanie.

"Błąd kompilacji:

Ta instrukcja musi być pierwsza w linii"

wiersz -> "Else If CheckBox1.Value = True or CheckBox2.Value =  True Then" jest napisany na czerwono

Razflash:

Nie mogłem znaleźć oryginalnego linku...

Ale mam oryginalny plik.

Załączyłem go.


savediraspdf_v1.1.zip

Błąd spacji:

Private Sub CheckBox1_Click() 'Ten sub już istnieje, więc dodaj poniższy kod

     Jeśli CheckBox1.Value = False i CheckBox2.Value = False, to
          Bouton_Lancement.Visible = Fałsz    
     ElseIf CheckBox1.Value = True Or CheckBox2.Value =  True Then
          Bouton_Lancement.Visible = Prawda
     Zakończ jeżeli:

Koniec subwoofera

Dzięki za plik! 

DSL zwrotu.

 

Dziękuję, działa bardzo dobrze.

 

Będę miał jeszcze inne zmiany do wprowadzenia, myślę, że szczególnie na poziomie folderu źródłowego i pliku docelowego, gdzie chciałbym mieć przycisk przeglądania zamiast wklejania linku, ale zrobię to później.

 

Dziękuję remrem.

Witam

Ale nie ma za co...

Zachęcamy do zadawania dodatkowych pytań dotyczących ulepszeń.

Miłego dnia.