Excel工作薄操作_第1頁
Excel工作薄操作_第2頁
Excel工作薄操作_第3頁
Excel工作薄操作_第4頁
Excel工作薄操作_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 5 章 工作薄操作第 5 章工作薄操作前面章節(jié)已經(jīng)分別講解了單元格、工作表對象。在 Excel VBA 中,工作簿操作則是前 面各對象操作的基礎(chǔ)。例如,用戶如果希望對工作表或者單擊格進(jìn)行操作,首先必須打開 工作薄對象。在用戶對工作表或者單元格對象操作結(jié)束后,必須對工作薄進(jìn)行保存,才能 讓所有的操作保存。基于工作簿的 VBA 代碼主要有新建、打開、保存工作簿,以及工作 簿的保護(hù)與撤消等相關(guān)代碼。本章將詳細(xì)講解如何使用 VBA 代碼操作工作薄。5.1操作工作簿在 Excel VBA 中,單個工作薄對應(yīng) Workbook 對象,而多個 Workbook 對象則組成 Workbooks 集合。工作

2、簿的操作包括新建、保存工作簿等。本節(jié)介紹常用的操作工作簿的 實例。案例 91新建工作簿1功能說明在實際開發(fā)中,用戶可能需要在特定的時候創(chuàng)建新的工作薄。用戶可以使用 VBA 代 碼實現(xiàn)該功能。2語法說明在 Excel VBA 中,用戶可以使用 Workbooks 集合對象的 Add 方法新建工作薄。該方 法的語法格式如下:表達(dá)式.Add(Template) 參數(shù) Template 確定如何創(chuàng)建新工作簿。如果此參數(shù)為指定現(xiàn)有 Excel 文件名的字符串, 那么創(chuàng)建新工作簿將以該指定的文件作為模板。如果此參數(shù)為常量,新工作簿將包含一個 指定類型的工作表??蔀橐韵鲁A恐唬?xlWBATChart:圖

3、表; xlWBATExcel4IntlMacroSheet:Excel 版本 4 宏; xlWBATExcel4MacroSheet:Excel 版本 4 國際宏; xlWBATWorksheet:工作表。如果省略此參數(shù),Excel 將創(chuàng)建包含一定數(shù)目空白工作表的新工作簿(該數(shù)目由 SheetsInNewWorkbook 屬性設(shè)置)。Excel 自動為新創(chuàng)建的工作簿命名為“BookN”,其中“N” 是下一個可用的數(shù)字。新工作簿將成為活動工作簿。創(chuàng)建新工作簿更好的方法是將其分配199給一個對象變量,在程序中可通過該對象變量對工作簿進(jìn)行設(shè)置。使用對象變量可以很容 易地控制新工作簿。3案例說明某公司

4、統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),用戶需要新建工作薄,原始數(shù)據(jù)如圖 5.1 所示。圖 5.1 原始數(shù)據(jù)4編寫代碼新建工作簿的 VBA 代碼如下:Sub AddNewWorkbook() Dim Wb As WorkbookApplication.DisplayAlerts = False Set Wb = Workbooks.Add Application.DisplayAlerts = TrueEnd Sub5運行結(jié)果運行程序代碼,查看新建的工作薄,如圖 5.2 所示。圖 5.2 新建工作薄6程序分析在上面的代碼中,首先從工作表中獲取要創(chuàng)建工作簿的數(shù)

5、量,再循環(huán)使用 Add 方法新 建工作簿,保存工作簿后再關(guān)閉退出當(dāng)前工作簿。案例 92打開工作簿1功能說明在用戶在使用 VBA 編寫數(shù)據(jù)處理的代碼時,經(jīng)常需要處理多個工作薄中的數(shù)據(jù)。這 個時候,用戶需要使用 VBA 代碼打開其他的工作薄。2語法說明在 Excel VBA 中,用戶可以使用 Workbooks 的 Open 方法打開一個工作簿時,該工作 簿將成為 Workbooks 集合的成員。下述代碼打開當(dāng)前目錄中的“×××××.xls”工作簿。Sub OpenUp()Workbooks.Open("×××

6、;×××××××.xls ")End Sub在更多的時候,打開工作簿時需要查找文件所在位置,這時可通過“打開”對話框來 進(jìn)行查找,引用“打開”對話框的語法格式如下: Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect) 使用 GetOpenFilename 方法返回選定的文件名或用戶輸入的名稱。返回的名稱可能包 含路徑說明。如果用戶取消了對話框,則該值為 False。對打開的工作簿,可使用 Close

7、 方法進(jìn)行關(guān)閉,且不退出 Excel 程序。如果某個打開 的工作簿有改動,Excel 將顯示詢問是否保存更改的對話框和相應(yīng)提示。提示:Workbooks 集合還提供了 OpenDatabase、OpenText 和 OpenXML 方法,分別用來打開數(shù)據(jù)庫、 文本文件和 XML 數(shù)據(jù)文件。3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),用戶需要打開某各數(shù)據(jù)工作薄,原始數(shù)據(jù)如圖 5.3 所示。圖 5.3 原始數(shù)據(jù)4編寫代碼打開工作簿的 VBA 代碼如下:Sub OpenBooks()Workbooks.Open "D:Excel VBAMyW

