ransparancy6應(yīng)用程序與Word和Excel的交互.ppt
第六章,應(yīng)用程序與Word和Excel的交互,2,回顧,編寫ActiveXDLL服務(wù)組件;ActiveXDLL組件的調(diào)試;兼容性設(shè)置和使用Implements實(shí)現(xiàn)接口;組件的Instancing屬性設(shè)置;編寫ActiveXEXE進(jìn)程外組件;使用事件實(shí)現(xiàn)回調(diào)和客戶端異步;,3,使用Word應(yīng)用程序、文檔對(duì)象實(shí)現(xiàn)桌面文檔交互;使用Excel工作簿、工作表對(duì)象實(shí)現(xiàn)文檔自動(dòng)化;掌握Word自定義宏及相關(guān)的配置;在VBE中使用應(yīng)用程序、文檔、工作簿和工作表對(duì)象;自定義文檔模板及操作;,目標(biāo),4,Word和Excel對(duì)象,ActiveXEXE對(duì)象;可以在VB中進(jìn)行對(duì)象和接口方式的調(diào)用;,5,層次式對(duì)象模型,6,創(chuàng)建Word對(duì)象綁定,前期綁定DimwdAppAsWord.ApplicationDimwdDocAsWord.DocumentSetwdApp=NewWord.Application后期綁定DimwdAppAsObjectSetwdApp=CreateObject(“Word.Application”)wdApp.Documents.Add,7,創(chuàng)建Word對(duì)象GetObject,DimwdDocAsObjectSetwdDoc=GetObject("C:SPM-Sem1.doc")wdDoc.Application.Visible=True,8,Word應(yīng)用程序?qū)ο髮傩?MyApp.Visible=TrueMyApp.ActiveDocument.SaveMyApp.Caption=“公文20040102”MyApp.ActiveDocument.FullName=MyApp.Path&“A.DOC”MyApp.WindowState=wdWindowStateMaximize,9,Word應(yīng)用程序?qū)ο蠓椒?MyApp.ActivateDocName=Dir("*.DOC")WhileDocNameEmptyApplication.PrintOut(adoc)DocName=Dir()WendMyApp.QuitMyApp.Repeat:MyApp.UndoNormal.Module2.Macro1:CallNormal.Module2.Macro1Application.RunMacroName:="Normal.Module2.Macro1,10,Word文檔對(duì)象屬性,IfMyDoc.Saved=FalseThenMyDoc.SaveDebug.PrintActiveDocument.AttachedTemplate.FullNameSetmyRange=ActiveDocument.ContentmyRange.Font.Name="Arial"ActiveDocument.PassWord=“ABC”ActiveDocument.ReadOnly=TrueActiveDocument.SaveFormat=wdFormatRTF,11,Word文檔對(duì)象方法,IfMyDoc.Saved=FalseThenMyDoc.SaveCallActiveDocument.SaveAs(“C:ABC.DOC”,wdFormatDocument,False,”O(jiān)penPwd”,True,”WritePwd”,True)SetmyRange=ActiveDocument.ContentmyRange.Font.Name="Arial"ActiveDocument.CloseActiveDocument.Undo(2),12,DimwdAppAsWord.ApplicationSetwdApp=NewApplicationIf(wdAppIsNothing)OrErr.Number=0ThenWithwdApp.Visible=True.Activate.WindowState=wdWindowStateMaximize.Documents.Open(strDocFileName)Call.ActiveDocument.SaveAs(“C:ABC.TXT”,wdFormatEncodedText).ActiveDocument.Close.Quit(False)EndWith,使用Word文檔對(duì)象,演示文檔格式轉(zhuǎn)換,13,創(chuàng)建Excel對(duì)象,前期綁定DimexAppAsExcel.ApplicationDimexDocAsExcel.WorkBookSetexApp=NewExcel.Application后期綁定DimexAppAsObjectSetexApp=CreateObject(“Excel.Application”)exApp.SheetsInNewWorkbook=1exApp.Workbooks.Add,14,Excel工作簿對(duì)象屬性,MyBook.ActiveSheet.Name=“年度計(jì)劃工作表”MyBook.ActiveChart.BarShap=xlBoxMyBook.KeepChangeHistory=TrueMyApp.Sheets.Item(1).Cell(1,1).Value=12,15,Excel工作簿對(duì)象方法,MyBook.ActivateMyBook.CloseMyBook.ProtectPassword:=“ASPS"MyApp.SaveCopyAs(“C:A.XLS”),16,Excel工作表對(duì)象屬性,MySheet.Application.DisplayFullScreen=TrueMySheet.Cells(1,1).Locked=FalseMySheet.Columns(1).Font.Bold=TrueMySheet.Visible=FalseMySheet.PageSetup.LeftMargin=Application.InchesToPoints(0.5),17,Excel工作表對(duì)象方法,MySheet.UsedRange.Columns("A:C").CalculateMySheet.CheckSpellingMySheet.Range("A1:D10").DeleteShift:=xlShiftToLeftMySheet.PrintPreview=TrueMySheet.Range("A1:B3").Select,18,使用Excel工作表對(duì)象,exlApp.SheetsInNewWorkbook=1exlApp.DefaultFilePath=App.PathexlApp.Workbooks.AddexlApp.Visible=TrueSetwsBook=.ActiveWorkbookSetwsSheet=.ActiveSheetwsBook.Application.DisplayAlerts=FalseCallwsBook.SaveAs("C:ABCD.XLS","ASD")wsBook.Application.DisplayAlerts=TruewsBook.Author=.FullNamewsSheet.Cells.Font.Name="System"wsSheet.Cells.Font.Size=12wsSheet.Name=“隨機(jī)數(shù)據(jù)檢測(cè)”填充隨機(jī)數(shù)的代碼wsBook.SaveexlApp.DisplayAlerts=TrueexlApp.Quit,演示填充隨機(jī)數(shù)到工作表,19,宏和宏錄制,為了自動(dòng)執(zhí)行某些任務(wù)而作為單個(gè)命令組合在一起的一系列或一組命令;宏病毒;可以通過宏錄制來轉(zhuǎn)化操作為執(zhí)行代碼;,演示宏錄制、查看,20,自定義和宏命令按鈕,21,VBA程序設(shè)計(jì)3-1,22,VBA程序設(shè)計(jì)3-2,23,VBA程序設(shè)計(jì)3-3,24,文檔模板2-1,文檔的格式、內(nèi)容和相關(guān)操作進(jìn)行定制;需要和Word中的宏結(jié)合起來使用;可以檢測(cè)文檔、應(yīng)用程序?qū)ο蟮氖录?,?duì)文檔編輯、審核、安全等方面進(jìn)行控制;以.Dot的形式保存文檔模板文件;,25,文檔模板2-2,26,在文檔模板中自定義工具欄按鈕,27,文檔模板工程加密,28,VBE對(duì)象事件4-1,29,VBE對(duì)象事件4-2,30,VBE對(duì)象事件4-3,類模塊clsApplicationEvents代碼PublicWithEventsMyAppAsApplicationPrivateSubMyApp_DocumentBeforeClose(ByValDocAsDocument,CancelAsBoolean)MyApp.ActiveDocument.Saved=TrueMyApp.DisplayAlerts=wdAlertsNoneEndSub,31,VBE對(duì)象事件4-4,模塊modMain中的代碼DimXAsNewclsApplicationEventsSubRegester_Events()SetX.MyApp=Word.ApplicationEndSub,32,總結(jié)2-1,MicrosoftOffice中的Word、Excel、PowerPoint、Access等,都是ActiveXEXE組件,可以在VisualBasic應(yīng)用程序中調(diào)用其組件接口,進(jìn)行可編程方式的訪問和控制;Word和Excel提供了一個(gè)層次式的對(duì)象結(jié)構(gòu)提供外部訪問,在外部應(yīng)用程序中,可以通過前期綁定或者后期綁定的方式來訪問其應(yīng)用程序?qū)ο螅幌袷褂闷渌鸄ctiveXEXE組件對(duì)象一樣,可以調(diào)用Application、Document、WorkBook、WorkSheet對(duì)象的屬性、方法進(jìn)行相關(guān)的操作;Word宏是為了自動(dòng)執(zhí)行某些任務(wù)而作為一個(gè)命令組合在一起的一系列或一組命令;,33,總結(jié)2-2,VisualBasic編輯器通常稱為VBE,是一種可用于創(chuàng)建、編輯和測(cè)試VisualBasicforApplications代碼和過程的環(huán)境,并且可以在Word中使用窗體、控件、模塊和類模塊等多種編程對(duì)象;通過文檔模板,可以定制文檔格式和操作,并且經(jīng)常和宏結(jié)合起來使用;在VBE中,可以像VBIDE一樣使用Document、WorkBook、WorkSheet對(duì)象的事件,并且可以通過WithEvents關(guān)鍵詞,引用Application對(duì)象的事件。,