Vraag over mijn macro

Hallo

 

Ik heb een macro gemaakt met behulp van wat ik heb gevonden, het moet mijn MEP converteren naar pdf en deze opslaan in de map van het jaar waarin deze is gemaakt, als de map niet bestaat, maakt u deze aan.

 

Daar is ze dan:

 

Dim swApp als object

 

Deel dimmen als object

Dim FileNamePDF als tekenreeks

 

Sub hoofd()

Dim swApp als SldWorks.SldWorks

Dim SWmoddoc als SldWorks.ModelDoc2

Zon NumberPlan Als String

Dim PathFile als tekenreeks

Dim Bestandsnaam Als String

Dim NumberLeaf als snaar

Dim FileNamePDF als tekenreeks

Dim PathFileNamePDF als tekenreeks

Dim NameFolderPDF als tekenreeks

Dim nErrors             zo lang

Dim nWaarschuwingen           zo lang mogelijk

Stel swApp = Toepassing.SldWorks in

Stel SWmoddoc = swApp.ActiveDoc in

 

'Het pad en de bestandsnaam ophalen

Voorbeeld: \\MERCURE\Sharing\xMethods\Public\DAO\Solidworks\2 - tekening\2014\046-1-2014-A.SLDDRW

PathName = SWmoddoc.GetPathName

