Makro zapisuje jako plik PDF tylko pierwszą stronę rysunku

Cze wszystkim

Utworzyłem makro, które pozwala mi utworzyć plik PDF z moimi rysunkami z prefiksem i drugim plikiem PDF z prefiksem, po którym następuje "ADV",

Mój problem polega na tym, że w drugim pliku PDF chciałbym, aby była to tylko pierwsza strona mojego układu, ponieważ podczas zapisywania jak można powiedzieć żądane strony lub nie, ale w VBA nie wiem, jak to zrobić.

Obecnie używam programu Acrobat, który otwieram z makra, aby usunąć dwa ostatnie 

Poniżej moje makro:

*****************************************************************************

Sub main()

Dim SwApp jako obiekt
    Przyciemnij część jako obiekt
    Dim SelMgr As Obiekt
    Dim selObj As Obiekt
    Dim AcroApp jako Acrobat.AcroApp
    Ustaw SwApp = CreateObject("SldWorks.Application")

Ustaw część = SwApp.ActiveDoc
Dim Clue As String
index = InputBox("indeks?")
Przyciemnij myModelView jako obiekt
Ustaw myModelView = Part.ActiveView
Przyciemnij cel jako Scripting.filesystemobject
Wartość przyciemniona jako plik skryptowy
Zestaw docelowy = CreateObject("scripting.filesystemobject")
Ustaw wartość = target.getfile(Part.GetPathName)
longstatus = Part.SaveAs3("U:\PDF do obsługi\" & cel. GetBaseName(wartość) & "-" & indeks & ".pdf", 0, 0)
Jeśli MsgBox("ADV", vbYesNie, "Czy potrzebuję pliku PDF dla ADV?") = vbYes Then
longstatus = Part.SaveAs3("U:\PDF do obsługi\" & cel. GetBaseName(wartość) & "-" & indeks & "-ADV" & ".pdf", 0, 0)
Powłoka ("C:\Program Files (x86)\Adobe\Acrobat 7.0\Acrobat\Acrobat.exe U:\PDF do dystrybucji\" & cel. GetBaseName(wartość) & "-" & indeks & "-ADV" & ".pdf"), vbMaximizedFocus

Zakończ jeżeli:

  MsgBox ("Zakończ")

Koniec subwoofera

*****************************************************************************

Z góry dziękuję za odpowiedzi

Juliański.

 

 

Witam

 

Osobiście nie mogę Ci pomóc, ale ludzie tacy jak .PL czy Joss.G i pewnie są inni, na pewno będą w stanie Ci pomóc.

 

Mathieu

1 polubienie

Witam

Czy możesz zrobić makro w nauce funkcji nagrywania za pomocą tylko 1. strony, aby zobaczyć, jak tłumaczą to na VBA?

 

S.B

Próbowałem już użyć rejestratora makr, aby dać mi wiersz kodu, ale to nie działa

Juliański.

 

Witam

W tym przypadku nie sądzę, abyś mógł użyć powłoki, musisz użyć funkcji SolidWorks do tworzenia plików PDF, patrz  :

http://help.solidworks.com/2014/English/api/sldworksapi/Save_File_as_PDF_Example_VB.htm

 

Przykład:

Ustaw swExportPDFData = swApp.GetExportFileData(swExportDataFileType_e.swExportPDFData)

Wybierz swój arkusz tutaj

varSheetName = strSheetName

boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, nazwa_zmiennej_arkusza)

   

boolstatus = swModelDocExt.SaveAs(nazwa pliku, 0, 0, swExportPDFData, lErrors, lWarnings)

 

 

Źródło: https://forum.solidworks.com/thread/66559

1 polubienie

Miło jest cytować Mathieu ANGERA , ale nie znam się dobrze na makrach, przyznam, że od czasu do czasu poświęciłem im trochę czasu, ale stamtąd, aby pomóc w pisaniu linijek kodu... ^^

Znalazłem gotowe makra dla tych, którzy ich szukają, ale nie jestem tak dobry jak .PL. (Myślę, że Jmsavoyat też wie sporo na ten temat).

Cdt

Joss

1 polubienie

Dziękuję za rozwiązanie .PL ^^ działa świetnie ;) Musiałem to trochę dostosować, ale jestem zadowolony z wyniku,

Jeszcze raz dziękuję i życzę miłego dnia,

 

Juliański.

1 polubienie

Proszę^^

Jeśli możesz opublikować kod tak, abyśmy mieli dokładną składnię (zwłaszcza aby wybrać tylko pierwszy arkusz), może on być przydatny dla innych!

Życzę Ci miłego dnia.

Oto kompletne makro, które pozwala po pierwsze mieć plik PDF ze wszystkimi stronami i prefiksem "indeks dolny" w nazwie, a po drugie mieć tylko pierwszą stronę z prefiksem "indeks" i innymi predefiniowanymi "ADV" 

Od Ciebie zależy, czy zmodyfikujesz go według własnego uznania 

Miłego dnia wszystkim 

Juliański.

 

************************************************************************************************************************

Sub main()

Dim SwApp jako obiekt
    Przyciemnij część jako obiekt
    Dim SelMgr As Obiekt
    Dim selObj As Obiekt
    Dim swExportPDFData As SldWorks.ExportPdfData
    Dim boolstatus As Boolean
    Dim lErrors tak długo
    Dim lOstrzeżenia tak długo
    Dim strSheetName(3) As String (Ciąg znaków)
    Dim varSheetName As Variant (Zmienna zmienna Nazwa_arkusza jako wariant)
    Przyciemnij nazwę pliku jako ciąg
    Dim swModelDocExt As SldWorks.ModelDocExtension

           
    Ustaw SwApp = CreateObject("SldWorks.Application")

Ustaw część = SwApp.ActiveDoc
Jeśli część jest niczym, to
        MsgBox "Brak aktualnego dokumentu", vbCritical
        Koniec
Zakończ jeżeli:
Dim Clue As String
index = InputBox("indeks?")
Przyciemnij myModelView jako obiekt
Ustaw myModelView = Part.ActiveView
Przyciemnij cel jako Scripting.filesystemobject
Wartość przyciemniona jako plik skryptowy
Zestaw docelowy = CreateObject("scripting.filesystemobject")
Ustaw wartość = target.getfile(Part.GetPathName)
longstatus = Part.SaveAs3("C:\ścieżka do miejsca docelowego PDF" & cel. GetBaseName(wartość) & "-" & indeks & ".pdf", 0, 0)
Jeśli MsgBox("ADV", vbYesNie, "Czy potrzebuję pliku PDF dla ADV?") = vbYes Then

filename = "C:\ścieżka do miejsca docelowego PDF" & cel. GetBaseName(wartość) & "-" & indeks & "-ADV" & ".pdf"

Ustaw swModelDocExt = Part.Extension
Ustaw swExportPDFData = SwApp.GetExportFileData(1)

strSheetName(0) = "BOM"

varSheetName = strSheetName


boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, nazwa_zmiennej_arkusza)
    
boolstatus = swModelDocExt.SaveAs(nazwa pliku, 0, 0, swExportPDFData, lErrors, lWarnings)

   
Zakończ jeżeli:
   MsgBox ("Zakończ")
Koniec subwoofera

*************************************************************************************************************************