8、orkBook.xlsx" End Sub5運行結(jié)果運行程序代碼,查看打開的工作薄,如圖 5.4 所示。其原始工作薄如圖 5.5 所示。圖 5.4 打開工作薄圖 5.5 原始工作薄6程序分析在上面的代碼中,首先通過 GetOpenFilename 方法顯示“打開”對話框,如果用戶未 選擇要打開的工作簿,則將反復(fù)顯示“打開”對話框。案例 93導(dǎo)入文本文件1功能說明Excel 可以和其他文件格式的數(shù)據(jù)進(jìn)行數(shù)據(jù)交互,在本小節(jié)中,將演示如何使用 VBA代碼導(dǎo)入文本文件中的數(shù)據(jù)。2語法說明在 Excel VBA 中,用戶可以使用 Workbooks 集合對象的 OpenText 方法,可載入一

9、個 文本文件,并將其作為包含單個工作表的新工作簿進(jìn)行分列處理,然后在此工作表中放入 經(jīng)過分列處理的文本文件數(shù)據(jù)。該方法的語法格式如下:表達(dá)式.OpenText(Filename, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter,Tab,Semicolon,Comma,Space,Other,OtherChar,FieldInfo,TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)該方法中,除了 Fi

10、lename 為必需的參數(shù)之外,其他參數(shù)都可省略。各參數(shù)的含義如下:Filename:指定要打開和分列的文本文件的名稱。 Origin:指定文本文件來源。可為以下常量 xlMacintosh、xlWindows 或 xlMSDOS。此 外,它還可以是一個整數(shù),表示所需代碼頁的代碼頁編號。例如,“1256”指定源文 本文件的編碼是阿拉伯語。如果省略該參數(shù),則此方法將使用“文本導(dǎo)入向?qū)А敝小拔?件原始格式”選項的當(dāng)前設(shè)置。StartRow:文本分列處理的起始行號。默認(rèn)值為 1。 DataType:指定文件中數(shù)據(jù)的列格式??蔀槌A?xlDelimited 或 xlFixedWidth。如果未 指定該

11、參數(shù),則 Excel 將嘗試在打開文件時確定列格式。 TextQualifier:指定文本識別符號。 ConsecutiveDelimiter:如果為 True,則將連續(xù)分隔符視為一個分隔符。默認(rèn)值為 False。 Tab:如果為 True,則將制表符用作分隔符(DataType 必須為 xlDelimited)。默認(rèn)值為 False。 Semicolon:如果為 True,則將分號用作分隔符(DataType 必須為 xlDelimited)。默認(rèn) 值為 False。 Comma:如果為 True,則將逗號用作分隔符(DataType 必須為 xlDelimited)。默認(rèn)值 為 False

12、。 Space:如果為 True,則將空格用作分隔符(DataType 必須為 xlDelimited)。默認(rèn)值 為 False。 Other:如果為 True,則將 OtherChar 參數(shù)指定的字符用作分隔符(DataType 必須為xlDelimited)。默認(rèn)值為 False。 OtherChar:(如果 Other 為 True,則為必選項)。當(dāng) Other 為 True 時,指定分隔符。 如果指定了多個字符,則僅使用字符串中的第一個字符而忽略剩余字符。FieldInfo:包含單列數(shù)據(jù)相關(guān)分列信息的數(shù)組。對該參數(shù)的解釋取決于 DataType 的值。 如果此數(shù)據(jù)由分隔符分隔,則該參數(shù)

13、為由兩元素數(shù)組組成的數(shù)組,其中每個兩元素數(shù)組指定一個特定列的轉(zhuǎn)換選項。第一個元素為列標(biāo)(從 1 開始),第二個元素是XlColumnDataType 的常量之一,用于指定分列方式。 TextVisualLayout:文本的可視布局。DecimalSeparator:識別數(shù)字時,Excel 使用的小數(shù)分隔符。默認(rèn)設(shè)置為系統(tǒng)設(shè)置。ThousandsSeparator:識別數(shù)字時,Excel 使用的千位分隔符。默認(rèn)設(shè)置為系統(tǒng)設(shè)置。TrailingMinusNumbers:如果應(yīng)將結(jié)尾為減號字符的數(shù)字視為負(fù)數(shù)處理,則指定為 True。如果為 False 或省略該參數(shù),則將結(jié)尾為減號字符的數(shù)字視為文本處

14、理。Local:如果分隔符、數(shù)字和數(shù)據(jù)格式應(yīng)使用計算機(jī)的區(qū)域設(shè)置,則指定為 True。3案例說明在本例中,用戶需要導(dǎo)入文本文件中的數(shù)據(jù)。在默認(rèn)情況下,Excel 文件中不包含任 何的數(shù)據(jù),如圖 5.6 所示。圖 5.6 原始數(shù)據(jù)4編寫代碼本例的代碼很簡單,具體如下:Sub OpenTextFiles()Workbooks.OpenText Filename:="D:Excel VBA銷售表.txt", _ DataType:=xlDelimited, Tab:=TrueEnd Sub5運行結(jié)果運行程序代碼,查看打開的工作薄,如圖 5.7 所示。圖 5.7 打開的文本文件原始

