2014-02-12 2 views
0

Sheet1 시트를 PDF 파일로 내보내고 인쇄 한 다음 코드를 사용하여 Adobe Reader를 닫습니다.PDF 파일 인쇄 및 Adobe Reader 종료

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" 
    (ByVal hwnd As Long, 
    ByVal lpOperation As String, 
    ByVal lpFile As String, 
    ByVal lpParameters As String, 
    ByVal lpDirectory As String, 
    ByVal nShowCmd As Long) As Long 

Public Function PrintThisDoc(Formname As Long, FileName As String) 
    On Error Resume Next 
    Dim X As Long 
    X = ShellExecute(Formname, "Print", FileName, 0&, 0&, 1) 
End Function 

Private Sub CommandButton1_Click() 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:="D:\Print.pdf" 
    PrintThis = PrintThisDoc(0, "D:\Print.pdf") 
    Application.Wait (Now + TimeSerial(0, 0, 10)) 
    TerminateProcess 
End Sub 

내가 인쇄 주문이 어도비 리더를 종료하기 전에 프린터로 전송 될 때까지 10 초 동안 코드를 일시 중지 .wait 방법을 사용하십시오

내가 사용하고 코드입니다. 내가이 줄을 추가 할 때 는 단, TerminateProcess 서브 영향과 나는 Not found error이 줄 내가 .wait 라인을 제거 할 때 내 파일이있는 한, 어도비 리더가 종료하지만 아무것도 인쇄되지 않습니다
Sub TerminateProcess() 
    Dim strTerminateThis As String 
    Dim objWMIcimv2 As Object 
    Dim objProcess As Object 
    Dim objList As Object 
    Dim intError As Integer 

    'Process to terminate 
    strTerminateThis = "AcroRd32.exe" 

    'Connect to CIMV2 Namespace 
    Set objWMIcimv2 = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") 

    'Find the process to terminate 
    Set objList = objWMIcimv2.ExecQuery("select * from win32_process where name='" & strTerminateThis & "'") 

    'Terminates a process and all of its threads. 
    For Each objProcess In objList 
     intError = objProcess.Terminate 
    Next 

    Set objWMIcimv2 = Nothing 
    Set objList = Nothing 
    Set objProcess = Nothing 
End Sub 

(intError = objProcess.Terminate)

에 관한 얻을 즉시 개폐.

그래서 어떤 도움을 주시겠습니까 ??

+0

유일한 제안은 처음에는 Adobe Reader에서 열지 않는 것입니다. 참고로, Reader를 실제로 열지 않고 상황에 맞는 메뉴에서 PDF를 인쇄 할 수 있습니다.이 방법의 사용법을 살펴 보는 것이 좋습니다 ... – Krease

+0

이것은 shellexecute를 사용하여 파일을 처음 열 경우에도 발생합니다. u는 실제로 독자를 여는 일없이 컨텍스트 메뉴에서 PDF를 인쇄하여 무슨 뜻입니까? – user3286479

+0

Reader가 설치된 Windows에서는 탐색기에서 PDF를 마우스 오른쪽 단추로 클릭하면 옵션 사이에 "인쇄"가 표시됩니다. 이 옵션을 선택하면 Reader를 열지 않고도 PDF가 인쇄됩니다. 리더를 처음부터 여는 것을 피하기 위해 비슷한 메커니즘을 사용할 수 있어야합니다. 이는 단지 아이디어 일 뿐이며 귀하의 상황에서 작동하지 않을 수도 있음을 명심하십시오. – Krease

답변

0

아마도 조금 단순하지만 어째서 PDF가 아닌 Excel 파일을 인쇄 할 수 없습니까? 그들은 동일하지 않아야합니까?