正文開始前,先插播一條廣告DimArr As Variant Dimi As Integer DimmyNewWorkbook As Integer myNewWorkbook= Application.SheetsInNewWorkbook ShName= Array('余額','單價','數(shù)量','金額') Arr= Array('01月','02月','03月','04月','05月','06月','07月','08月','09月','10月','11月','12月') Application.SheetsInNewWorkbook= 4 SetNowbook = Workbooks.Add WithNowbook For i = 1 To 4 With .Sheets(i) .Name = ShName(i - 1) .Range('B1').Resize(1,UBound(Arr) 1) = Arr .Range('A2') = '品名' End With Next .SaveAs Filename:=ThisWorkbook.Path &'\' & '存貨明細.xls' .Close Savechanges:=True EndWith SetNowbook = Nothing Application.SheetsInNewWorkbook= myNewWorkbook End Sub 代碼解析: AddNowbook過程使用Add方法建立新的工作簿并對新建工作簿進行操作。 第2行到第6行代碼聲明變量類型。 第7行代碼保存Excel自動插入到新工作簿中的工作表數(shù)目。 第8、9行代碼將數(shù)組元素賦值給變量。 第10行代碼將Application對象的SheetsInNewWorkbook屬性設置為4,在新建工作簿時插入4張工作表。 第11行代碼使用Add方法建立新的工作簿,應用于Workbooks對象的Add方法新建工作簿,新建的工作簿將成為活動工作簿。 第12行到第22行代碼操作新建工作簿。其中第15行到第17行代碼將新建工作簿的工作表進行重命名并給單元格賦值。第20行代碼使用SaveAs方法將新建工作簿重命名為“存貨明細.xls”保存在同一目錄中。第21行代碼使用Close方法關閉工作簿。 第24行代碼恢復工作簿的默認設置。 運行AddNowbook過程將在工作簿同一目錄中新建“存貨明細.xls”工作簿,新建工作簿格式。 注意本例中沒有考慮工作簿同名因素,如果目錄中已有“存貨明細.xls”工作簿,運行時會顯示對話框,選擇“是”即可,否則將會出錯。
▲042 打開指定的工作簿 VBA中使用Open方法打開一個工作簿,如下面的代碼所示。 Sub Openfile() Dimx As Integer Forx = 1 To Workbooks.Count If Workbooks(x).Name = '123.xls'Then MsgBox ““'123”“工作簿已經(jīng)打開!' Exit Sub End If Next Workbooks.OpenThisWorkbook.Path & '\123.xls' End Sub 代碼解析: Openfile過程打開同一目錄中的“123”工作簿。 第3行代碼利用Workbook對象的Count屬性取得打開工作簿的數(shù)目,使用For...Next 語句遍歷所有打開的工作簿。遍歷工作簿除了使用For...Next 語句外還可以使用For...Each...Next語句來遍歷Workbook對象集合中的所有元素,請參閱▲46-1。 第4行到第8行代碼遍歷所有打開的工作簿,如果Workbook對象集合中存在“123”工作簿,說明“123”工作簿已打開。 第9行代碼如果“123”工作簿沒有被打開則使用Open方法打開“123”工作簿。 Open方法應用于Workbooks 對象時打開一個工作簿,語法如下: expression.Open(FileName,UpdateLinks,ReadOnly,Format,Password,WriteResPassword,IgnoreReadOnlyRecommended,Origin,Delimiter,Editable,Notify,Converter,AddToMru,Local,CorruptLoad) 參數(shù)expression是必需的,返回一個Workbooks對象 參數(shù)FileName是必需的,要打開的工作簿的文件名。 參數(shù)UpdateLinks是可選的,指定文件中鏈接的更新方式。如果省略本參數(shù),則提示用戶選擇鏈接的更新方式。否則,該參數(shù)的取值應為表格中的某個值。 參數(shù)ReadOnly是可選的,如果該值為True,則以只讀模式打開工作簿。 參數(shù)Format是可選的,如果MicrosoftExcel正在打開一個文本文件,則該參數(shù)用于指定分隔字符,如表格所示。如果省略本參數(shù),則使用當前的分隔符。 參數(shù)Password是可選的,該字符串指定打開一個受保護工作簿的密碼。如果省略該參數(shù)并且指定工作簿已設置密碼,則提示用戶輸入密碼。 參數(shù)WriteResPassword是可選的,該字符串為一個寫保護工作簿的寫入權(quán)密碼。如果省略該參數(shù)并且指定工作簿已設置密碼,則提示用戶輸入密碼。 參數(shù)IgnoreReadOnlyRecommended是可選的,如果該值為True,則設置Microsoft Excel不顯示建議只讀消息(如果該工作簿以“建議只讀”選項保存)。 參數(shù)Origin是可選的,如果文件為文本文件,則該參數(shù)用于指示該文件來源于何種操作系統(tǒng)。 參數(shù)Delimiter是可選的,如果該文件為文本文件并且Format參數(shù)為 6,則此參數(shù)用于指定用作分隔符的字符。 參數(shù)Editable是可選的,如果該文件為MicrosoftExcel 4.0加載宏,則該參數(shù)的值為True時可打開該加載宏以便在窗口中看到。如果該參數(shù)的值為False或者省略該參數(shù),則該加載宏以隱藏方式打開,并且無法設為可見。 參數(shù)Notify是可選的,當該文件不能以可讀寫模式打開時,如果該參數(shù)的值為True,則可將該文件添加到文件通知列表。 參數(shù)Converter是可選的,打開文件時試用的第一個文件轉(zhuǎn)換器的索引號。 參數(shù)AddToMru是可選的,如果該值為True,則將該工作簿添加到最近使用的文件列表中。默認值為False。 參數(shù)Local是可選的,如果該值為True,則以Microsoft Excel(包括控制面版設置)的語言保存文件。如果該值為False(默認值),則以 VisualBasic for Applications (VBA)的語言保存文件,其中VisualBasic for Applications (VBA)為典型安裝的美國英語版本,除非VBA項目的Workbooks.Open來自舊的國際化的XL5/95 VBA項目。 參數(shù)CorruptLoad是可選的,可為以下常量之一:xlNormalLoad、xlRepairFile 和 xlExtractData。如果未指定任何值,則默認值通常為普通狀態(tài)。
▲043 判斷指定工作簿是否打開 043-1 遍歷Workbooks集合方法 通過遍歷當前應用程序所有已打開的工作簿文件(Workbooks集合),判斷指定名稱的工作簿是否打開,如下面的代碼所示。 Sub WorkbookIsOpen_1() DimWb As Workbook DimmyWb As String myWb= 'Excel Home.xls' ForEach Wb In Workbooks If Wb.Name = myWb Then MsgBox '工作簿' & myWb & '已經(jīng)被打開!' Exit Sub End If Next MsgBox'工作簿' & myWb & '沒有被打開!' End Sub 代碼解析: WorkbookIsOpen_1過程通過遍歷當前應用程序中所有已打開的工作簿文件(Workbooks集合),判斷“Excel Home”工作簿是否打開。 第5行代碼使用For...Each...Next語句來遍歷Workbook對象集合中的所有元素。 第6行到第8行代碼如果Workbook對象集合包含“Excel Home.xls”工作簿名稱,說明文件已打開,使用Exit Sub語句結(jié)束代碼的運行。 第11行代碼如果運行到此行代碼說明“Excel Home.xls”工作簿沒有被打開。 043-2 錯誤處理方法 使用錯誤處理程序判斷指定名稱的工作簿是否打開,如下面的代碼所示。 Sub WorkbookIsOpen_2() DimWb As Workbook DimmyWb As String myWb= 'Excel Home.xls' Err.Clear On ErrorGoTo line SetWb = Application.Workbooks(myWb) MsgBox'工作簿' & myWb & '已經(jīng)被打開!' SetWb = Nothing ExitSub line: MsgBox'工作簿' & myWb & '沒有被打開!' SetWb = Nothing End Sub 代碼解析: WorkbookIsOpen_2過程使用錯誤處理程序判斷“Excel Home”工作簿是否打開。 第5行代碼使用Clear方法清除Err對象的所有屬性設置。 第6行代啟動錯誤處理程序,如果第7行代碼發(fā)生錯誤則執(zhí)行line行后面的代碼。 第7行代碼使用Set語句將Workbook對象引用賦給變量Wb,如果“Excel Home.xls”工作簿沒有被打開將發(fā)生下標越界錯誤,此時執(zhí)行第12、13行代碼,否則執(zhí)行第8、9行代碼。 |
|
來自: wdmexcel > 《Excel Vba》