15、的文本文件路徑如圖 5.8 所示。圖 5.8 文本文件的路徑默認(rèn)情況下,文本文件中的數(shù)據(jù)如圖 5.9 所示。圖 5.9 文本文檔的數(shù)據(jù)6程序分析在上面的程序代碼中,主要為了演示如何導(dǎo)入文本文件,從上面的參數(shù)設(shè)置可以看出, 用戶可以設(shè)置關(guān)于導(dǎo)入的各種屬性,這里就不重復(fù)介紹。案例 94保存工作簿1功能說明保存工作薄是十分常見的操作,用戶可以通過 VBA 代碼實現(xiàn)該操作。2語法說明在 Excel VBA 中,當(dāng)用戶需要保存工作簿時,可以使用 Workbook 對象的 Save 方法, 該方法將工作簿的修改保存到磁盤中,不需要任何參數(shù)。同時,通過 Workbook 對象的 Path 屬性,可獲取工作簿

16、的完整路徑,不包括末尾的分 隔符和應(yīng)用程序名稱。通過 Open 方法打開的工作簿,其 Path 屬性不為空。而新建的工作 簿,其 Path 屬性為空。3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),需要對工作薄所做的修改進(jìn)行保存,原始數(shù)據(jù)如圖 5.10 所示。圖 5.10 原始數(shù)據(jù)4編寫代碼保存工作簿鈕的 VBA 代碼如下:Sub SaveAllBooks() Dim Wb As WorkbookFor Each Wb In Workbooks If Wb.Path <> "" ThenWb.Save End IfNe

17、xt WbEnd Sub5運行結(jié)果運行程序代碼,查看打開的工作薄,如圖 5.11 所示。圖 5.11 保存工作薄6程序分析在上面代碼中,根據(jù)工作簿的 Path 參數(shù)來判斷是否為新建工作簿,若 Path 屬性值不 為空,則保存該工作簿。案例 95重命名保存工作簿1功能說明在用戶使用 Excel VBA 處理數(shù)據(jù)的時候,經(jīng)常需要在對工作薄進(jìn)行編輯后,重命名進(jìn) 行保存,用戶可以使用 VBA 代碼實現(xiàn)該功能。2語法說明在 Excel VBA 中,用戶可以使用 SaveAs 方法將工作簿換名保存,其語法格式如下:表達(dá)式.SaveAs(FileName, FileFormat, Password, Wri

18、teResPassword, ReadOnlyRecommended,CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)SaveAs 方法的參數(shù)都可以省略。各參數(shù)的含義如下:Filename:表示要保存文件的文件名的字符串??砂暾窂剑绻恢付窂?, Excel 將文件保存到當(dāng)前文件夾中。FileFormat:保存文件時使用的文件格式。對于現(xiàn)有文件,默認(rèn)采用上一次指定的文 件格式;對于新文件,默認(rèn)采用當(dāng)前所用 Excel 版本的格式。Password:

19、它是區(qū)分大小寫的字符串,用于指定文件的保護(hù)密碼。WriteResPassword:表示文件寫保護(hù)密碼的字符串。如果文件保存時帶有密碼,但打 開文件時不輸入密碼,則該文件以只讀方式打開。ReadOnlyRecommended:如果為 True,則在打開文件時顯示一條消息,提示該文件 以只讀方式打開。 CreateBackup:如果為 True,則創(chuàng)建備份文件。 AccessMode:工作簿的訪問模式。 ConflictResolution :它確 定該方法在保存工作簿時如何解決沖突。如果設(shè) 為 xlUserResolution,則顯示沖突解決對話框。如果設(shè)為 xlLocalSessionChan

20、ges,則自動 接受本地用戶的更改。如果設(shè)為 xlOtherSessionChanges,則自動接受來自其他會話的 更改(而不是本地用戶的更改)。如果省略此參數(shù),則顯示沖突處理對話框。AddToMru:如果為 True,則將該工作簿添加到最近使用的文件列表中。默認(rèn)值為 False。 TextCodepage 和 TextVisualLayout:不在美國英語版的 Excel 中使用。Local:如果為 True,則以 Excel 的語言保存文件。如果為 False(默認(rèn)值),則以 VBA的宏語言版本的語言保存文件。3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對

21、應(yīng)的201數(shù)據(jù),需要重命名保存工作薄,原始數(shù)據(jù)如圖 5.12 所示。圖 5.12 原始數(shù)據(jù)4編寫代碼重命名保存工作簿的 VBA 代碼如下:Sub SaveOther()Dim oldName As String Dim newName As String Dim FolderName As String Dim fname As StringoldName = ActiveWorkbook.Name newName = "重命名:" & oldNameMsgBox "將<" & oldName & ">以&l

