Makro, das die SLDDRW-Konvertierung in PDF/DWG mit Kontrollkästchen und userfrom ermöglicht

Hallo ihr alle

Ich ändere derzeit ein vorhandenes Makro so, dass es sich an meine Einschränkungen anpasst.

Das vorhandene Makro ermöglicht die Konvertierung der SLDDRW-Datei in PDF und DXF mit der Wahl des Quell- und Zielordners und der Änderung des Namens nach der Überarbeitung des Plans.

Kurz...

In meinem Fall möchte ich in PDF und DWG konvertieren, ohne mir Gedanken über die Überarbeitung machen zu müssen, aber wir haben die Wahl (wie Kontrollkästchen zwischen PDF und DWG.

Ich habe es geschafft, einige Änderungen vorzunehmen (wie das Entfernen von allem, was mit der Revision zusammenhängt) und DXF in DWG zu ändern und meine Chexboxen in den Userfrom einzufügen.

Aber auf der anderen Seite habe ich für die Codierung der Kontrollkästchen ein Problem (da ich weiß, dass ich nicht viel Flasche in VBA habe, habe ich etwas versucht, aber hey).

Haben Sie eine Idee?

Danke:)

Hier ist ein Teil des Codes:

Privates Sub FiltreBox_Change()
StartConvert.Enabled = Falsch
TextSource.Caption = "Quellverzeichnis validieren"
TextSource.ForeColor = RGB(255, 0, 0)
OkSource = Falsch
CheckSource.Enabled = Wahr
Ende Sub


Privater Sub-SourceBox_Change()
StartConvert.Enabled = Falsch
TextSource.Caption = "Quellverzeichnis validieren"
TextSource.ForeColor = RGB(255, 0, 0)
OkSource = Falsch
CheckSource.Enabled = Wahr
Ende Sub
Privater Sub CheckBox1_Click()

Ende Sub

Privates Sub CheckBox2_Click()

Ende Sub

Privater Sub StartConvert_Click()
Legen Sie swApp = Application.SldWorks fest

TimeDebut = Timer
ZieldateiNummer = 0
Dateiname = Verzeichnis(PfadDepart & FilterBox.Wert & ". SLDDRW")
' Beginnt die Schleife

Während Dateiname<> ""
DestinationFileNumber = DestinationFileNumber + 1
Advance.Caption = "Datei wird verarbeitet" & ZielDateiNummer &" / " & DateiQuellnummer & " : " & Dateiname
SpeichernDir.Neu malen
DateinameWithoutExtension = Links(Dateiname, Len(Dateiname) - 7)
Öffnen der Datei
Set Part = swApp.OpenDoc6(PathDepart & FileName, 3, 0, "", longstatus, longwarnings)
swApp.OpenDoc6 PathDepartir & FileName, 3, 0, "", longstatus, longwarnings
Set Part = swApp.ActivateDoc2(Dateiname, False, longstatus)
Set swCustPrpMgr = Part.Extension.CustomPropertyManager("")
Erstellung der pdf-Datei
Wenn CheckBox1.Value = true, dann
Part.Extension.SaveAs PathArrival & FileNameWithoutExtension & ".pdf", 0, 0, Nothing, longstatus, longwarnings
Ende, wenn
'Erstellen der dwg-Datei
Wenn CheckBox1.Value = true, dann
Part.Extension.SaveAs PathArrivee & FileNameWithoutExtension & ".dwg", 0, 0, Nothing, longstatus, longwarnings
Ende, wenn
"Abschluss des Plans
Set Part = Nichts
swApp.CloseDoc Dateiname

FileName = Dir ' Ruft den folgenden Eintrag ab.
Schleife

StartConvert.Enabled = Falsch
TimeFin = Zeitgeber

Progress.Caption = "Vorgang abgeschlossen." & DestinationFileNumber & " / " & FileSourceNumber&" Datei(en) verarbeitet. Verstrichene Zeit: " & TimeSerial(0, 0, TimeFin - TimeDebut)

 

Ende Sub

Privates Sub UserForm_Initialize()
OkSource = Falsch
OkSource = Falsch
StartConvert.Enabled = Falsch
FiltreBox.Wert = "*"
TextSource.Caption = "Einführung und Validierung des Quellverzeichnisses"
TextSource.ForeColor = RGB(255, 0, 0)
TextDestination.Caption = "Geben Sie das Zielverzeichnis ein und bestätigen Sie es"
TextDestination.ForeColor = RGB(255; 0, 0)
SourceBox.Value = "Z:\Angebote"
DestinationBox.Value = "Z:\Angebote"
Advancement.Caption = ""
Ende Sub

Hallo

