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 batchPrintSheetSheets("來源資料").Select '進入來源資料頁面End Sub
Private Sub 開始列印_Click() Call printSheet End Sub
信封的樣式: 如下樣式的excel檔案,我在最上現放置了兩個按鈕。通過vba指令碼列印出信封的樣式。