22、t;" & newName & ">的名稱保存"FolderName = Application.DefaultFilePath fname = FolderName & "" & newNameActiveWorkbook.SaveAs fname End Sub5運行結(jié)果運行程序代碼,查看重命名保存的工作薄,如圖 5.13 所示。圖 5.13 提示保存信息單擊對話框中的“確定”按鈕后,查看保存后的文件,如圖 5.14 所示。圖 5.14 查看重命名的文件該重命名的工作薄保存在默認(rèn)路徑中,如圖 5.15

23、所示。圖 5.15 查看文件保存的路徑6程序分析在上面的代碼中,通過 Application.DefaultFilePath 獲取程序代碼的默認(rèn)路徑。因此, 本程序?qū)⑿聞?chuàng)建的工作薄保存在默認(rèn)路徑中。239案例 96將工作簿保存為網(wǎng)頁1功能說明用戶可以將工作薄保存為各種其他格式,本小節(jié)中,將結(jié)合具體的例子來演示如何將 工作薄保存為網(wǎng)頁。2語法說明在 Excel VBA 中,用戶使用 Workbook 的 SaveAs 方法可以將文檔保存為 Web 頁,有 關(guān)該方法的語法格式參見上例中的介紹。在本例中,要將工作簿保存為 Web 頁,所以需要將 SaveAs 的參數(shù) FileFormat 設(shè)置為 常

24、量 xlHtml。保存工作表時的文件格式常量在 xlFileFormat 枚舉類型中,有關(guān)常量值可通 過 Excel 的幫助查找。3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),需要將工作薄保存為網(wǎng)頁格式,原始數(shù)據(jù)如圖 5.16 所示。圖 5.16 原始數(shù)據(jù)4編寫代碼本例代碼很簡單,具體如下:Sub SaveAsWeb()ActiveWorkbook.SaveAs Filename:="銷售表.htm", FileFormat:=xlHtmlEnd Sub5運行結(jié)果運行程序代碼,查看重命名保存的工作薄,如圖 5.17 所示。圖 5

25、.17 保存的 web 文件用戶可以查看網(wǎng)頁格式文件保存的路徑,如圖 5.18 所示。圖 5.18 文件的保存路徑同時,用戶可以通過 IE 打開保存的 web 網(wǎng)頁文件,如圖 5.19 所示。圖 5.19 用 IE 打開文檔6程序分析和在 Excel 文檔中一樣,用戶可以在 IE 中查看其他工作表的內(nèi)容,如圖 5.20 所示。圖 5.20 查看其他工作表案例 97查看工作薄信息1功能說明工作薄的信息對于大型軟件程序開發(fā)是十分重要的信息,用戶可以通過 VBA 代碼獲 取工作薄的信息。2語法說明在 Excel VBA 中,用戶可以通過訪問 ThisWorkbook 的屬性獲取工作薄的信息。表 5.

26、1 列出工作簿的一些通用屬性,使用這些通用屬性在組織大的程序,定位程序目錄等方面具 有非常重要的用途。表 5.1 工作簿的一些通用屬性序號名稱類型意義1NameString只是返回名稱部分2PathString只返回路徑部分3FullNameString返回完整路徑名稱,包括工作簿文件名4CodeNameString返回對象的代碼名。5ReadOnlyString工作簿對象是否以只讀方式打開6SavedString工作簿從上次保存至今是否發(fā)生過更改3案例說明本例的主要功能是在工作表中顯示工作薄的基本信息,其中,需要了解其信息的原始 數(shù)據(jù)如圖 5.21 所示。圖 5.21 原始表格4編寫代碼顯示

27、工作薄信息的 VBA 代碼如下:Sub ShowInfo() With ActiveSheet.Range("B1").Value = ThisWorkbook.Name.Range("B2").Value = ThisWorkbook.Path.Range("B3").Value = ThisWorkbook.FullName.Range("B4").Value = ThisWorkbook.CodeName.Range("B5").Value = ThisWorkbook.Saved End

28、 With End Sub 5運行結(jié)果運行程序代碼,查看工作薄的信息,如圖 5.22 所示。圖 5.22 查看工作薄的信息6程序分析在 Excel VBA 中,還提供了關(guān)于工作薄的很多其他屬性。用戶在編寫程序代碼的時候, 可以根據(jù)需要訪問和設(shè)置這些屬性。案例 98查看工作薄的內(nèi)置屬性1功能說明工作薄的內(nèi)置屬性和其普通屬性不同,通過訪問工作薄的內(nèi)置屬性,用戶可以了解到 保存時間、用戶名等信息。用戶可以通過 VBA 獲取工作薄的內(nèi)置屬性。2語法說明在 Excel VBA 中,工作薄的保存時間屬于內(nèi)在信息,和前面例子中的信息不同。用戶 可以按照下面的步驟查看和修改文檔的屬性:(1)單擊“Office