Geben Sie die Rollen von CheckBox1 und CheckBox2 an und was Sie mit ihnen tun möchten.

Das Funktionsprinzip eines Kontrollkästchens:

Sie verfügt über eine Value-Eigenschaft, die zwischen True und False variiert.

Um diese Änderung zu verwenden, müssen Sie das Click-Ereignis verwenden.

Beispiel:

Privater Sub CheckBox1_Click()
     Wenn CheckBox1.Value = true, dann
          MsgBox ("Aktion so wahr")
     ElseIf CheckBox1.Value = False, dann
          MsgBox ("Aktion, wenn falsch")
     Ende, wenn

Ende Sub

 

3 „Gefällt mir“

Okay, danke,

Ich werde es versuchen. Ich halte euch auf dem Laufenden ;)

 

1 „Gefällt mir“

Es funktioniert, es ist großartig!

und noch etwas,

Ich möchte eine Fehlermeldung setzen, wenn kein Kontrollkästchen aktiviert ist.

Ich dachte, ich schreibe das:

Sub msgbox()
Wenn CheckBox1.Value = false, dann
ElseIf CheckBox2.Value = False, dann
Select Case msgbox("Bitte wählen Sie eine Konvertierung aus!", vbExclamation, "Konvertierungsfehler")
Ende Sub

1 „Gefällt mir“

Für Ihren Code:

Sub msgbox()
     Wenn CheckBox1.Value = false und CheckBox2.Value = false, dann
          Msgbox("Bitte wählen Sie eine Konvertierung aus!", vbExclamation, "Fehler bei der Konvertierung")
     Ende, wenn
Ende Sub

 

Aber beim Programmieren ist es, wenn möglich, immer besser, dem Benutzer nicht zu erlauben, etwas Dummes zu tun,  anstatt ihm zu sagen, dass er etwas getan hat.

Deshalb glaube ich, dass du in deinem Userform einen Button hast, der die Conversion startet. Stellen wir uns vor, Sie haben ihn zum Bouton_Lancement ernannt.

Private Sub CheckBox1_Click() 'Dieses Sub existiert bereits, also füge den folgenden Code hinzu

     Wenn CheckBox1.Value = false und CheckBox2.Value = false, dann
          Bouton_Lancement.Visible = Falsch    
     Else if CheckBox1.Value = true oder CheckBox2.Value =  true, dann
          Bouton_Lancement.Sichtbar = Wahr
     Ende, wenn

Ende Sub

Machen Sie dann dasselbe mit der Funktion des Ereignisses CheckBox2_Click

Mit diesem Code können Sie die Startschaltfläche unsichtbar machen, sodass Sie nicht fortfahren können. Es wird daher nicht nötig sein, den Benutzer zu tadeln ;-)

In der Hoffnung, Ihnen geholfen zu haben.

3 „Gefällt mir“

Hallo

Haben Sie bitte den Link zum Herunterladen des Basismakros? 

Vielen Dank im Voraus

Vielen Dank für Ihre Antwort,

Ich schaue es mir an und sage Ihnen, ob es funktioniert.

 

RazFlash: Ich bin auf der Suche danach und wenn ich es finde, gebe ich dir den Link.

Er gibt mir einen Fehler, wenn ich die zweite Lösung vorschlage.

"Kompilierungsfehler:

Diese Anweisung muss die erste in der Zeile sein."

die ->-Zeile "Else If CheckBox1.Value = True or CheckBox2.Value =  True Then" wird rot geschrieben

Razflash:

Ich konnte den ursprünglichen Link nicht finden...

Aber ich habe die Originaldatei.

Ich habe es beigefügt.


savediraspdf_v1.1.zip

Leerzeichen-Fehler:

Private Sub CheckBox1_Click() 'Dieses Sub existiert bereits, also füge den folgenden Code hinzu

     Wenn CheckBox1.Value = false und CheckBox2.Value = false, dann
          Bouton_Lancement.Visible = Falsch    
     ElseIf CheckBox1.Value = True oder CheckBox2.Value =  True, dann
          Bouton_Lancement.Sichtbar = Wahr
     Ende, wenn

Ende Sub

Danke für die Datei! 

Dsl der Rücksendung.

 

Vielen Dank, es funktioniert sehr gut.

 

Ich denke, ich werde noch andere Änderungen vornehmen müssen, insbesondere auf der Ebene des Quellordners und der Zieldatei, wo ich eine Schaltfläche zum Durchsuchen haben möchte, anstatt den Link einzufügen, aber ich werde es später tun.

 

Vielen Dank, Remrem.

Hallo

Aber gerne...

Fühlen Sie sich frei, weitere Fragen zu Ihren Verbesserungen zu stellen.

Schönen Tag.