日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 辦公軟件教程 > 詳細頁面

運用VBA為Excel添加更多的打印技巧

運用VBA為Excel添加更多的打印技巧

更新時間:2023-12-22 文章作者:未知 信息來源:網絡 閱讀次數:

Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個人計算機數據處理軟件。

大家知道,Word可以進行多種方式打印,如打印奇數頁、打印偶數頁、打印當前頁等。而Excel的各種版本一直沒有這些功能,從節約紙張、提高打印效率方面來看,這無疑是一個小小的遺憾。我們可以通過自定義功能區來,用VBA來編寫一個加載宏,實現以下多種打印功能,點擊此處打開源文件下載頁面(需注冊本站會員)。

??? 1.打印工作表的奇數頁或偶數頁。

??? 2.打印當前頁,即當前選定單元格所在的頁面。

??? 3.雙面打印。一面打印完畢后,只需將全部打印紙取出,將出紙方向改為進紙方向重新放入打印機,再單擊提示對話框的“確定”按鈕,即可打印全部紙張的另一面。????

??? 利用VBA為Excel添加更多的打印功能_本站

?

??? 具體操作步驟如下。

??? 一、新建加載宏文件

??? 由于使用了VBA,首先必需將Excel的宏安全性設置為“啟用所有宏”。

??? 打開Excel 2007,新建一個Excel文件,將文件另存為“其它格式”,保存類型選“Excel加載宏(*.xlam)類型”,文件名為“雙面打印.xlam”,并修改保存位置到桌面。加載宏類型的文件可以在Excel啟動時自動加載,其功能對所有工作簿都起作用,而不是針對某一個工作簿。為便于以后操作,可以暫時將文件保存在桌面上,然后關閉Excel 2007。

??? 二、自定義功能區

??? 1.修改customUI.xml文件

??? 在桌面上新建一個文件夾,命名為“customUI”,然后在該文件夾中新建一個文本文件,將文件名改為“customUI.xml”,注意擴展名為“xml”,而不是“txt”。右擊該文件,選“編輯”打開(或用記事本打開),輸入下列內容:


?
???
????? ??
? ?
?????????
?????????
?????????
????????? ??
?????????
???????

?????????
????????????????????
??????????????

?????

???

?

??? 然后單擊菜單“文件→另存為”,在彈出的“另存為”對話框中,將“編碼”由“ANSI”改為“Unicode”,如圖二。單擊“保存”按鈕,在彈出的替換文件對話框中選擇“是”保存文件。

??? 利用VBA為Excel添加更多的打印功能_本站??

???? 說明:上述代碼中“”表示自定義的選項卡名稱為“雙面打印”,“”表示控件組的顯示名稱為“雙面打印工具”,“ ”行定義了一個按鈕,名稱為“打印奇數頁”,按鈕圖標為Excel 2007內置圖標“PrintAreaMenu”,圖標大小為普通大小,單擊按鈕將調用VBA中的"OddPagePrint"過程。通過上述代碼,我們定義了如圖一所示的自定義功能區。因為上述代碼中含有中文字符,所以必需將編碼改為“Unicode”,如果只有英文字符,可以不改編碼。

2.修改壓縮包文件

??? Office 2007新的文件格式采用了基于XML的文件格式,新的Office Open XML格式的核心使用一些XML的引用架構和一個ZIP容器,其實就是一個ZIP壓縮包。所以我們可以用壓縮軟件(如WinRAR)打開它,然后通過添加、修改其中文件的方法實現自定義功能區的目的。上面的customUI文件夾必須放入其中才能起作用,另外還必須修改其中“_rels”文件夾中的“.res”文件進行關聯,具體步驟如下:

??? 1.右擊“雙面打印.xlam”文件,依次選擇“打開方式→選擇程序”,在“打開方式 ”對話框中選擇解壓軟件,如“WinRAR壓縮文件管理器”。WinRAR軟件將彈出窗口,顯示壓縮包內的文件夾和文件,如圖三。

??? 利用VBA為Excel添加更多的打印功能_本站??

??? 2.將桌面上的customUI文件夾用鼠標左鍵拖到WinRAR窗口內,在彈出的“壓縮文件名和參數”對話框中單擊“確定”,如圖四,customUI文件夾將被復制到壓縮包內。

??? 利用VBA為Excel添加更多的打印功能_本站??

??? 3.雙擊打開壓縮包內的“_rels”文件夾,將該文件夾內的“.res”文件用鼠標左鍵拖到桌面上,右擊該文件,選“編輯”打開(或用記事本打開),在最后的“”前加上下列代碼:

??? 4.保存該文件,再將其拖回到壓縮包內,覆蓋原來的“.res”文件。

??? 三、添加VBA代碼