29、 按鈕”打開下拉菜單。選擇 “準(zhǔn)備”|“屬性”命令,在 Excel 的 功能區(qū)下方將打開如圖 5.23 所示的“文檔屬性”面板,供用戶查看和修改。圖 5.23 文檔屬性(2)單擊左上角“文檔屬性”標(biāo)簽,打開下拉菜單選擇“高級屬性”,打開如圖 5.24所示的屬性窗口,在其“自定義”選項卡中可定義各種屬性值。圖 5.24 查看內(nèi)在屬性在 Excel VBA 中,用戶可以通過代碼來獲取并且設(shè)置文檔的屬性值。實際上,使用 Workbook 對象的 BuiltinDocumentProperties 屬性返回 DocumentProperties 集合,該集合表 示工作簿的所有內(nèi)置文檔屬性,通過指定屬性

30、的名稱或集合索引號,用 Item 方法可返回集 合中的單個成員(DocumentProperty 對象)。通過 DocumentProperty 對象的屬性可操作屬 性,該對象的常用屬性值如下:Name 屬性:獲取或設(shè)置文檔屬性的名稱。Value 屬性:獲取或設(shè)置文檔屬性的值。Type 屬性:獲取或設(shè)置文檔屬性類型。對于內(nèi)置文檔屬性為只讀;對于自定義文檔屬 性為可讀/寫。該屬性使用 msoDocProperties 枚舉類型,具體各枚舉常量如下: msoPropertyTypeBoolean:Boolean。 msoPropertyTypeDate:Date。 msoPropertyTypeF

31、loat:Floating point。 msoPropertyTypeNumber:Integer。 msoPropertyTypeString:String。3案例說明本例的主要檢測運行的工作薄是否保存。如果用戶沒有保存過工作薄,則系統(tǒng)顯示“工 作簿未保存”。如果用戶在之前某個時刻保存過該工作薄,則顯示工作薄的保存信息,原 始工作薄文件如圖 5.25 所示。圖 5.25 原始表格4編寫代碼顯示工作薄的保存時間信息的 VBA 代碼如下:Sub ShowSaveInfo()Dim SaveTime As StringSaveTime = ActiveWorkbook.BuiltinDocume

32、ntProperties("Last Save Time").Value If SaveTime = "" ThenMsgBox ActiveWorkbook.Name & "工作簿沒有保存."ElseMsgBox "本工作簿在" & SaveTime & "保存", , ActiveWorkbook.Name End IfEnd Sub5運行結(jié)果運行程序代碼,查看工作薄的信息,如圖 5.26 所示。圖 5.26 查看工作薄的保存時間6程序分析在上面的程序代碼中,通過 B

33、uiltinDocumentProperties 的 Last Save Time 成員訪問工作薄的最后修改時間,如果用戶沒有保存過該工作薄,系統(tǒng)會返回空文本,則顯示沒有保存。 如果已經(jīng)保存過,則系統(tǒng)返回修改的時間。案例 99設(shè)置工作簿密碼1功能說明在 Excel VBA 中,為了工作簿的安全,可以為工作簿設(shè)置打開權(quán)限密碼。用戶可以通 過 VBA 代碼設(shè)置工作薄的密碼。2語法說明在 Excel VBA 中,使用 Workbook 對象的 Password 屬性可獲取或設(shè)置該密碼。要取消 工作簿的密碼,可設(shè)置其 Password 屬性為空字符串,代碼如下: ActiveWorkbook.Pass

34、word = "" 在 Excel 中,用戶也可以直接通過操作來設(shè)置文檔的密碼。單擊“Office 按鈕”打開 下拉菜單,從下拉菜單中選擇“準(zhǔn)備”|“加密文檔”命令,如圖 5.27 所示。打開“加密文檔”對話框,如圖 5.28 所示,在其中可以設(shè)置工作薄的密碼。圖 5.27 選擇加密文檔選項圖 5.28 設(shè)置對應(yīng)的密碼3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),用戶需要設(shè)置工作薄密碼,原始數(shù)據(jù)如圖 5.29 所示。圖 5.29 原始數(shù)據(jù)4編寫代碼設(shè)置工作薄密碼的具體代碼如下:Sub SetBookPassWord()With

35、ActiveWorkbook.Password = InputBox("輸入工作薄的密碼:").Save.Close True End WithEnd Sub5運行結(jié)果運行程序代碼,設(shè)置工作薄的密碼,如圖 5.30 所示。圖 5.30 設(shè)置工作薄的密碼當(dāng)用戶單擊對話框中的“確定”按鈕后,系統(tǒng)會關(guān)閉工作薄,如圖 5.31 所示。圖 5.31 關(guān)閉工作薄當(dāng)用戶再次打開該工作薄的時候,需要輸入密碼,如圖 5.32 所示。圖 5.32 輸入密碼當(dāng)用戶輸入密碼錯誤的時候,系統(tǒng)會提示密碼輸入錯誤,如圖 5.33 所示。圖 5.33 密碼錯誤提示信息6程序分析該程序代碼所實現(xiàn)的功能和用戶

