2017-11-30 12 views
0

사용자가 기술 도면 번호 세트를 입력하고 그로부터 패킷을 생성 할 수있게 해주는 vba 코드를 설계하고 있습니다. AutoCAD 파일을 다룰 때 문제가 발생했습니다. 우리 회사는 AutoCAD LT를 가지고 있기 때문에 API를 사용할 수 없기 때문에 adobe의 PDFMaker API를 사용하여 파일을 pdf로 직접 변환합니다. 불행히도 pdfMaker의 설정은 다소 제한되어 있으므로 출력 된 pdf 패킷을 구문 분석하여 흑백으로 인쇄해야합니다. 저는 현재 패킷을 열고 필요한 페이지를 인쇄하는 서브 루틴을 가지고 있지만, 특별히 acrobat을 열고 고급 설정에서 "흑백"구성을 선택하면 흑백 만 인쇄됩니다. 이 색상 구성을 설정하고 크기 옵션을 맞추기 위해 명령을 보낼 수있는 방법이 있습니까 (저는 이것이 자바 스크립트에 있다고 생각합니까?)? 여기 내 코드가있다. 엑셀 vba를 통해 Acrobat XI 프린터 설정을 어떻게 설정합니까?

Public xlBook    As Workbook 
Public xlSheet    As Worksheet 
Public LastRow    As Integer 
Public ItemNumber   As String 
Public Vin5    As String 
Public Vin     As String 
Public FullPath   As String 

Sub PdfFormat() 

Dim strMakeFile   As String 
Dim LastRow    As Integer 


Set xlBook = ActiveWorkbook 
Set xlSheet = xlBook.Sheets(1) 
ItemNumber = Range("E1") 
Vin5 = Range("F1") 
Vin = ItemNumber & "0" & Vin5 
FullPath = "\\eastfile\Departments\Engineering\MACROS\New Packet Output\" &  Vin & "\" 


strMakeFile = FullPath & Vin & ".pdf" 
LastRow = Range("A" & xlSheet.Rows.Count).End(-4162).Row 

Dim AcroExchApp  As New Acrobat.AcroApp 
Dim AcroExchAVDoc As New Acrobat.AcroAVDoc 
Dim AcroExchPDDoc As Acrobat.AcroPDDoc 
Dim OpenError  As Boolean 
Dim PrintError  As Boolean 


OpenError = AcroExchAVDoc.Open(strMakeFile, "") 

!!!!!CODE FOR PRINTER SETTINGS HERE!!!!! 

PrintError = AcroExchAVDoc.PrintPagesSilentEx(0, 5, 3, 1, 1, 0, 0, 0, -5) 

Debug.Print "Open Error: " & Not (OpenError) 
Debug.Print "Print Error: " & Not (PrintError) 
Debug.Print Vin 

AcroExchApp.CloseAllDocs 


End Sub 

는 시간 내 주셔서 감사

답변

0

여기 예를 들어, 아크로-JS 도움말 파일에서 찾을 수있는 Acrobat의 인쇄 매개 변수 : 그것을 사용하는 2 가지 방법이 있습니다 VBS/VBA와 Acro JS setting print options

. Acro-Form API를 사용하면 js 코드를 더 많이 또는 덜 실행할 수 있습니다. 여기에 간단한 예제가 있습니다 : Execute Acro js from VBA/VBS

다른 방법은 VBA/VBS 올레 연결을 통해 변환 된 js 코드를 사용할 수있게 해주는 JS 개체를 사용하는 것입니다. Adobe Acrobat IAC 참조 문서에 설명되어 있습니다.

어떻게 작동하는지는 다음 예제에서 확인할 수 있습니다. 여기서는 jso를 사용하여 일부 인쇄 매개 변수를 설정합니다. 주어진 인쇄 매개 변수를 필요한 것으로 변경하거나 다른 예제의 경우 Acro JS helfile에서 검색 한 다음 위에서 설명한 방법으로 직접 실행하십시오. 행운을 빈다, 라인 하르

'// print dropped files with printParameter 
set WshShell = CreateObject ("Wscript.Shell") 
set fs = CreateObject("Scripting.FileSystemObject") 
Set objArgs = WScript.Arguments 

if objArgs.Count < 1 then 
    msgbox("Please drag a file on the script") 
    WScript.quit 
end if 
    'contact Acrobat 
Set gApp = CreateObject("AcroExch.App") 
gApp.show 'comment or take out to work in hidden mode 

    'open via Avdoc and print 
for i=0 to objArgs.Count - 1 
    FileIn = ObjArgs(i) 
    Set AVDoc = CreateObject("AcroExch.AVDoc") 
    If AVDoc.Open(FileIn, "") Then 
     Set PDDoc = AVDoc.GetPDDoc() 
     Set JSO = PDDoc.GetJSObject 
     jso.print false, 0, 0, true 
     set pp = jso.getPrintParams 
     pp.printerName = "hp deskjet 990c" 
     pp.firstPage = 0 '-> Zero based (firstPage = 0) 
     pp.lastPage = 5 '-> Zero based (pageCount - 1) 
     pp.interactive = pp.constants.interactionLevel.automatic '-> no print dialog 
     pp.pageHandling = pp.constants.handling.booklet 
     pp.booklet.duplexMode = pp.constants.bookletDuplexModes.BothSides 
     pp.booklet.binding = pp.constants.bookletBindings.LeftTall 
     jso.print(pp) 
     gApp.CloseAllDocs 
    end if 
next 

gApp.hide 
    gApp.exit 
    MsgBox "Done!" 
    Quit() 

Sub Quit() 
     Set JSO = Nothing 
     Set PDDoc = Nothing 
     Set gApp = Nothing 
     Wscript.quit 
End Sub 
+0

이것은 일했다! 도움에 감사드립니다. – FFS88