FilePath = Left(PathName, InStrRev(PathName, "\")) '\\MERCURY\Sharing\xMethods\Public\DAO\Solidworks\2 - Tekening\2014\

FileName = Right(PathName, Len(PathName) - InStrRev(PathName, "\")) '046-1-2014-A.SLDDRW

FileNamePDF = Right(Bestandsnaam, 13) '2014-A.SLDDRW

FileNamePDF = Links(BestandsnaamPDF, 4) '2014

FileNamePathPDF = "\\MERCURY\Sharing\xMethods\Public\DAO\PDF Plans\" & FolderNamePDF '\\MERCURY\Sharing\xMethods\Public\DAO\PDF Plans\2014\

 

'------------------------------------------------------------------

'Aangepaste eigenschappen ophalen uit het planbestand

 

Als SWmoddoc.GetType = swDocDRAWING Controleer dan of we ons op een planbestand bevinden

    FileNamePDF = Vervangen(Bestandsnaam, "SLDDRW", "pdf")

Einde als

 

'------------------------------------------------------------------

'Test of de map met het jaartal bestaat, zo niet, maak deze aan

 

    Als Dir$(FileNamePathPDF) = "" dan

        MkDir "FileNamePDF"

       Einde als

'------------------------------------------------------------------

'Test of het bestand al bestaat of bevestig

'en dan opnemen

 

    Als Dir$(FileNamePathPDF) = FileNamePDF Dan bestaat 'Het bestand bestaat al'

        Als MsgBox ("Het bestand: " & FileNamePDF & vbNewLine & " al bestaat. Wil je hem vervangen?", _

         vbOKCancel + vbUitroep) = vbOK Dan

            nErrors = SWmoddoc.SaveAs(FileNamePathPDF)

        Anders

            Als msgBox("PDF-bestand is niet gemaakt.", vbInformation) = vbOK sluit dan Sub '-------bericht en EXIT-------

        Einde als

    Anders

        Als msgbox("Bestand: " & FileNamePDF & vbNewLine & " gaat worden aangemaakt", vbOKCancel + vbInformation) = vbOK dan

            nErrors = SWmoddoc.SaveAs(FileNamePathPDF)

        Anders

            Als msgBox("PDF-bestand is niet gemaakt.", vbInformation) = vbOK sluit dan Sub '-------bericht en EXIT-------

        Einde als

    Einde als

    

 

 

Einde Sub

 

 

Ik weet niet hoe ik het moet testen en ik zou graag willen weten voordat ik het start of ik niet iets stoms heb gedaan, omdat het speelt met de mappen van het netwerk van mijn bedrijf.

 

Bij voorbaat dank.

Hallo

 

Om een macro te testen, kunt u het beste een breekpunt aan het begin plaatsen en vervolgens op F8 drukken om regel voor regel verder te gaan.

Het kan ook interessant zijn om spionnen op de belangrijke variabelen te zetten.

 

 

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

1 like

De debug.print instructie stelt je in staat om de inhoud van een variabele weer te geven in het uitvoeringsvenster (dat je weer geeft met CTRL G denk ik).

 

Wanneer ik mijn macro's test, verander ik de bestandspaden in lokale paden, waardoor ik kan controleren zonder het netwerk te gebruiken.

2 likes

Ik veranderde het pad om te testen.

 

Dus hij maakt de map voor mij die niet bestaat, aan de andere kant maakt hij het pdf-bestand niet, wist je dat of het kan crashen omdat de macro niet crasht.

Je moet je voorwaarden controleren.

 

Maak een stop op de lijn

 

nErrors = SWmoddoc.SaveAs(FileNamePathPDF)

 

Stopt het programma daar?

 

Zo nee, zijn alle voorwaarden in orde? U kunt dit controleren bij spionnen of debuggen.print

1 like

Hallo allemaal,

 

Om een macro te testen, is het het beste om aan het begin een breekpunt in te stellen en vervolgens op F8 te drukken om regel voor regel vooruit te gaan, zoals Lucas P zegt. Een andere oplossing is om de menubalk 'Debug' in te schakelen, of beter nog, de macro-editor aan te passen door de knop 'Gedetailleerde stap' (') voor de knop 'Uitvoeren' () op de standaardwerkbalk te plaatsen om niet overbelast te raken. > modus operandi > zie bijlage.

Anders kunt u in de macro-editor met het lokale venster "Weergave" de waarden van alle variabelen bekijken wanneer de macro wordt uitgevoerd.

 

 

Fijne dag.


personnaliser_lediteur_de_macro.png

Sorry, ik begrijp niet wat je me vraagt te doen, aan de andere kant, zoals ik je vertelde, maakt het de map aan als deze niet bestaat en het maakt de PDF aan, maar in dezelfde map als de SLDDRW die ik niet begrijp.

Ik had me nog niet verdiept in je code, dat geef ik toe!

 

Ik zag net dat de volgende regel waarschijnlijk verkeerd is:

 

        MkDir "FileNamePDF"

 

1) Het lijkt mij dat om een directory te maken, je de volledige naam met het pad moet opgeven!

2) Je hebt geen aanhalingstekens nodig voor je variabele "FileNamePDF", anders is het geen variabele meer maar tekst!

 

Een handige manier om VBA-code te controleren en te lezen, is door Notepad++  te gebruiken die hier te vinden is:

http://notepad-plus-plus.org/download/v6.6.7.html

 

Plak vervolgens de code in een nieuw bestand en kies uit het menu Taal > V > VB.

 

De kleuropmaak is veel veelzeggender dan die in de basis VBA-editor.

Variabelen worden in het zwart weergegeven, terwijl tekst in het grijs wordt weergegeven.

2 likes

Ik heb de variabele in de SWmoddoc.SaveAs (PathFileNamePDF) gewijzigd, ik had het volledige adres bij het bestand gezet, het werkte niet, ik heb gewoon de naam van het pdf-bestand gezet en het maakt het voor mij in dezelfde map als de slddrw, en iets anders als de map waarin ik de pdf wil opslaan al bestaat, Deze bug, kan iemand me helpen begrijpen hier is de tekst van mijn macro.


sans_titre.png

Hallo

 

Ik denk dat de fout afkomstig is van de variabele "PathPDFfileName" in deze opdracht:

nErrors = SWmoddoc.SaveAs(FileNamePathPDF)

 

Wanneer u opslaat met het commando "Opslaanals", moet u de volledige naam van het bestand als argument opgeven, MET de extensie (.pdf in uw geval).

 

Vriendelijke groeten.

 

Franck.

Ik zag dit na Lucas, ik heb het aangepast, maar het werkt nog steeds niet.

Fgirard, ik zag dit ook, ik heb het aangepast, maar het werkt nog steeds niet helemaal.

Voor de breekpunten, kijk naar de link die ik hierboven heb geplaatst:

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

 

Hierin worden verschillende manieren uitgelegd om code te debuggen, waaronder breekpunten.

 

1 like

Als het nog steeds niet werkt, voeg dan spionnen toe zoals hier weergegeven:

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

 

En wat zijn de waarden van de variabelen:

NaamBestandPDF 

PadNaamBestandPDF

 

 

Waar eindigt je macro?

1 like

re

 

Om te helpen bij het testen van een macro-> in de vergelijkingseditor, klikt u op "Weergave", op "Venster met lokale variabelen" > zie bijlage


editeur_de_macro_fenetre_variables_locales.png
2 likes

Onze berichten kruisen elkaar, sorry.

 

Het is raar dat "Opslaanals" niet goed werkt met de volledige bestandsnaam (pad+naam+extensie).

Hetzelfde geldt voor de bug met de map die al bestaat.

 

Probeer het met de opdracht "SaveAs" voor ModelDocExtension. Dit is degene die ik gebruik in mijn macro's.

Ga als volgt te werk om te rapporteren:

   Dim SWmodext als As SldWorks.ModelDocExtension

   Dim swExportPDFData     As SldWorks.ExportPdfData

Dim fouten              zo lang   
   Dim waarschuwingen            zo lang

en hoe je invloed kunt uitoefenen op:

   Stel SWmodext = SWmoddoc.Extension in

dan:

   nErrors = SWmodext.SaveAs(FileNamePathPDF, 0, 0, swExportPDFData, Fouten, waarschuwingen)

 

 

 

Voor mappenbeheer gebruik ik het FileSystemObject:

Dim oFSO                als Scripting.FileSystemObject   
Dim oFld                  als map   

 

   Set oFSO = Nieuwe Scripting.FileSystemObject

 

   Als oFSO.FolderExists(FileNamePathPDF) = Onwaar dan
        Stel oFld in = oFSO.CreateFolder(FileNamePathPDF)
    Einde als

2 likes

Dank je wel caronmaxime, erg handig dit venster!

 

Dus met je venster hebben mijn variabelen de waarde die ik ze wil geven, maar het werkt niet zoals ik wil.

 

hij zal het 2014-bestand voor mij maken, aan de andere kant, als het bestand al bestaat, stopt het bij de Mkdir-regel (1e punt dat ik niet begrijp)

 

en hij maakt het pdf-bestand voor mij, maar aan de andere kant in dezelfde map als het actieve bestand terwijl hij het in de map van 2014 zou moeten plaatsen (2e punt dat ik niet begrijp)

 

HELP!!

1 like

Zou de fout niet komen door het feit dat u een map test en een andere map maakt?

 

Als Dir$(FileNamePathPDF) = "" dan
MkDir BestandsNaamPDF

Einde als

 

PathFileNamePDF of moet hier 2 keer worden gebruikt, toch? Een keer voor de Dir$-test en een keer voor de MkDir?

3 likes

re re

 

Mathieu, naar mijn mening moet je   [ MkDir  FileNamePDF]  vervangen worden door    [MkDir FileNamePathPDF]

 

In uw macro-editor kunt u dubbelklikken op het trefwoord MkDir om het te selecteren en op F1 drukken. Hulp zal je in staat stellen om het te begrijpen.

re re re

 

maak de balans op, rekening houdend met de uitstekende aanbevelingen van Fgirard, en kijk misschien eens naar de vraag "mijn PDF DXF-macro: wat moet ik zeggen? " die ik heb gepubliceerd.

 

Anders is dit hoe ik te werk ga (zie bijlage) om een macro te debuggen wanneer deze mappen of bestanden maakt


capture_decran_sw_et_editeur_sw_et_explorer_windows.png