36、自行設(shè)置工作薄的密碼類似。案例 100查看用戶狀態(tài)信息1功能說明用戶狀態(tài)是一種特殊的信息,通過用戶狀態(tài)信息,用戶可以了解工作薄的創(chuàng)建時間等。 用戶可以通過 VBA 代碼獲取用戶狀態(tài)的信息。2語法說明在 Excel VBA 中,用戶可以使用 Workbook.UserStatus 屬性來獲取用戶的信息。 UserStatus 屬性返回二維數(shù)組,該數(shù)組提供有關(guān)以共享列表模式打開工作簿的用戶的信息。 其語法表達(dá)式如下:表達(dá)式.UserStatus 其中的表達(dá)式表示 Workbook 對象的變量。其中,數(shù)組第二維的第一個元素為用戶名, 第二個元素是用戶打開工作簿的日期和時間,第三個元素是表示清單類型的

37、數(shù)字,1 表示 獨占,2 表示共享)。UserStatus 屬性不返回以只讀方式打開指定工作簿的用戶的信息。同時,為了逐個返回數(shù)組的信息,需要使用 UBound 函數(shù)。該函數(shù)的主要功能是返回Long 型數(shù)據(jù),其值為指定的數(shù)組維可用的最大下標(biāo)。其語法表達(dá)式是: UBound(arrayname, dimension) 其中參數(shù)的具體說明如下:arrayname:數(shù)組變量的名稱,遵循標(biāo)準(zhǔn)變量命名約定。dimension:指定返回哪一維的上界。1 表示第一維,2 表示第二維,如此等等。如果 省略 dimension,就認(rèn)為是 1。3案例說明本例的主要功能是在工作表中顯示工作薄的用戶狀態(tài)信息,其中,需

38、要了解其信息的 原始數(shù)據(jù)如圖 5.34 所示。圖 5.34 原始表格4編寫代碼顯示用戶狀態(tài)信息的 VBA 代碼如下: Sub ShowUserInfo() Dim UserInfo() As Variant Dim Row As IntegerUserInfo = ActiveWorkbook.UserStatus With ActiveWorkbook.Sheets(1)For Row = 1 To UBound(UserInfo, 1).Cells(Row + 1, 1) = UserInfo(Row, 1).Cells(Row + 1, 2) = UserInfo(Row, 2) Sel

39、ect Case UserInfo(Row, 3)Case 1.Cells(Row + 1, 3).Value = "獨占" Case 2.Cells(Row + 1, 3).Value = "共享"End Select NextEnd WithEnd Sub5運行結(jié)果運行程序代碼,查看用戶狀態(tài)的信息,如圖 5.35 所示。圖 5.35 查看用戶狀態(tài)的信息6程序分析在上面的程序代碼中,為了顯示讀取方式,直接將返回的數(shù)值轉(zhuǎn)換為對應(yīng)的讀取方式。 因此,在最后的工作薄單元格中顯示的是讀取方式。案例 101激活工作薄1功能說明在 Excel VBA 中,為用戶激

40、活工作薄提供了對應(yīng)的事件。用戶可以在對應(yīng)事件中編寫代碼,來實現(xiàn)激活工作薄時的操作。2語法說明在 Excel VBA 中,用戶可以通過 Workbook.Activate 來激活工作薄。當(dāng)用戶激活工作 簿、工作表、圖表工作表或嵌入式圖表時發(fā)生此事件。其語法表達(dá)式如下:表達(dá)式.Activate 表達(dá)式表示 Workbook 對象的變量。新建窗口時不發(fā)生此事件。切換兩個顯示同一工 作簿的窗口時,將發(fā)生 WindowActivate 事件,但不發(fā)生工作簿的 Activate 事件 3案例說明本例的主要功能是依次激活打開的工作薄,直到最后一個打開的工作薄。其中,默認(rèn) 打開的工作薄如圖 5.36 所示。圖

41、 5.36 打開的工作薄4編寫代碼依次激活工作薄的 VBA 代碼如下:Sub ActiveWorkBooks() Dim intNum As Long Dim i As IntegerDim strMsg As String intNum = Workbooks.CountFor i = 1 To intNum Workbooks(i).ActivatestrMsg = MsgBox("第 " & i & "個工作簿被激活,繼續(xù)激活?", vbYesNo)If strMsg = vbNo Then Exit SubEnd IfIf i =

42、 intNum ThenMsgBox "最后一個工作簿已被激活!" End IfNext iEnd Sub5運行結(jié)果運行程序代碼,查看激活第一個工作薄的情況,如圖 5.37 所示。圖 5.37 激活第一個工作薄單擊對話框中的“確定”按鈕,繼續(xù)激活第二個工作薄,如圖 5.38 所示。圖 5.38 激活第二個工作薄單擊“確定”按鈕,顯示激活的信息,如圖 5.39 所示。圖 5.39 顯示激活信息6程序分析在上面的程序代碼中,首先統(tǒng)計工作薄的個數(shù),然后通過循環(huán)來依次激活現(xiàn)在已經(jīng)打 開的工作薄。案例 102保護(hù)工作簿1功能說明和其他對象類似,用戶同樣可以使用 VBA 代碼來保護(hù)工作

