2016-11-29 107 views
1

我希望有人能幫助我。在工作中,我們製作CNC機器的程序。這些是文檔文檔。這些保存在以機器命名的文件夾中。我已經制作了一個用戶表單,您可以在其中選擇機器並填寫程序編號。點擊「確定」後,它將打開所有需要的程序。 (這工作成功) 然後我想打印所有打開的程序的第一頁。這是卡住的地方。見下面的代碼。如何僅使用VBA打印Word文檔中的第一頁?

If Len(programbox.Value) = 1 Then zeros = "00000" 
If Len(programbox.Value) = 2 Then zeros = "0000" 
If Len(programbox.Value) = 3 Then zeros = "000" 
If Len(programbox.Value) = 4 Then zeros = "00" 
If Len(programbox.Value) = 5 Then zeros = "0" 
If Len(programbox.Value) = 6 Then zeros = "" 

Set wordapp = CreateObject("word.application") 
If machinebox.Value = "CTX510" Then letter = "C" 
If machinebox.Value = "CTX510" Then machinebox.Value = "CTX510\program" 
If machinebox.Value = "Lu25" Then letter = "F" 
If machinebox.Value = "LB45" Then letter = "N" 


set objdoc1 = wordapp.documents.Open "\\path\Machine\" & machinebox.Value & "\" & letter & "1" & zeros & programmabox.Value & ".OPT" 
set objdoc2 = wordapp.documents.Open "\\path\Machine\" & machinebox.Value & "\" & letter & "2" & zeros & programmabox.Value & ".OPT" 
set objdoc3 = wordapp.documents.Open "\\path\Machine\" & machinebox.Value & "\" & letter & "3" & zeros & programmabox.Value & ".OPT" 

objdoc1.printout 
objdoc2.printout 
objdoc3.printout 

這打印出整個文檔。我在互聯網上搜索,但無法找到我可以改變這隻有第一頁。

+0

你需要看看MSDN上打印出來的https: //msdn.microsoft.com/en-us/library/office/ff840681.aspx,記錄你自己的宏從單詞打印一個是最簡單的學習方法。此外,前幾行可以用這個'zeros = string(6-Len(programbox.Value),「0」)' –

+0

來處理謝謝,我將嘗試使用這個 – Mick17

+0

@ Mick17請不要改變你的問題並使現有答案無效。改爲提出一個新問題。我回滾了你的編輯。 –

回答

1

你可以嘗試你的代碼的這個小(未經測試)重構:

Dim iLetter As Long 
Dim letter As String 
Dim objdoc As Object 

Select Case machinebox.Value 
    Case "CTX510" 
     letter = "C" 
     machinebox.Value = "CTX510\program" 
    Case "Lu25" 
     letter = "F" 
    Case "LB45" 
     letter = "N" 
End Select 

With CreateObject("word.application") 
    For iLetter = 1 To 3 
     Set objdoc = .documents.Open("\\path\Machine\" & machinebox.Value & "\" & letter & iLetter & Format(programbox.Value, "000000") & ".OPT") 
     objdoc.PrintOut Pages:="1" 
     objdoc.Close False 
    Next iLetter 
End With 

在哪裏:

  • 使用Format()功能正確地從programbox格式的數字,以一個6位的一個與前導零

  • 使用了一個Select Case .... End Select塊來切換不同machinebox.Value個案

  • 實例化一個「臨時」 Word應用程序對象

  • 使用一個循環從1到3,而不是重複三次相同的語句

+0

感謝您提供此信息。作爲一個沒有任何培訓的初學程序員,它會發生很多事情,因爲人們只是不知道「正確」的方式去做 – Mick17

+0

我已經將它集成到了我的宏中。它工作,但它仍然打印出整個文件。我試圖將Pages:=「1」更改爲:=「1」,至:=「1」。但是這也沒有幫助。有什麼建議麼? – Mick17

+0

檢查[PrintOut()](https://msdn.microsoft.com/en-us/library/office/ff840681.aspx)方法文檔。它將'Pages'參數描述爲_要打印的頁碼和頁面範圍,用逗號分隔。你可以嘗試使用參數'Range:= wdPrintFromTo,From:=「1」,To:=「1」 – user3598756