??? 雙擊打開“雙面打印.xlam”文件,如果上述操作正確無誤,Excel 2007功能區中將出現“雙面打印”選項卡。單擊該選項卡,可以看到各自定義按鈕及其圖標。按Alt+F11,打開VBA編輯器,選中“VBAProject ("雙面打印.xlam"),單擊菜單“插入”→“模塊”,插入名稱為“模塊1”的模塊,在其中輸入VBA代碼,為每個按鈕提供運行代碼:

Sub TwoSidePrint(control As IRibbonControl)? '雙面打印
??? On Error Resume Next
??? Dim TotalPageNums As Integer, i As Integer, j As Integer
??? TotalPageNums = ExecuteExcel4Macro("Get.Document(50)")
??? If (TotalPageNums = 0) Then '如果為零,說明沒有可打印內容,退出程序
??? MsgBox "Microsoft Excel 未發現任何可以打印的內容", 0 + 48
????? Exit Sub
??? End If
??? If TotalPageNums = 1 Then
??????? ActiveSheet.PrintOut
??????? If Err.Number = 1004 Then
??????????? MsgBox "打印時發生錯誤,請檢查打印機設置", 0 + 48 '提示用戶發生打印錯誤
??????? End If
??????? Exit Sub
??? End If
??? For j = Int(TotalPageNums / 2) + 1 To 1 Step -1
??? ActiveWindow.SelectedSheets.PrintOut From:=2 * j, To:=2 * j
??? Next j
??? MsgBox "第一面打印完畢后,請將打印出的紙張全部取出," & vbCrLf & vbCrLf & "將出紙方向變為進紙方向放入紙槽中," & vbCrLf & vbCrLf & "單擊“確定”,打印另一面。", vbOKOnly, "打印另一面"
??? For i = 1 To Int(TotalPageNums / 2) + 1
??????? ActiveWindow.SelectedSheets.PrintOut From:=2 * i - 1, To:=2 * i - 1
??????? If Err.Number = 1004 Then
??????????? MsgBox "打印時發生錯誤,請檢查打印機設置", 0 + 48 '提示用戶發生打印錯誤
??????????? Exit Sub
??????? End If
??? Next i
??? End Sub

Sub OddPagePrint(control As IRibbonControl)? '打印奇數頁
??? On Error Resume Next
??? Dim TotalPageNums, i As Integer
??? TotalPageNums = ExecuteExcel4Macro("Get.Document(50)")
??? If (TotalPageNums = 0) Then '如果為零,說明沒有可打印內容,退出程序
??????? MsgBox "Microsoft Excel 未發現任何可以打印的內容", 0 + 48
??????? Exit Sub
??? End If
??? For i = 1 To Int(TotalPageNums / 2) + 1
??????? ActiveWindow.SelectedSheets.PrintOut From:=2 * i - 1, To:=2 * i - 1
??????? If Err.Number = 1004 Then
??????????? MsgBox "打印時發生錯誤,請檢查打印機設置", 0 + 48 '提示用戶發生打印錯誤
??????????? Exit Sub
??????? End If
??? Next i
End Sub
Sub EvenPagePrint(control As IRibbonControl)? '打印偶數頁
??? On Error Resume Next
??? Dim TotalPageNums As Integer, i As Integer
??? TotalPageNums = ExecuteExcel4Macro("Get.Document(50)")
??? If TotalPageNums = 0 Then '如果為零,說明沒有可打印內容,退出程序
??????? MsgBox "Microsoft Excel 未發現任何可以打印的內容", 0 + 48
??????? Exit Sub
??? End If
??? If TotalPageNums = 1 Then
??????? MsgBox ("只有第一頁!!!")
??????? End
??? End If
??? For i = 1 To Int(TotalPageNums / 2) + 1
??????? ActiveWindow.SelectedSheets.PrintOut From:=2 * i, To:=2 * i
??????? If Err.Number = 1004 Then
??????????? MsgBox "打印時發生錯誤,請檢查打印機設置", 0 + 48 '提示用戶發生打印錯誤
??????????? Exit Sub
??????? End If
??? Next i
End Sub
Sub CurrentPagePrint(control As IRibbonControl)
??? On Error Resume Next
??? Dim m As Integer, n As Integer
??? Dim vPageBreaksCount As Integer, hPageBreaksCount As Integer
??? Dim NumPage As Integer, TotalPages As Integer
??? TotalPages = ExecuteExcel4Macro("Get.Document(50)")? '總的打印頁數
??? If TotalPages = 0 Then
?????? MsgBox "Microsoft Excel 未發現任何可以打印的內容", 0 + 48
?????? Exit Sub
??? End If
??? hPageBreaksCount = ActiveSheet.HPageBreaks.Count?? '返回水平分頁符個數
??? vPageBreaksCount = ActiveSheet.VPageBreaks.Count?? '返回垂直分頁符個數
??? For n = 1 To hPageBreaksCount? 'n返回當前水平分頁符的數量
??????? If ActiveSheet.HPageBreaks(n).Location.Row > ActiveCell.Row Then Exit For
??? Next
??? For m = 1 To vPageBreaksCount? 'm返回當前垂直分頁符的數量
?????? If ActiveSheet.VPageBreaks(m).Location.Column > ActiveCell.Column Then Exit For
??? Next
??? If ActiveSheet.PageSetup.Order = xlOverThenDown Then? '按頁面設置中的打印順序確定當前單元格所處的頁數
??????? NumPage = (n - 1) * (vPageBreaksCount + 1) + m??? '先行后列
??? Else
??????? NumPage = (m - 1) * (hPageBreaksCount + 1) + n??? '先列后行
??? End If
???
??? '判斷選定的單元格是否在打印區域中
??? If ActiveCell.Value = "" Then? '如果選定的單元格為空
??????? ActiveCell.Value = 1?????? '給活動單元格賦予臨時數值
??????? If ExecuteExcel4Macro("Get.Document(50)") > TotalPages Or NumPage > TotalPages Then '如果總的打印頁數增多或單元格所處頁數大于打印頁數
??????????? ActiveCell.Value = ""
??????????? MsgBox "選定的單元格不在打印范圍以內!"
??????????? Exit Sub
??????? Else
??????????? ActiveCell.Value = ""
??????????? ActiveSheet.PrintOut From:=NumPage, To:=NumPage, Copies:=1
??????????? If Err.Number = 1004 Then
??????????? MsgBox "打印時發生錯誤,請檢查打印機設置", 0 + 48 '提示用戶發生打印錯誤
??????????? Exit Sub
??????? End If
??????????? Exit Sub
??????? End If
??? Else
??????? ActiveSheet.PrintOut From:=NumPage, To:=NumPage, Copies:=1
??????? If Err.Number = 1004 Then
??????????? MsgBox "打印時發生錯誤,請檢查打印機設置", 0 + 48 '提示用戶發生打印錯誤
??????????? Exit Sub
??????? End If
??? End If
End Sub

