如何使用VBA仅打印Word文档的第一页?
我希望有人能帮我。在工作中,我们为数控机床制作程序。这些是word文档。这些文件保存在以机器命名的文件夹中。我制作了一个用户表单,您可以在其中选择机器并填写程序编号。单击“确定”后,它将打开所有需要的程序。(这是成功的) 然后我想打印所有打开程序的第一页。这就是我被卡住的地方。请参阅下面的代码如何使用VBA仅打印Word文档的第一页?,vba,excel,Vba,Excel,我希望有人能帮我。在工作中,我们为数控机床制作程序。这些是word文档。这些文件保存在以机器命名的文件夹中。我制作了一个用户表单,您可以在其中选择机器并填写程序编号。单击“确定”后,它将打开所有需要的程序。(这是成功的) 然后我想打印所有打开程序的第一页。这就是我被卡住的地方。请参阅下面的代码 If Len(programbox.Value) = 1 Then zeros = "00000" If Len(programbox.Value) = 2 Then zeros = "0000" If
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
这会打印出整个文件。我在internet上搜索过,但找不到如何将其更改为仅第一页。您可以尝试对代码进行一些(未经测试的)重构:
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()
中的数字正确格式化为带前导零的6位数字programbox
- 使用了
block在不同的选择案例。。。。结束选择
cases之间切换machinebox.Value
- 实例化了一个“临时”Word应用程序对象
- 使用从1到3的循环,而不是重复同一语句三次
zeros=string(6-Len(programbox.Value),“0”)来处理。
谢谢,我将尝试使用它this@Mick17请不要更改您的问题并使现有答案无效。改为问一个新问题。“我回滚了您的编辑。@piet.t抱歉,该站点是新的。”。我会问一个新问题。谢谢你的帮助谢谢你提供的信息。作为一名没有受过任何培训的初级程序员,经常会有人绕道而行,因为他根本不知道“正确”的方法,我已经将其集成到我的宏中。它可以工作,但仍然可以打印出整个文档。我已尝试将页面:=“1”更改为从:=“1”,更改为:=“1”。但这也没用。有什么建议吗?检查方法文档。它将页面
参数描述为要打印的页码和页面范围,用逗号分隔。您可以尝试使用参数范围:=wdPrintFromTo,From:=“1”,To:=“1”