巧用VBA編程實(shí)現(xiàn)EXCEL電子表格的批量自動(dòng)打印_第1頁(yè)
巧用VBA編程實(shí)現(xiàn)EXCEL電子表格的批量自動(dòng)打印_第2頁(yè)
巧用VBA編程實(shí)現(xiàn)EXCEL電子表格的批量自動(dòng)打印_第3頁(yè)
巧用VBA編程實(shí)現(xiàn)EXCEL電子表格的批量自動(dòng)打印_第4頁(yè)
巧用VBA編程實(shí)現(xiàn)EXCEL電子表格的批量自動(dòng)打印_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——巧用VBA編程實(shí)現(xiàn)EXCEL電子表格的批量自動(dòng)打印

巧用VBA編程實(shí)現(xiàn)EXCEL證件

的批量打印

夏教榮陳文濤

(湖南省邵陽(yáng)縣白倉(cāng)鎮(zhèn)中學(xué)421114)

摘要介紹了在EXCEL中如何使用VBA,通過實(shí)例論述了在EXCEL中可以通過VBA編程實(shí)現(xiàn)含有照片的電子證件或表格批量自動(dòng)打印,提高了EXCEL在實(shí)際應(yīng)用中的工作效率及節(jié)省人力資源。

關(guān)鍵詞VBA編程自動(dòng)打印EXCEL

一VBA簡(jiǎn)介

1、什么是VBA?

VBA是VisualBasicForApplication的縮寫,它是以VisualBasic為發(fā)展基礎(chǔ)的語(yǔ)言。在Office軟件中,VBA應(yīng)用程序能夠在Word、Access、Excel等之間進(jìn)行交互式應(yīng)用,加強(qiáng)了應(yīng)用程序間的互動(dòng)。

VBA是VB的應(yīng)用程序版本,可以理解為“寄生在Office辦公軟件中的VB〞,可以看作是VB語(yǔ)言的一個(gè)子集。

VBA使Office形成了獨(dú)立的編程環(huán)境。

2、VBA與VisualBasic的關(guān)系1)、VB用于開發(fā)Windows應(yīng)用程序,其代碼最終被編譯為可執(zhí)行程序。而VBA是用于控制已有應(yīng)用程序的自動(dòng)化操作,其代碼為解釋。2)、VB擁有獨(dú)立的開發(fā)環(huán)境,而VBA必需集成在已有的應(yīng)用程序中(Excel等)。3)、VB開發(fā)出來的應(yīng)用程序在脫離開發(fā)環(huán)境后仍能執(zhí)行,而VBA編寫出來的程序必需在訪問集成應(yīng)用程序(Excel等)的基礎(chǔ)上進(jìn)行。

盡管有以上不同,但它們依舊十分相像。都使用一致的語(yǔ)言結(jié)構(gòu)。兩者的程序的語(yǔ)法及程序流程完全一樣。

二、在Excel中使用VBA

1、進(jìn)入VBA的方法

下面以O(shè)ffice2023為例說明來進(jìn)入VBA的方法:

功能區(qū)中有一個(gè)“開發(fā)工具〞選項(xiàng)卡,在此可以訪問VisualBasic編輯器和其他開發(fā)人員工具。由于Office2023在默認(rèn)狀況下不顯示“開發(fā)工具〞選項(xiàng)卡,因此必需使用以下過程啟用該選項(xiàng)卡:

1)、在“文件〞選項(xiàng)卡上,選擇“選項(xiàng)〞開啟“Excel選項(xiàng)〞對(duì)話框。2)、單擊該對(duì)話框左側(cè)的“自定義功能區(qū)〞。

3)、在該對(duì)話框左側(cè)的“從以下位置選擇命令〞下,選擇“常用命令〞。

4)、在該對(duì)話框右側(cè)的“自定義功能區(qū)〞下,選擇“主選項(xiàng)卡〞,然后選中“開發(fā)工具〞復(fù)選框。

~1~

5)、單擊“確定〞。

在Excel顯示“開發(fā)工具〞選項(xiàng)卡之后,注意選項(xiàng)卡上“VisualBasic〞、“宏〞和“宏安全性〞按鈕的位置。

圖1.Excel2023中的“開發(fā)工具〞選項(xiàng)卡

啟用“開發(fā)工具〞選項(xiàng)卡后,可以輕松找到“VisualBasic〞和“宏〞按鈕。

2、安全問題

單擊“宏安全性〞按鈕可以指定哪些宏可以運(yùn)行并需滿足哪些條件。盡管未授權(quán)宏代碼可能會(huì)嚴(yán)重?fù)p害計(jì)算機(jī),但阻止您運(yùn)行有幫助的宏的安全條件會(huì)嚴(yán)重阻礙您的工作效率。宏安全性是一個(gè)繁雜而又涉及廣泛的話題,您應(yīng)研究并了解是否應(yīng)使用Excel宏。

