• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

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

        運用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永久男同| 99久久综合精品免费| 久久影院亚洲一区| 日韩精品视频在线观看免费| 成年人免费网站在线观看| 亚洲视频在线观看不卡| 永久免费av无码入口国语片| 中文字幕一精品亚洲无线一区| 男人扒开添女人下部免费视频| 国产成人3p视频免费观看| 亚洲一区二区三区国产精华液 | 91人成网站色www免费下载| 久久精品国产亚洲Aⅴ香蕉| AAA日本高清在线播放免费观看| 国产yw855.c免费视频| 深夜福利在线视频免费| 国产亚洲av片在线观看16女人| 午夜精品一区二区三区免费视频| 亚洲第一页在线观看| 成年轻人网站色免费看| 色老头综合免费视频| 久久亚洲精品成人综合| 猫咪免费人成网站在线观看| 亚洲影院天堂中文av色| 亚洲男人在线无码视频| 免费国产a国产片高清| 成在线人免费无码高潮喷水| 国产精品手机在线亚洲| 国产在线观看片a免费观看| jzzijzzij在线观看亚洲熟妇| 亚洲美女在线国产| 三年片在线观看免费观看大全一 | 久久大香伊焦在人线免费| 亚洲人成777在线播放| 免费很黄很色裸乳在线观看| 国产成年无码久久久免费| 91嫩草亚洲精品| 伊人久久大香线蕉亚洲五月天|