Excel通过VBA打印信封

Excel通过VBA打印信封:
 

 

Sub printSheet()         Dim no1 As Integer         Sheets("信封模板").Select '进入打印页面         no1 = 2         'no2 = InputBox("请输入打印内容行数:", "对话框", 1)         'If no2 = "" Then '如果在对话框中选择了取消按钮,则终止宏!            'Exit Sub        ' End If                 Do While no1 <= 65535          Dim isPrint As String                   isPrint = Sheets("源数据").Range("m" + Trim(Str(no1 + 1))).Value                  If isPrint <> "已打印" Then  '判断此行是否已打印过打印过则跳过                    Sheets("信封模板").Range("a1:f1").Value = Sheets("源数据").Range("a" + Trim(Str(no1 + 1)) + ":" + "f" + Trim(Str(no1 + 1))).Value        '更新邮政编码            Sheets("信封模板").Range("f3").Value = Sheets("源数据").Range("g" + Trim(Str(no1 + 1))).Value             '更新收件人地址            Sheets("信封模板").Range("g4").Value = Sheets("源数据").Range("h" + Trim(Str(no1 + 1))).Value             '更新收件人名称            Sheets("信封模板").Range("g5").Value = Sheets("源数据").Range("i" + Trim(Str(no1 + 1))).Value             '更新收件人车牌号            Sheets("信封模板").Range("h6").Value = Sheets("源数据").Range("j" + Trim(Str(no1 + 1))).Value             '更新寄件人名称            Sheets("信封模板").Range("h7").Value = Sheets("源数据").Range("k" + Trim(Str(no1 + 1))).Value             '更新寄件人地址            Sheets("信封模板").Range("h8").Value = Sheets("源数据").Range("l" + Trim(Str(no1 + 1))).Value             '更新寄件人邮编                       Sheets("源数据").Select '进入源数据页面            Sheets("源数据").Range("m" + Trim(Str(no1 + 1))).Value = "已打印" '标记源数据是否已打印                      ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True            '打印输出

          MsgBox "当前行已打印完成,请核对是否正确!下面将跳转到源数据页面", 48, "暂停提示"           Exit Sub         Else '如果所有行都已标记为打印则不打印任何数据                         If Trim(Sheets("源数据").Range("h" + Trim(Str(no1 + 1))).Value) = "" Then           '根据收件人名称判断                            MsgBox "未打印任何行,因为所有数据都已标记为已打印!"                Exit Sub '这里必须退出否则将一直循环66535次                            End If                     End If           no1 = no1 + 1         Loop     End Sub                    '批量打印     Sub batchPrintSheet()        Dim no1 As Integer         Sheets("信封模板").Select '进入打印页面         no1 = 1         no2 = InputBox("请输入打印内容行数:", "对话框", 1)                       If no2 = "" Then '如果在对话框中选择了取消按钮,则终止宏!            Exit Sub         End If                        Do While no1 <= no2            Sheets("信封模板").Range("a1:f1").Value = Sheets("批量打印源数据").Range("a" + Trim(Str(no1 + 1)) + ":" + "f" + Trim(Str(no1 + 1))).Value             '更新邮政编码            Sheets("信封模板").Range("f3").Value = Sheets("批量打印源数据").Range("g" + Trim(Str(no1 + 1))).Value              '更新收件人地址            Sheets("信封模板").Range("g4").Value = Sheets("批量打印源数据").Range("h" + Trim(Str(no1 + 1))).Value              '更新收件人名称            Sheets("信封模板").Range("g5").Value = Sheets("批量打印源数据").Range("i" + Trim(Str(no1 + 1))).Value              '更新收件人车牌号            Sheets("信封模板").Range("h6").Value = Sheets("批量打印源数据").Range("j" + Trim(Str(no1 + 1))).Value               '更新寄件人名称            Sheets("信封模板").Range("h7").Value = Sheets("批量打印源数据").Range("k" + Trim(Str(no1 + 1))).Value                '更新寄件人地址            Sheets("信封模板").Range("h8").Value = Sheets("批量打印源数据").Range("l" + Trim(Str(no1 + 1))).Value                '更新寄件人邮编            'ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True            '打印输出            Sheets("批量打印源数据").Range("m" + Trim(Str(no1 + 1))).Value = "已打印" '标记源数据是否已打印            MsgBox "第" & no1 & "行已经打印", 48, "暂停提示"            no1 = no1 + 1                Loop        End Sub

Private Sub CommandButton1_Click()

Call batchPrintSheet Sheets("源数据").Select '进入源数据页面 End Sub

Private Sub 开始打印_Click()    Call printSheet       End Sub

 


信封的样式:

Excel通过VBA打印信封_第1张图片

 

 

如下样式的excel文件,我在最上现放置了两个按钮。通过vba脚本打印出信封的样式。

 

Excel通过VBA打印信封_第2张图片

 

 

你可能感兴趣的:(String,Excel,脚本,Integer,VBA)