最近在幫一個客戶使用word 合併列印,雖然POS比較好用,不過客戶需要應急,但發現word合併列印,會因為印表機的驅動,導致怎麼印都會是直式,無法正常進入框架內。
詢問原廠與印表機原廠,都沒有辦法解決,互推責任(老樣子),因此只好另尋辦法,使用EXCEL做列印。
這次主要是幫台北某間幼稚園製作,因此開啟EXCEL先做好列印的套表頁再來製作資料庫頁面。
然後我們必須做好巨集,讓資料庫的資料可以自動的複製到列印套表那邊的正確格子內列印。
首先把巨集的選項打開。
選取錄製巨集,建立一個巨集,並且設定他的執行快捷鍵,這裡我設定為Ctrl+b 他會把我圈選的資料置到列印套表做列印。
建立好後,點選巨集,選擇剛剛建立的巨集,再點選編輯,進入編輯視窗。
下圖就是我編輯的編輯視窗,當然裡面的巨集程式碼,也是參考其他大大然後變更而成的。
做好後記得存檔,並將整個資料存成*.XLSM
以下是我參考的巨集資料,也希望可以給大家參考。
--------------------------程式碼開始--------------------------
Sub 巨集1()
'
' 巨集1 巨集
'
' 快速鍵: Ctrl+b
'
Application.Goto Reference:="巨集1"
'**********************************************
'在Sheets("輸入")中滑鼠選擇要印列 ,執行此程式
'**********************************************
Dim E As Range
Sheets("資料庫").Activate
For Each E In Selection.EntireRow
If E.Row > 1 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
'E.Row > 1 ->第2列以後的資料
'E.Range("B1") <> 0 ->作廢
'Application.CountA(E.Range("A1:G1")) = 7 ->資料要齊全;這指的是要有7格資料才會列印
With Sheets("列印套表")
.Range("A1:G10").Name = "Print_Area" '印列範圍(先調整印列紙張的大小)
.[C3] = E.Range("A1") '填上 :支票的資料
.[M3] = E.Range("A1")
.[C5] = E.Range("B1")
.[C6] = E.Range("C1")
.[C7] = E.Range("D1")
.[C8] = E.Range("E1")
.[C9] = E.Range("F1")
.[C10] = E.Range("G1")
.[C11] = E.Range("H1")
.[C12] = E.Range("I1")
.[C13] = E.Range("J1")
.[C14] = E.Range("K1")
.[C15] = E.Range("L1")
.[D5] = E.Range("M1")
.[M5] = E.Range("B1")
.[M6] = E.Range("C1")
.[M7] = E.Range("D1")
.[M8] = E.Range("E1")
.[M9] = E.Range("F1")
.[M10] = E.Range("G1")
.[M11] = E.Range("H1")
.[M12] = E.Range("I1")
.[M13] = E.Range("J1")
.[M14] = E.Range("K1")
.[M15] = E.Range("L1")
.PrintOut '印列
End With
End If
Next
End Sub
----------------------------程式碼結束---------------------------
關於為什麼word合併列印會變成這種奇怪的情形,我在猜應該是現在印表機比較聰明,會協助幫客戶調整紙張,但聰明反被聰明誤,造成這種反效果,我懷疑是下面的選項搞鬼,但我沒時間可以繼續測試,因此才改用EXCEL套表的方式。
詢問原廠與印表機原廠,都沒有辦法解決,互推責任(老樣子),因此只好另尋辦法,使用EXCEL做列印。
這次主要是幫台北某間幼稚園製作,因此開啟EXCEL先做好列印的套表頁再來製作資料庫頁面。
然後我們必須做好巨集,讓資料庫的資料可以自動的複製到列印套表那邊的正確格子內列印。
首先把巨集的選項打開。
選取錄製巨集,建立一個巨集,並且設定他的執行快捷鍵,這裡我設定為Ctrl+b 他會把我圈選的資料置到列印套表做列印。
建立好後,點選巨集,選擇剛剛建立的巨集,再點選編輯,進入編輯視窗。
下圖就是我編輯的編輯視窗,當然裡面的巨集程式碼,也是參考其他大大然後變更而成的。
做好後記得存檔,並將整個資料存成*.XLSM
以下是我參考的巨集資料,也希望可以給大家參考。
Sub 巨集1()
'
' 巨集1 巨集
'
' 快速鍵: Ctrl+b
'
Application.Goto Reference:="巨集1"
'**********************************************
'在Sheets("輸入")中滑鼠選擇要印列 ,執行此程式
'**********************************************
Dim E As Range
Sheets("資料庫").Activate
For Each E In Selection.EntireRow
If E.Row > 1 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
'E.Row > 1 ->第2列以後的資料
'E.Range("B1") <> 0 ->作廢
'Application.CountA(E.Range("A1:G1")) = 7 ->資料要齊全;這指的是要有7格資料才會列印
With Sheets("列印套表")
.Range("A1:G10").Name = "Print_Area" '印列範圍(先調整印列紙張的大小)
.[C3] = E.Range("A1") '填上 :支票的資料
.[M3] = E.Range("A1")
.[C5] = E.Range("B1")
.[C6] = E.Range("C1")
.[C7] = E.Range("D1")
.[C8] = E.Range("E1")
.[C9] = E.Range("F1")
.[C10] = E.Range("G1")
.[C11] = E.Range("H1")
.[C12] = E.Range("I1")
.[C13] = E.Range("J1")
.[C14] = E.Range("K1")
.[C15] = E.Range("L1")
.[D5] = E.Range("M1")
.[M5] = E.Range("B1")
.[M6] = E.Range("C1")
.[M7] = E.Range("D1")
.[M8] = E.Range("E1")
.[M9] = E.Range("F1")
.[M10] = E.Range("G1")
.[M11] = E.Range("H1")
.[M12] = E.Range("I1")
.[M13] = E.Range("J1")
.[M14] = E.Range("K1")
.[M15] = E.Range("L1")
.PrintOut '印列
End With
End If
Next
End Sub
----------------------------程式碼結束---------------------------
關於為什麼word合併列印會變成這種奇怪的情形,我在猜應該是現在印表機比較聰明,會協助幫客戶調整紙張,但聰明反被聰明誤,造成這種反效果,我懷疑是下面的選項搞鬼,但我沒時間可以繼續測試,因此才改用EXCEL套表的方式。
留言