在本文中,請(qǐng)注意,假使當(dāng)您開啟一個(gè)包含宏的工作簿時(shí),在功能區(qū)和工作表之間出現(xiàn)“安全警告:宏已被禁用〞條,則可單擊“啟用內(nèi)容〞按鈕來啟用宏。

此外,作為一種安全措施,您不能以默認(rèn)的Excel文件格式(.xlsx)保存宏;而必需將宏保存在具有一個(gè)特別擴(kuò)展名.xlsm的文件中。

三、用VBA制作證件批量打印的實(shí)例

下面通過制作一張學(xué)員培訓(xùn)券來說明VBA在Excel中如何實(shí)現(xiàn)自動(dòng)批量打印多張含有照片的培訓(xùn)券。

1、準(zhǔn)備工作

1)、設(shè)計(jì)建立基本人員信息表

在Excel表格中建立如下圖2基本信息資料,具體建立過程在這里不再詳述,我建立的表比較多,實(shí)際這里要用到的表格只有兩張,所以其他的表格我就沒有必要說了。

~2~

圖2學(xué)員基本信息表(學(xué)員花名冊(cè)(計(jì)算機(jī)操作員)

2)、設(shè)計(jì)建立打印證件或報(bào)表格式見圖3

圖3培訓(xùn)券格式及內(nèi)容

~3~

2、使用VBA編程實(shí)現(xiàn)兩個(gè)工作表鏈接打印操作

1)、兩張表格設(shè)置完成后,回到培訓(xùn)券(計(jì)算機(jī)操作員)工作表即sheet7,點(diǎn)擊

開發(fā)工具標(biāo)簽欄——>Visualbasic,(或按ALT+F11快捷鍵),雙擊你

所要打印證件的工作項(xiàng)目,即可進(jìn)入VBA編程狀態(tài)輸入代碼。如圖4所示

圖4代碼窗口

全部代碼如下:

'宏

'功能:把光標(biāo)處的人員信息填充到\培訓(xùn)券(計(jì)算機(jī)操作員)\工作表,并培訓(xùn)券(計(jì)算機(jī)操作

員)

'用法:1.把光標(biāo)定位到需要培訓(xùn)券(計(jì)算機(jī)操作員)的人員行的單元格

~4~

'2.執(zhí)行本宏。SubsubSetPringInfo()OnErrorResumeNextDimoCell1,oCell2,'定義二變量

Dimcfz2,cfz3,cfz4,cfz5,cfz6,cfz7,cfz8,cfz9

Dimcfz10,cfz11,cfz12,cfz13,cfz14,cfz15,cfz16,cfz17,cfz18

'定義身份證取其次位數(shù)的內(nèi)存變量為cfz2,'取第三位數(shù)的內(nèi)存變量為cfz3,??以此類推到第十八位身份證內(nèi)存變量為cfz18.(身份證取第一位的內(nèi)存變量為oCell2,不需要重新定義)DimFileTypeAsString

DimiPXJHAsLong'編號(hào)

DimiRowAsLong'正在培訓(xùn)券(計(jì)算機(jī)操作員)人員的行號(hào)DimstrSheetAsString'人員信息的工作表名稱

strSheet=\學(xué)員花名冊(cè)(計(jì)算機(jī)操作員)\

'人員基本信息在學(xué)員花名冊(cè)(計(jì)算機(jī)操作員)工作表中,此處可以修改

'檢查是否在人員基本信息工作表中執(zhí)行此功能,假使是,則顯示不能在此工作表中執(zhí)行。IfActiveSheet.NamestrSheetThen

'不是在人員信息工作表中則彈出對(duì)話框。MsgBox\請(qǐng)?jiān)谌藛T基本信息工作表中執(zhí)行此功能\ExitSubEndIf

Do'循環(huán)開始

iRow=Selection.Row'行號(hào),從當(dāng)前選定的行開始培訓(xùn)券(計(jì)算機(jī)操作員)'讀當(dāng)前培訓(xùn)券(計(jì)算機(jī)操作員)行的左邊第一單元格內(nèi)容:序號(hào)

~5~

SetoCell1=Worksheets(strSheet).Cells(iRow,11)

'序號(hào)是數(shù)字的行需要培訓(xùn)券(計(jì)算機(jī)操作員)即所對(duì)應(yīng)培訓(xùn)券號(hào)行所在的單元格iPXJH=Val(oCell1.Value)'培訓(xùn)券號(hào)IfiPXJH>=10070893Then'在培訓(xùn)券號(hào)內(nèi)的數(shù)字