43、薄。2語法說明在 Excel VBA 中,用戶可以使用 Workbook 對象的 Protect 方法對工作簿進(jìn)行保護(hù)。其 語法格式如下:表達(dá)式.Protect(Password, Structure, Windows) Protect 方法的三個參數(shù)都可省略,各參數(shù)的含義如下: Password:一個字符串,該字符串為工作簿的密碼。如果省略此參數(shù),不用密碼就可 以取消對工作簿的保護(hù)。否則,必須指定密碼才能取消對工作簿的保護(hù)。如果忘記了 密碼,就無法取消對工作簿的保護(hù)。Structure:如果為 True,則保護(hù)工作簿結(jié)構(gòu),此時不能對工作簿中的工作表進(jìn)行插入、 復(fù)制、刪除等操作。默認(rèn)值是 Fa

44、lse。Windows:如果為 True,則保護(hù)工作簿窗口,此時該工作簿右上角的最小化、最大化 和關(guān)閉按鈕消失。如果省略此參數(shù),則窗口不受保護(hù)。默認(rèn)值是 False。3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),用戶需要保護(hù)工作薄,原始數(shù)據(jù)如圖 5.40 所示。圖 5.40 原始數(shù)據(jù)4編寫代碼保護(hù)工作簿的 VBA 代碼如下:Sub SetProtectBooks()Dim pw As Stringpw = Application.InputBox(prompt:="設(shè)置工作簿的密碼:", _ Title:="設(shè)置密碼&

45、quot;, Type:=2)ActiveWorkbook.Protect Password:=pw, Structure:=True, Windows:=TrueEnd Sub5運行結(jié)果運行程序代碼,設(shè)置保護(hù)工作薄的密碼,如圖 5.41 所示。圖 5.41 設(shè)置工作薄的密碼被保護(hù)的工作簿效果如圖 5.42 所示,當(dāng)用戶在工作表標(biāo)簽上右擊,彈出的快捷菜單中“插入”、“刪除”等相關(guān)操作工作表的菜單也變?yōu)榛疑?,不允許用戶進(jìn)行操作了。圖 5.42 保護(hù)的結(jié)果為了撤銷工作薄的保護(hù),用戶可以選擇“審閱”|“更改”|“保護(hù)工作薄”|“保護(hù)結(jié) 構(gòu)和窗口”選項,如圖 5.43 所示。圖 5.43 選擇撤銷工作

46、薄的保護(hù)在打開的對話框中輸入密碼,如圖 5.44 所示。圖 5.44 輸入密碼單擊對話框中的“確定”按鈕,查看撤銷保護(hù)后的工作薄,如圖 5.45 所示。圖 5.45 撤銷工作薄6程序分析在 Excel VBA 中,用戶使用 Unprotect 方法可取消工作簿的保護(hù)。如果工作簿不是受 保護(hù)的,則此方法不起作用。該方法的語法格式如下:表達(dá)式.Unprotect(Password) 參數(shù) Password 指定用于解除工作簿保護(hù)的密碼,此密碼是區(qū)分大小寫的。如果工作簿 不設(shè)密碼保護(hù),則省略此參數(shù)。案例 103設(shè)置名稱1功能說明名稱是用戶在處理數(shù)據(jù)時,經(jīng)常用到的方法。在 Excel VBA 中,用戶

47、可以通過 Add方法添加名稱對象。2語法說明在 Excel VBA 中,使用 Add 方法可向 Names 集合中添加 Name 對象,使用該方法可 創(chuàng)建一個新名稱,具體的語法格式如下:表達(dá)式 .Add(Name, RefersTo, Visible, MacroType, ShortcutKey, Category, NameLocal,RefersToLocal, CategoryLocal, RefersToR1C1, RefersToR1C1Local)各參數(shù)的含義如下:Name:如果沒有指定 NameLocal,則為用作名稱的文本(以宏語言表示)。名稱不能 包括空格,不能與單元格引用

48、相似。RefersTo:除非指定了其他 RefersTo 參數(shù),否則該參數(shù)說明名稱引用的內(nèi)容(使用 A1格式表示法以宏語言表示)。如果引用不存在,則返回 Nothing。Visible:如果為 True,則用常規(guī)方式定義名稱。如果為 False,則將名稱定義為隱藏名稱(即該名稱在“定義名稱”、“粘貼名稱”或“定位”對話框中都不出現(xiàn))。默認(rèn)值 是 True。MacroType:確定宏的類型,可取值為 13。1 表示用戶定義函數(shù)(Function 過程),2 表示宏(也稱為子過程),3 表示無(忽略該參數(shù),即該名稱不引用用戶定義函數(shù)或宏)。ShortcutKey:宏的快捷鍵。必須是單個字母,例如“