??? 然后單擊VBA編輯器的“保存”按鈕保存工程。

??? 四、添加到Excel加載項中

??? 如果不是經常進行雙面打印,可以在每次打印前打開“Excel2007雙面打印工具.xlam”文件,然后進行雙面打印即可。

??? 如果需要經常進行雙面打印,可以讓Excel每次運行時,都自動加載“Excel2007雙面打印工具.xlam”文件,使自定義的選項卡總是出現在Excel 2007的功能區中。這必需把上述文件添加到Excel加載項中。步驟如下:

??? 1.單擊“Office 按鈕”,再單擊“Excel 選項”。

??? 2.在“Excel選項”對話框中單擊“加載項”。

??? 3.直接單擊“轉到”,彈出“加載項”窗口。

??? 4.單擊“瀏覽”,查找并選擇“Excel2007雙面打印工具.xlam”文件,單擊“確定”。


Excel整體界面趨于平面化,顯得清新簡潔。流暢的動畫和平滑的過渡,帶來不同以往的使用體驗。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 国产男女猛视频在线观看网站 | 日本一区二区三区四区无限 | 欧美手机手机在线视频一区 | 国产品精人成福利视频 | 精品夜夜春夜夜爽久久 | 久久www免费人成看国产片 | 91精品国| 极品美女写真菠萝蜜视频 | 亚洲伊人久久大香线蕉综合图片 | 久久久久久九九 | 亚洲一区国产 | 曰批全过程免费视频免费 | 99精品国内不卡在线观看 | 日韩久久久精品首页 | 日本福利片国产午夜久久 | 亚洲欧美字幕 | 国产短裙黑色丝袜在线观看下 | 日韩欧美成人乱码一在线 | 涩色| 日本一二区免费 | 国产亚洲欧洲精品 | 日韩1页 | 日本三级香港三级乳网址 | 国产一级二级三级 | 99热这里有免费国内精品 | 92精品国产自产在线观看48页 | 欧美日韩国产在线人成 | 99精品高清视频一区二区 | www.天天射.com| 亚洲国产高清在线精品一区 | bt天堂国产亚洲欧美在线 | 日韩中文字幕a | 五月天激激婷婷大综合丁香 | 日韩在线国产 | 欧美日韩中文国产一区二区三区 | 亚洲伊人色一综合网 | 91精品国产高清 | 日本欧美小视频 | 久久国产精品免费看 | 九色视频网址 | 在线观看久草视频 |