语法辞典工作薄操作_第1页
语法辞典工作薄操作_第2页
语法辞典工作薄操作_第3页
语法辞典工作薄操作_第4页
语法辞典工作薄操作_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VBA代码主要有新建、打开、保存工作簿,以及工作VBA代码主要有新建、打开、保存工作簿,以及工作ExcelVBAWorkbookWorkbookExcelVBAWorkbooksAdd方法新建工作薄。该方表达式 xlWBATExcel4IntlMacroSheet:Excel4宏;如果省略此参数,Excel将创建包含一定数目空白工作表的新工作簿(数据,用户需要新建工作薄,原始数据如图5.1所示。5.1数据,用户需要新建工作薄,原始数据如图5.1所示。5.1SubAddNewWorkbook()DimWbAsSetWb=Workbooks.AddApplication.DisplayAlerts=TrueEnd5.25.2VBA编写数据处理的代码时,经常需要处理多个工作薄中的数据。这个时候,用户需要使用VBA代码打开其他的工作薄。ExcelVBAWorkbooksOpen方法打开一个工作簿时,该工作 含路径说明。如果用户取消了对话框,则该值为False。数据,用户需要打开某各数据工作薄,原始数据如图5.3所示。文本文件和XML数据文件。SubEndSub5.35.35.45.5SubEndSubFilename:指定要打开和分列的文本文件的名StartRow:文本分列处理的起始行号。默认值1DataType:指定文件中数据的列格式。可为常量xlDelimited或xlFixedWidth。如果TextQualifier:指定文本识别符xlDelimitedxlDelimited值为False。xlDeliitedFalse。xlDelimitedFalse。xlDelimited。默认值为FalseOtherChar(表达式.OpenText(Filename,Origin,StartRow,DataType,TextQualifier, DecimalSeparator,ThousandsSeparator,TrailingMinusNumbers,Local)组指定一个特定列的转换选项。第一个元素为列标(从1开始),第二个元素是 的常量之一组指定一个特定列的转换选项。第一个元素为列标(从1开始),第二个元素是 的常量之一,用于指定分列方TextVisualLayout:文本的可视布局DecimalSeparator:识别数字时,Excel使用的小数分隔符。默认设置为系统设置。ThousandsSeparator:识别数字时,Excel使用的千位分隔符。默认设置为系统设置。True。如果为False或省略该参数,则将结尾为减号字符的数字视为文本处理。何的数据,如图5.6所示。5.6SubDataType:=xlDelimited,Tab:=TrueEnd5.75.75.85.95.9ExcelVBA中,当用户需要保存工作簿时,可以使用Workbook对象的Save方法,同时,通过WorkbookPath属性,可获取工作簿的完整路径,不包括末尾的分隔符和应用程序名称。通过Open方法打开的工作簿,其Path属性不为空。而新建的工作簿,其Path属性为空。数据,需要对工作薄所做的修改进行保存,原始数据如图5.10所示。5.105.105.11SubSaveAllBooks()ForEachWbInWorkbooksIfWb.Path<>""ThenEndIfNextEnd1.行保存,用户可以使用VBA代码实现该功能。1.行保存,用户可以使用VBA代码实现该功能。SaveAs方法的参数都可以省略。各参数的含义如下Excel将文件保存到当前文件夹中。FileFormat:保存文件时使用的文件格式。对于现有文件,默认采用上一次指定的ReadOnlyRecommendedTrue,则在打开文件时显示一条消息,提示该文件ConflictResolution:它确定该方法在保存工作簿时如何解决冲突。如果设为xlUserResolutionxlLocalSessionChanges,则自动接受本地用户的更改。如果设xlOtherSessionChanges,则自动接受来自其他会话的AddoMruTrueTextCodepage和TextVisualLayout:不在美国英语版的Excel中使用。表达式.SaveAs(FileNameFileFormatPasswordWriteResPasswordCreateBackup,AccessMode,ConflictResolution,AddToMru,TextCodepage,TextVisualLayout,5.13SubDimoldNameAsStringDimnewNameAsStringDimfnameAsStringoldNameActiveWorkbook.NameMsgBox将&oldName&以&newName&的名称保存fname=FolderName&"\"&newNameEndSub5.145.145.15在上面的代码中,通过ExcelVBAExcelVBA中,用户WorkbookSaveAs方法可以将文档保存为Web页,有在本例中,要将工作簿保存为Web页,所以需要将SaveAs的参数FileFormat设置为常量xlHtml。保存工作表时的文件格式常量在xlFileFormat枚举类型中,有关常量值可通过Excel的帮助查找。数据,需要将工作薄保存为网页格式,原始数据如图5.16所示。5.16SubEndSub5.17保存的web5.17保存的web5.185.19IE5.19IE5.20VBA代码获ExcelVBA中,用户可以通过访问ThisWorkbook的属性获取工作薄的信息。表5.1ExcelVBA中,用户可以通过访问ThisWorkbook的属性获取工作薄的信息。表5.1数据如图5.21所示。5.21SubShowInfo().Range("B1").Value=.Range("B2").Value=.Range("B3").Value=.Range("B4").Value=EndWith123456End End 5.22保存时间、用户名等信息。用户可以通过VBA获取工作薄的内置属性。5.235.24在Excel5.24在ExcelVBA中,用户可以通过代码来获取并且设置文档的属性值。实际上,使用WorkbookBuiltinDocumentPropertiesDocumentProperties集合,该集合表合中的单个成员(DocumentProperty对象DocumentProperty对象的属性可操作属Name属性:获取或设置文档属性的名称性为可读/写。该属性使用msoDocProperties枚举类型,具体各枚举常量如下:msoPropertyTypeString:String5.255.255.255.26SubDimSaveTimeAsSaveTime=ActiveWorkbook.BuiltinDocumentProperties("LastSaveTime").ValueIfSaveTime=""ThenMsgBoxActiveWorkbook.Name&工作簿没有保存MsgBox本工作簿在&SaveTime&保存ActiveWorkbook.NameEndIfEnd过VBA代码设置工作薄的密码。工作簿的密码,可设置其Password属性为空字符串,代码如下: ActiveWorkbook.Password= Excel中,用户也可以直接通过操作来设置文档的密码。单击“Office按钮”打开5.275.28数据,用户需要设置工作薄密码,原始数据如图5.29所示。5.295.295.30SubWith.PasswordInputBox("输入工作薄的密码EndWithEnd5.315.315.325.33案例 查看用户状态信户可以通过VBA代码获取用户状态的信息。案例 查看用户状态信户可以通过VBA代码获取用户状态的信息。在ExcelVBA中,用户可以使用Workbook.UserStatus属性来获取用户的信息。表达式 第二个元素是用户打开工作簿的日期和时间,第三个元素是表示清单类型的数字,1表示独占,2表示共享。UserStatus属性不返回以只读方式打开指定工作簿的用户的信息。UBound(arrayname[, arrayname:数组变量的名称,遵循标准变量命名约dimension:指定返回哪一维的上界。1表示第一维,2原始数据如图5.34所示。5.34Sub 5.355.35案例 激活工作DimRowAsIntegerWithActiveWorkbook.Sheets(1)ForRow=1ToUBound(UserInfo,.Cells(Row+1,1)=UserInfo(Row,.Cells(Row+1,2)=UserInfo(Row,2)SelectCaseUserInfo(Row,3)Case.Cells(Row13).Value独占"Case2.Cells(Row13).Value共享EndWithEndExcelVBAWorkbook.Activate来激活工作薄。当用户激活工作ExcelVBAWorkbook.Activate来激活工作薄。当用户激活工作表达式 表达式表示作簿的窗口时,将发生事件,但不发生工作簿的Activate5.36SubActiveWorkBooks()DimiAsIntegerDimstrMsgAsFori=1TointNumstrMsgMsgBox("&i&个工作簿被激活,继续激活?vbYesNo)IfstrMsg=vbNoThenExitEnd5.375.385.375.385.38Ifi=intNumEndIfNextEnd5.39案例 保护工作5.39案例 保护工作 方法的三个参数都可省略,各参数的含义如Windows:如果True,则保护工作簿窗口,此时该工作簿右上角的最小化和关闭按钮消失。如果省略此参数,则窗口不受保护。默认值False5.405.405.41SubDimpwAspwApplication.InputBox(prompt:="设置工作簿的密码:_Title:="设置密码",Type:=2)ActiveWorkbook.ProtectPassword:=pw,Structure:=True,End5.42为了撤销工作薄5.42为了撤销工作薄的保护,用户可以选择“审阅”|“更改”|“保护工作薄”|“保护5.435.445.45ExcelVBA5.45ExcelVBAUnprotect方法可取消工作簿的保护。如果工作簿不是受表达式 案例 设置名ExcelVBARefersTo:除非指定了其他RefersTo参数,否则该参数说明名称引用的内容(格式表示法以宏语言表示。如果引用不存在,则返 NothingVisible:如果为True,则用常规方式定义名称。如果为False,则将名称定义为隐藏表达式.Add(Name,RefersTo,Visible,MacroType,ShortcutKey,Category,RefersToLocal,CategoryLocal,RefersToR1C1,TrueTrue3ShortcutKey:宏的快捷键。必须是单个字母,例如“z”或“Z”。只用于命令宏。CategoryMacroType12,则该参数为宏或函数的分类。该分类在“函数向导”中使用。可以用数字(1开始)或名称(以宏语言指定)引用现有的分类。如果指定的分类不存在,Excel将创建新分类。用A1格式表示法以用户语言表示。CategoryLocal:如果未指定Category,则为以用户语言标识自定义函数分类的文本。用R1C1格式表示法以宏语言表示。RefersToR1C1LocalRefersTo参数,否则该参数说明名称引用的内容(使用R1C1格式表示法以用户语言表示。RefersTo参数必须以A1样式表示法指定,包括必要时使用的美元符($)。例如,如Sheet1A10RefersToA10:B1(数据,用户为原始区域设置名称,原始数据如图5.46所示。5.465.47PublicSub End5.48RefersToR1C15.48RefersToR1C1案例 判断工作簿是否存VBA程序中,打开不存在的工作簿,将产生错误。因此,在打开工作簿之前,先ExcelVBAVBADir函数来检查某些文件或目录是否存在。其语 Dir[(pathname[, pathname用来指定文件名的字符串表达式,可能一个常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配pathname数据,用户需要首先判断其他工作薄是否存在,原始数据如图5.49所示。5.495.495.50SubDimstrAsTitle:="文件名",Type:=2)Ifstr="False"ThenExitSubIfNotLen(Dir(str))>0MsgBox工作簿&str&EndIfEnd5.515.51案例 判断打开的工作薄个ExcelVBA中,Workbooks.Count属性的功能是返回集合中对象的数量。其语法表表达式 5.525.52SubDimIntnumberAsIntegerMsgBox打开的工作簿有&Intnumber&个"EndSub5.53很显然,Workbooks.Count案例 备份工作5.53很显然,Workbooks.Count案例 备份工作Path属性:Workbook对象的Path属性,返回工作簿对象的完整路径。如果其Dialogs:ApplicationDialogsDialogs集合,该集合包含了Excel的内置对话框,通过设置集合的常量可调用这些内置对话框。在本例代码中,用来FullName属性:通过Workbook对象的FullName属性,可获取工作簿的名称,InStrRev函数:该函数返回一个字符串在另一个字符串中出现的位置,从字符InstrRev(stringcheck,stringmatch[,start[, 始搜索。如果start包含Null,则产生一个错误。数据,用户需要将其数据进行备份,原始数据如图5.54所示。提示:若需要从字符串首部向后查找子串,可使用InstrSubCopyWorkBoChecks()DimwbAsWorkbookSubCopyWorkBoChecks()DimwbAsWorkbookDimiAsIntegerDimCheckAsIfwb.Path=""ThenMsgBox"请先保存工作薄EndIfFileName=i=InStrRev(FileName,Ifi>0ThenFileName=Left(FileName,i-1)FileNameFileName&工作薄的备份文件&".bak"Check=WithwbCheck=TrueEndSetwb=NothingIfNotCheck5.55在上面的程序中,首先获取对当前工作簿的引用,然后获取工作簿的全名,使用5.55在上面的程序中,首先获取对当前工作簿的引用,然后获取工作簿的全名,使用InStrRev函数查找工作簿全名是否有扩展名,若有扩展名,则截取文件名的前面部分(不EndIfEnd案例 强制保存工作BeforeClose事案例 强制保存工作BeforeClose事数设置为True,则停止关闭操作,返回到工作簿中继续操作(工作簿保持打开状态。BeforeClose事件中加上以下功能,而不应将对系统的设置或Excel工作簿中进行修改后,如果没有保存就关闭工作簿,Excel5.56PrivateSubWorkbook_BeforeClose(CancelasBoolean)IfbFlag=FalsethenCancel=TrueEndPrivateSubWorkbook_BeforeClose(CancelasBoolean)Me.Saved=TrueEndPrivateSubWorkbook_BeforeClose(CancelAsEnd存修改,然后关闭工作薄。其中原始数据如图5.57所示。5.57存修改,然后关闭工作薄。其中原始数据如图5.57所示。5.57在本例中,当用户关闭工作薄时,Excel不会显示提示保存的对话框,而是直接保存在本例的代码中,WorkbookSaved属性用来判断工作簿是否保存。如果指定工作簿从上次保存至今未发生过更改,则该属性值为True。案例 限制打PrivateSubWorkbook_BeforeClose(CancelasBoolean)IfMe.Saved=FalseThenMe.SaveEnd印指定工作簿之前,将产生BeforePrint事印指定工作簿之前,将产生BeforePrint事件。该事件过程的结构如下数据,用户需要限制用户打印该工作薄,原始数据如图5.58所示。5.58当用户选择“Office按钮”菜单中选择“打印”命令,如图5.59所示,可打印工作簿中PrivateSubWorkbook_BeforePrint(CancelAsBoolean)MsgBox"不允许打印!",vbCritical+vbOKOnlyCancel=TrueEndPrivateSubWorkbook_BeforePrint(CancelAsEnd5.595.60案例 限制保1.5.595.60案例 限制保1.SaveAsUI:如果将显示“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论