49、z”或“Z”。只用于命令宏。 Category:如果 MacroType 為 1 或 2,則該參數(shù)為宏或函數(shù)的分類。該分類在“函數(shù) 向?qū)А敝惺褂?。可以用?shù)字(從 1 開始)或名稱(以宏語言指定)引用現(xiàn)有的分類。 如果指定的分類不存在,Excel 將創(chuàng)建新分類。NameLocal:如果沒有指定 Name,則為用作名稱的文本(以用戶語言表示)。名稱不 能包括空格,不能與單元格引用相似。RefersToLocal:除非指定了其他 RefersTo 參數(shù),否則該參數(shù)說明名稱引用的內(nèi)容(使 用 A1 格式表示法以用戶語言表示)。CategoryLocal:如果未指定 Category,則為以用戶語言標(biāo)識

50、自定義函數(shù)分類的文本。RefersToR1C1:除非指定了其他 RefersTo 參數(shù),否則該參數(shù)說明名稱引用的內(nèi)容(使 用 R1C1 格式表示法以宏語言表示)。RefersToR1C1Local:除非指定了其他 RefersTo 參數(shù),否則該參數(shù)說明名稱引用的內(nèi) 容(使用 R1C1 格式表示法以用戶語言表示)。RefersTo 參數(shù)必須以 A1 樣式表示法指定,包括必要時使用的美元符($)。例如,如果 在工作表 Sheet1 上選定了單元格 A10,然后又將 RefersTo 參數(shù)指定為“=Sheet1!A1:B1” 而定義了一個名稱,那么該名稱實際上指向單元格區(qū)域 A10:B10(因為指定

51、的是相對引用)。 若要指定絕對引用,應(yīng)當(dāng)用“=Sheet1!$A$1:$B$1”。3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),用戶為原始區(qū)域設(shè)置名稱,原始數(shù)據(jù)如圖 5.46 所示。圖 5.46 原始數(shù)據(jù)4編寫代碼設(shè)置名稱的 VBA 代碼如下:Public Sub AddNames()ActiveWorkbook.Names.AddRefersToR1C1:="=Sheet1!R1C1:Sheet1!R10C4" End SubName:="DataSource",5運行結(jié)果運行程序代碼,然后選擇“公式”|“

52、定義的名稱”|“名稱管理器”選項,如圖 5.47所示。圖 5.47 選擇名稱管理器在用戶選擇按鈕后,程序打開“名稱管理器”對話框,查看添加的數(shù)據(jù)名稱,如圖 5.48所示。圖 5.48 查看添加的數(shù)據(jù)名稱6程序分析上面的程序代碼十分簡單,直接使用最基本的語法格式,設(shè)置了單元格的名稱,然后 通過 RefersToR1C1 的參數(shù)設(shè)置了單元格的區(qū)域范圍。案例 104判斷工作簿是否存在1功能說明在 VBA 程序中,打開不存在的工作簿,將產(chǎn)生錯誤。因此,在打開工作簿之前,先 判斷該文件是否存在是很有必要的。在本小節(jié)中,將結(jié)合具體的例子來演示如何判斷工作 薄是否存在。2語法說明在 Excel VBA 中,

53、可以使用 VBA 的 Dir 函數(shù)來檢查某些文件或目錄是否存在。其語 法格式如下: Dir(pathname, attributes) 該函數(shù)的兩個參數(shù)都可省略,其中 pathname 用來指定文件名的字符串表達(dá)式,可能 包含文件夾、驅(qū)動器。如果沒有找到 pathname,則會返回零長度字符串("")。Attributes 是 一個常數(shù)或數(shù)值表達(dá)式,其總和用來指定文件屬性。如果省略,則會返回匹配 pathname但不包含屬性的文件。3案例說明某公司統(tǒng)計了部分員工的銷量數(shù)據(jù)以及員工所在的地區(qū),為了能夠進(jìn)一步分析對應(yīng)的 數(shù)據(jù),用戶需要首先判斷其他工作薄是否存在,原始數(shù)據(jù)如圖 5

54、.49 所示。圖 5.49 原始數(shù)據(jù)4編寫代碼判斷工作簿是否存在的 VBA 代碼如下:Sub CheckWorkBooks()Dim str As Stringstr = Application.InputBox(prompt:="輸入工作簿的名稱:", _ Title:="文件名", Type:=2)If str = "False" Then Exit Sub If Not Len(Dir(str) > 0 ThenMsgBox "工作簿" & str & "不存在!"ElseWorkbooks.Open str End IfEnd Sub5運行結(jié)果運行程序代碼,在彈出的對話框中輸入工作薄的名稱,如圖 5.50 所示。圖 5.50 輸入文件的名稱單擊對話框中的“確定”按鈕,查看打開的結(jié)果,如圖 5.51 所示。圖 5.51 打開的工作薄6程序分析在上面的代碼中,使用 Dir 函數(shù)判斷指定文件是否存在。使用 Dir 函數(shù)還可以方便的 獲取指定路徑下的文件夾或所有文件名。案例 105判斷打開的工作薄個數(shù)1功能說明在用戶使用 Excel 處理數(shù)據(jù)時,經(jīng)常需要在工作薄集合中遍歷,然后依次執(zhí)行操作。 要完成遍歷的操作,用戶需要首先判斷打開的工作薄個數(shù)。2

溫馨提示

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

評論

0/150

提交評論