SetoCell2=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\oCell2.Value=iPXJH'姓名

SetoCell1=Worksheets(strSheet).Cells(iRow,2)

SetoCell2=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\oCell2.Value=oCell1.Value'插入圖片

FileType=InputBox(\輸入你的圖片的后綴名\輸入圖片格式\Numb=oCell2.Value

Sheet7.Select'改變當(dāng)前的工作表為sheet7即培訓(xùn)券(計(jì)算機(jī)操作員)WithActiveSheet.Pictures.Insert(\

'圖片所在的路徑為:D:\\pic\\,此路徑可以根據(jù)具體狀況更改SetTarget=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\

'將圖片插入到指定的單元格中,我設(shè)置的單元格為W5單元格,可以更'改為自己所需的單元格位置

EndWithWithSelection

~6~

.Top=Cells(5,23).Top+4'插入圖片的上方位置為W5的位置向下4

'個(gè)單位,數(shù)字4可以更改

.Left=Cells(5,23).Left+5'插入圖片的上方位置為W5的位置向下

'4個(gè)單位,數(shù)字4可以更改

.Width=Cells(5,23).Width+110

'插入圖片的寬度為W5單元格的寬

'度加110個(gè)單位的寬度為圖片的整個(gè)寬度,110可以更改

.Height=Cells(5,23).Height+110

'插入圖片的高度為W5單元格的高

'度加110個(gè)單位的高度為圖片的整個(gè)高度,110可以更改

EndWith'戶籍

SetoCell1=Worksheets(strSheet).Cells(iRow,9)

SetoCell2=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\oCell2.Value=oCell1.Value'身份證號(hào)

SetoCell1=Worksheets(strSheet).Cells(iRow,8)

SetoCell2=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\

'指定身份證第一位數(shù)字所在的位置,以下類推。

Setcfz2=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz3=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz4=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz5=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz6=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\

~7~

Setcfz7=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz8=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz9=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz10=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz11=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz12=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz13=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz14=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz15=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz16=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz17=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\Setcfz18=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\oCell2.Value=Mid((oCell1.Value),1,1)

'給身份證第一位數(shù)字賦具體的值,以此類推。

cfz2.Value=Mid((oCell1.Value),2,1)cfz3.Value=Mid((oCell1.Value),3,1)cfz4.Value=Mid((oCell1.Value),4,1)cfz5.Value=Mid((oCell1.Value),5,1)cfz6.Value=Mid((oCell1.Value),6,1)cfz7.Value=Mid((oCell1.Value),7,1)cfz8.Value=Mid((oCell1.Value),8,1)cfz9.Value=Mid((oCell1.Value),9,1)cfz10.Value=Mid((oCell1.Value),10,1)

~8~

cfz11.Value=Mid((oCell1.Value),11,1)cfz12.Value=Mid((oCell1.Value),12,1)cfz13.Value=Mid((oCell1.Value),13,1)cfz14.Value=Mid((oCell1.Value),14,1)cfz15.Value=Mid((oCell1.Value),15,1)cfz16.Value=Mid((oCell1.Value),16,1)cfz17.Value=Mid((oCell1.Value),17,1)cfz18.Value=Mid((oCell1.Value),18,1)'工種

SetoCell1=Worksheets(strSheet).Cells(iRow,7)

SetoCell2=Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\oCell2.Value=oCell1.Value

'培訓(xùn)券(計(jì)算機(jī)操作員)證件,\為定義頁(yè)面的培訓(xùn)券(計(jì)算機(jī)操作員)范圍Worksheets(\培訓(xùn)券(計(jì)算機(jī)操作員)\'清空sheet7中相片單元格中的照片為了避免照片打印重復(fù)DimxAsInteger

Forx=1ToSheet7.Shapes.Count

IfSheet7.Shapes(x).TopLeftCell.Address=\

'絕對(duì)引用單元格W5是我設(shè)置的相片所在的單元格Sheet7.Shapes(x).Delete'刪除圖片單元格的內(nèi)容EndIfNextxSheet1.Activate

'激活當(dāng)前的工作表為sheet1即學(xué)員花名冊(cè)(計(jì)算機(jī)操作員)

~9~

'打完一個(gè)證件后,詢問是否培訓(xùn)券(計(jì)算機(jī)操作員)下一個(gè)。

IfMsgBox(\繼續(xù)打印下一人員?\'中斷培訓(xùn)券(計(jì)算機(jī)操作員)打印ExitSubEndIf

'為培訓(xùn)券(計(jì)算機(jī)操作員)下一人員做準(zhǔn)備

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論