vba]-ExcelVBA命令集(转)
- 格式:doc
- 大小:101.50 KB
- 文档页数:45
最近单位内部的项目里要用到些报表EXCEL的生成,虽说JA V A的POI可以有这能力,但觉得还是可能比较麻烦,因此还是转用.net来搞,用visual studio 2003配合office 2003,用到了一些VBA,因此小结并归纳之,选了些资料归纳在这里,以备今后查考。
首先创建Excel 对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel.Application1) 显示当前窗口:ExcelID.Visible := True;2) 更改Excel 标题栏:ExcelID.Caption := ’应用程序调用Microsoft Excel’;3) 添加新工作簿:ExcelID.WorkBooks.Add;4) 打开已存在的工作簿:ExcelID.WorkBooks.Open( ’C:ExcelDemo.xls’);5) 设置第2个工作表为活动工作表:ExcelID.WorkSheets[2].Activate;或ExcelID.WorkSheets[ ’Sheet2’].Activate;6) 给单元格赋值:ExcelID.Cells[1,4].V alue := ’第一行第四列’;7) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米9) 在第8行之前插入分页符:ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;10) 在第8列之前删除分页符:ExcelID.ActiveSheet.Columns[8].PageBreak := 0;11) 指定边框线宽度:ExcelID.ActiveSheet.Range[ ’B3:D4’].Borders[2].Weight := 3; 1-左2-右3-顶4-底5-斜( ) 6-斜( / )12) 清除第一行第四列单元格公式:ExcelID.ActiveSheet.Cells[1,4].ClearContents;13) 设置第一行字体属性:ExcelID.ActiveSheet.Rows[1] := ’隶书’; ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;ExcelID.ActiveSheet.Rows[1].Font.Bold := True;ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;14) 进行页面设置:a.页眉:ExcelID.ActiveSheet.PageSetup.CenterHeader := ’报表演示’;b.页脚:ExcelID.ActiveSheet.PageSetup.CenterFooter := ’第&P页’; c.页眉到顶端边距2cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;d.页脚到底端边距3cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;e.顶边距2cm:ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;f.底边距2cm:ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左边距2cm:ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;h.右边距2cm:ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;i.页面水平居中:ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.页面垂直居中:ExcelID.ActiveSheet.PageSetup.CenterV ertically := 2/0.035; k.打印单元格网线:ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;15) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelID.ActiveSheet.Range[ ’A1:E2’].Copy;c.从A1位置开始粘贴:ExcelID.ActiveSheet.Range.[ ’A1’].PasteSpecial;d.从文件尾部开始粘贴:ExcelID.ActiveSheet.Range.PasteSpecial;16) 插入一行或一列:a. ExcelID.ActiveSheet.Rows[2].Insert;b. ExcelID.ActiveSheet.Columns[1].Insert;17) 删除一行或一列:a. ExcelID.ActiveSheet.Rows[2].Delete;b. ExcelID.ActiveSheet.Columns[1].Delete;18) 打印预览工作表:ExcelID.ActiveSheet.PrintPreview;19) 打印输出工作表:ExcelID.ActiveSheet.PrintOut;20) 工作表保存:If not ExcelID.ActiveWorkBook.Saved then ExcelID.ActiveSheet.PrintPreviewEnd if21) 工作表另存为:ExcelID.SaveAs( ’C:ExcelDemo1.xls’);22) 放弃存盘:ExcelID.ActiveWorkBook.Saved := True; 23) 关闭工作簿:ExcelID.WorkBooks.Close;24) 退出Excel:ExcelID.Quit;25) 设置工作表密码:ExcelID.ActiveSheet.Protect "123",DrawingObjects:=True,Contents:=True,Scenarios:=True 26) EXCEL的显示方式为最大化ExcelID.Application.WindowState = xlMaximized27) 工作薄显示方式为最大化ExcelID.ActiveWindow.WindowState = xlMaximized28) 设置打开默认工作薄数量ExcelID.SheetsInNewWorkbook = 329) ’关闭时是否提示保存(true 保存;false 不保存)ExcelID.DisplayAlerts = False30) 设置拆分窗口,及固定行位置ExcelID.ActiveWindow.SplitRow = 1ExcelID.ActiveWindow.FreezePanes = True31) 设置打印时固定打印内容ExcelID.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"32) 设置打印标题ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = ""33) 设置显示方式(分页方式显示)ExcelID.ActiveWindow.View = xlPageBreakPreview34) 设置显示比例ExcelID.ActiveWindow.Zoom = 10035) 让Excel 响应DDE 请求Ex.Application.IgnoreRemoteRequests = False用VB操作EXCELPrivate Sub Command3_Click()On Error GoTo err1Dim i As LongDim j As LongDim objExl As Excel.Application ’声明对象变量Me.MousePointer = 11 ’改变鼠标样式Set objExl = New Excel.Application ’初始化对象变量objExl.SheetsInNewWorkbook = 1 ’将新建的工作薄数量设为1objExl.Workbooks.Add ’增加一个工作薄objExl.Sheets(objExl.Sheets.Count).Name = "book1" ’修改工作薄名称objExl.Sheets.Add ,objExl.Sheets("book1") ‘增加第二个工作薄在第一个之后objExl.Sheets(objExl.Sheets.Count).Name = "book2"objExl.Sheets.Add ,objExl.Sheets("book2") ‘增加第三个工作薄在第二个之后objExl.Sheets(objExl.Sheets.Count).Name = "book3"objExl.Sheets("book1").Select ’选中工作薄<book1>For i = 1 To 50 ’循环写入数据For j = 1 To 5If i = 1 ThenobjExl.Selection.NumberFormatLocal = "@" ’设置格式为文本objExl.Cells(i,j) = " E " & i & jElseobjExl.Cells(i,j) = i & jEnd IfNextNextobjExl.Rows("1:1").Select ’选中第一行objExl.Selection.Font.Bold = True ’设为粗体objExl.Selection.Font.Size = 24 ’设置字体大小objExl.Cells.EntireColumn.AutoFit ’自动调整列宽objExl.ActiveWindow.SplitRow = 1 ’拆分第一行objExl.ActiveWindow. SplitColumn = 0 ’拆分列objExl.ActiveWindow.FreezePanes = True ’固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ’设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns = "" ’打印标题objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _Format(Now,"yyyy年mm月dd日hh:MM:ss")objExl.ActiveWindow.View = xlPageBreakPreview ’设置显示方式objExl.ActiveWindow.Zoom = 100 ’设置显示大小’给工作表加密码objExl.ActiveSheet.Protect "123",DrawingObjects:=True,_Contents:=True,Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests = FalseobjExl.Visible = True ’使EXCEL可见objExl.Application.WindowState = xlMaximized ’EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState = xlMaximized ’工作薄显示方式为最大化objExl.SheetsInNewWorkbook = 3 ’将默认新工作薄数量改回3个Set objExl = Nothing ’清除对象Me.MousePointer = 0 ’修改鼠标Exit Suberr1:objExl.SheetsInNewWorkbook = 3objExl.DisplayAlerts = False ’关闭时不提示保存objExl.Quit ’关闭EXCELobjExl.DisplayAlerts = True ’关闭时提示保存Set objExl = NothingMe.MousePointer = 0End Sub透视表应用一般在搞透视表时,是先用录制宏的方法来实现的,当然可以再看下代码Dim excel As Excel.ApplicationDim xBk As Excel._WorkbookDim xSt As Excel._WorksheetDim xRange As Excel.RangeDim xPivotCache As Excel.PivotCacheDim xPivotTable As Excel.PivotTableDim xPivotField As Excel.PivotFieldDim cnnsr As String,sql As StringDim RowFields() As String = {"","",""}Dim PageFields() As String = {"","","","","",""}’SERVER 是服务器名或服务器的IP地址’DA TABASE 是数据库名’Table 是表名Try’开始导出cnnsr = "ODBC;DRIVER=SQL Server;SERVER=" + SERVERcnnsr = cnnsr + ";UID=;APP=Report Tools;WSID=ReportClient;DA TABASE=" + DA TABASE cnnsr = cnnsr + ";Trusted_Connection=Y es"excel = New Excel.ApplicationClassxBk = excel.Workbooks.Add(True)xSt = xBk.ActiveSheetxRange = xSt.Range("A4")xRange.Select()’开始xPivotCache = xBk.PivotCaches.Add(SourceType:=2)xPivotCache.Connection = cnnsrmandType = 2sql = "select * from " + TablemandText = sqlxPivotTable = xPivotCache.CreatePivotTable(TableDestination:="Sheet1!R3C1",TableName:="数据透视表1",DefaultV ersion:=1)’准备行字段RowFields(0) = "字段1"RowFields(1) = "字段2"RowFields(2) = "字段3"’准备页面字段PageFields(0) = "字段4"PageFields(1) = "字段5"PageFields(2) = "字段6"PageFields(3) = "字段7"PageFields(4) = "字段8"PageFields(5) = "字段9"xPivotTable.AddFields(RowFields:=RowFields,PageFields:=PageFields)xPivotField = xPivotTable.PivotFields("数量")xPivotField.Orientation = 4’关闭工具条’xBk.ShowPivotTableFieldList = False’mandBars("PivotTable").visible = Falseexcel.Visible = TrueCatch ex As ExceptionIf cnn.State = ConnectionState.Open Thencnn.Close()End IfxBk.Close(0)excel.Quit()MessageBox.Show(ex.Message,"报表工具",MessageBoxButtons.OK,MessageBoxIcon.Warning)End Try又如:PivotCaches.Add利用高速缓存中快速运算建立一个数据透视表。
EXCEL-VBA编程集结EXCEL 代码示例目录EXCEL 代码示例 (1)1.常量 (2)2.按值传递与按引用传递 (2)3.Sub过程与函数过程 (3)4.单元格常见属性和方法 (4)5.工作表常见属性方法 (6)6.显式声明变量 (6)7.对象变量 (7)8.with 语句 (11)9. If语句与Select Case语句示例 (12)10. Do loop语句实例For Next语句实例 (13)11. For each in next语句实例 (14)12.VBA代码中使用公式函数 (15)13.自定义函数 (16)14.VBA数组 (16)15.中断禁用事件 (19)16.窗体案例 (20)17.常量与枚举 (21)18.查找定位函数 (22)19.汇总工作表 (24)20.合并工作簿 (26)21.拆分工作簿 (28)1.常量2.按值传递与按引用传递3.Sub 过程与函数过程4.单元格常见属性和方法激活sheet“员工信息”从A1按行移动至字符下一个空白单元空白赋值=上一个单元格数值+1右移1列输入值:康传平右移2列输入值:4/9/2015其他操作:5.工作表常见属性方法6.显式声明变量7.对象变量8.with 语句9. If语句与Select Case语句示例10. Do loop语句实例For Next语句实例11. For each in next 语句实例12.VBA 代码中使用公式函数13.自定义函数14.VBA 数组新增sheet填入15.中断禁用事件现在时间<10点,关闭excel弹出打开VBA弹出。
ExcelVBA的用法详解宏的用法详解1.1 VBA是什么直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用excel的宏语言来使excel自动化,使用word BASIC使word自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA,可以认为VBA是非常流行的应用程序开发语言VASUAL BASIC 的子集.实际上VBA是"寄生于"VB应用程序的版本.VBA和VB的区别包括如下几个方面:1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(excel等自动化2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE,而VBA开发的程序必须依赖于它的"父"应用程序,例如excel.尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在excel中用VBA创建解决方案后,即已具备在word access OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方案的大部分知识.* VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.* VBA可以称作excel的“遥控器”.VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.此外,如果你愿意,还可以将excel用做开发平台实现应用程序.1.2 excel环境中基于应用程序自动化的优点也许你想知道VBA可以干什么?使用VBA可以实现的功能包括:1. 使重复的任务自动化.2. 自定义excel工具栏,菜单和界面.3. 简化模板的使用.4. 自定义excel,使其成为开发平台.5. 创建报表.6. 对数据进行复杂的操作和分析.用excel作为开发平台有如下原因:1. excel本身功能强大,包括打印,文件处理,格式化和文本编辑.2. excel内置大量函数.3. excel界面熟悉.4. 可连接到多种数据库.用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存,打印,复制等.而用excel作为开发平台,则由于excel已经具备这些基本功能,你要做的只是使用它.1.3 录制简单的宏在介绍学习VBA之前,应该花几分钟录制一个宏。
EXCEL-VBA-实用代码收集四、Word vba常用语句100句1、系统参数(01) Application.ActivePrinter …获取当前打印机(02) Application.Height '当前应用程序文档的高度(03) Application.Width …当前应用程序文档的宽度(04) Application.Build …获取Word版本号和编译序号(05) Application.Caption …当前应用程序名(06) Application.DefaultSaveFormat '返回空字符串,表示Word文档(07) Application.DisplayRecentFiles '返回是否显示最近使用的文档的状态(08) Application.Documents.Count '返回当前打开的文档数(09) Application.FontNames.Count …返回当前可用的字体数(10) Applicat ion.Left …返回当前文档的水平位置(11) Application.MacroContainer.FullName '返回当前文档名,包括所在路径Application.MacroContainer.pach '返回当前文档路径Application.ActiveDocument.Path …获得文件的相对路径(12) Application.NormalTemplate.FullName '返回文档标准模板名称及所在位置(13) Application.RecentFiles.Count '返回最近打开的文档数目(14) Application.System.CountryRegion '返回应用程序所在的地区代码(15) Application.System.FreeDiskSpace …返回应用程序所在磁盘可用空间(16) Application.System.HorizontalResolution '返回显示器的水平分辨率(17) Application.System.VerticalResolution '返回显示器的垂直(18)/doc/0018125294.html,nguageDesignatio n '返回系统所使用的语言(19) Application.System.MathCoprocessorInstalled …返回系统是否安装了数学协处理器(20) Application.System.OperatingSystem …返回当前操作系统名(21) Application.System.ProcessorType '返回计算机处理器名(22) Application.Sy stem.Version …返回操作系统的版本号(23) Application.Templates.Count '返回应用程序所使用的模板数(24) /doc/0018125294.html,erName '返回应用程序用户名(25) Application.Version …返回应用程序的版本号2、Documents/Document对象(26) ActiveDocument.AttachedTemplate.FullName '返回当前文档采用的模板名及模板所在位置(27) ActiveDocument.Bookmarks.Count '返回当前文档中的书签数(28) ActiveDocument.Characters.Count '返回当前文档的字符数(29) ActiveDocument.CodeName …返回当前文档的代码名称(30)/doc/0018125294.html,ments.Count …返回当前文档中的评论数(31) ActiveDocument.Endnotes.Count '返回当前文档中的尾注数(32) ActiveDocument.Fields.Count '返回当前文档中的域数目(33) ActiveDocument.Footnotes.Count …返回当前文档中的脚(34) ActiveDocument.FullName '返回当前文档的全名及所在位置(35) ActiveDocument.HasPassword '当前文档是否有密码保护(36) ActiveDocument.Hyperlinks.Count '返回当前文档中的链接数(37) ActiveDocument.Indexes.Count '返回当前文档中的索引数(38) ActiveDocument.ListParagraphs.Count '返回当前文档中项目编号或项目符号数(39) ActiveDocument.ListTemplates.Count '返回当前文档中使用的列表模板数(40) ActiveDocument.Paragraphs.Count '返回当前文档中的段落数(41) ActiveDocument.Password=XXX '设置打开文件使用的密码(42) ActiveDocument.ReadOnly '获取当前文档是否为只读属性(43) ActiveDocument.Saved '当前文档是否被保存(44) ActiveDocument.Sections.Count '当前文档中的节数(45) ActiveDocument.Sentences.Count …当前文档中的语句数(46) ActiveDocument.Shapes.Count '当前文档中的形状数,图形?(47) ActiveDocument.Styles.Count '当前文档中的样式数(48) ActiveDocument.Tables.Count …当前文档中的表格数(49) ActiveDocument.TablesOfAuthorities.Count …返回当前文档中的引文目录数(50)ActiveDocument.T ablesOfAuthoritiesCategories.Count …返回当前文档中引文目录类别数(51) ActiveDocument.Tabl esOfContents.Count …返回当前文档中的目录数(52) ActiveDocument.TablesOfFigures.Count '返回当前文档中的图表目录数3、Paragraphs/Paragraph对象(53) Selection.Paragraphs.Count '返回所选区域的段落数(54) Selection.Paragraphs.First '返回所选区域中的第一段(55) ActiveDocument.Paragraphs(1).LeftIndent '返回当前文档中第一段的左缩进值(56) ActiveDocument.Paragraphs(1).LineSpacing '返回当前文档中第一段的行距(57) ActiveDocument.Paragraphs(1).OutlineLevel …返回或设置当前文档中第一段的大纲级别.OutlineLevel = wdOutlineLevel2 …2级.OutlineLevel = wdOutlineLevel3 …3级(58) ActiveDocu ment.Paragraphs(1).RightIndent …返回当前文档中第一段的右缩进量(59) ActiveDocument.Paragraphs(1).SpaceBefore '返回当前文档中第一段的段前间距(60) ActiveDocument.Paragraphs(1).SpaceAfter …返回当前文档中第一段的段后间距(61) ActiveDocument.Paragraphs(1).Range.Text '返回当前文档中第一段的内容(62)ActiveDocument.Paragraphs(1)/doc/0018 125294.html,Local '返回当前文档中第一段应用的样式名(63) ActiveDocument.Paragraphs(1).Range.Style.Description '返回当前文档中第一段所应用样式的详细描述(64)ActiveDocument.Paragraphs(1)/doc/0018 125294.html, '返回当前文档中第一段所应用样式的字体名(65)ActiveDocument.Paragraphs(1)/doc/0018125294.html,FarEast '返回或设置一种东亚字体名(66) ActiveDocument.Paragraphs(1).Range.Style.Font.Size '返回或设置当前文档中第一段所应用样式的字体大小(67)ActiveDocument.Paragraphs(1).Range.Style.Font.Spacing '返回或设置字符间距(68) Selection.Words.Count '所选区域的字数Sentences对象(69) Selection.Sentences.Item(1) '所选区域中的第一句的内容Words对象(71) ActiveDocument.Words(1).Select '选择当前文档中的第一个词(72) ActiveDocument.Range.Words(1).InsertAfter "我爱你!" '在当前文档中的第一个词后插入“我爱你”4、Characters对象(73) Selection.Characters.Count '当前文档中所选区域的字符数(74)ActiveDocument.Paragraphs(1).Range.InsertParagraphAfter'在当前文档的第一段之后插入一个新段落5、Sections/Section对象(75) ActiveDocument.Sections.First '当前文档的第一节(76)ActiveDocument.Sections.First.PageSetup.BottomMargin '当前文档第一节所在页的底边距(77) ActiveDocument.Sections.First.PageSetup.LeftMargin '当前文档第一节所在页的左边距(78) ActiveDocument.Sections.First.PageSetup.RightMargin '当前文档第一节所在页的右边距(79) ActiveDocument.Sections.First.PageSetup.T opMargin '当前文档第一节所在页的顶边距(80) ActiveDocument.Sections.First.PageSetup.PaperSize '返回或设置当前文档第一节所在页的大小(81) ActiveDocument.Sections.First.PageSetup.PageHeight '返回或设置当前文档第一节所在页的高度(82) ActiveDocument.Sections.First.PageSetup.PageWidth '返回或设置当前文档第一节所在页的宽度(83) ActiveDocument.Sections.Add Range:=myRange '在当前文档中添加新节(84) ActiveDocument.Sections.Item(2) '当前文档中的第二节(85)/doc/0018125294.html,st.Range.InsertAfte r "文档结束!" '在当前文档中最后一节的结尾添加文字“文档结束!”6、Range对象(86) ActiveDocument.Range(Start:=0, End:=10) '表示当前文档前10个字符所组成的一个Range对象(87) Set myRange = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(2).R ange.Start, _End:=ActiveDocument.Paragraphs(4).Range.End) '将当前文档第2段至第4段设置为一个Range对象(88) ActiveDocument.Paragraphs(1).Range.Copy '复制当前文档中的第一段(89) Selection.CopyDocuments.Add.Content.Paste '复制所选内容到新文档中(90) ActiveDocument.Bookmarks("Book1").Copy Name:="Book2" '将Book2书签复制Book1书签标记的位置(91) Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4 '将所选内容移至文档中的第4行(92) Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext '将所选内容移至下一个表格的第1个单元格(93) Selection.Range.AutoFormat '为所选内容套用格式(94) /doc/0018125294.html, = "Arial" '将当前文档的字体设置为斜体(95) ActiveDocument.Content.Select Selection.Delete '将当前文档中的内容删除其它(96) Documents.Add '添加一个新文档(97) Set myTable = ActiveDocument.T ables.Add(Selection.Range, 2, 2) '在当前文档所选区域添加一个2行2列的表格7、文件读写(98) Open "C:\my.txt" For Input As #1 '打开一个用于输入的文件并令其编号为1(99) Line Input #1, TextLine '读取被打开用于输入且编号为1的文件(100) Close #1 '关闭编号为1的文件一、新建Word引用需要首先创建一个对Word Application 对象的引用。
Excel-VBA操作文件四大方法by agstick(From ExcelHome)在我们日常使用Excel的时候,不仅会用到当前Excel文件的数据,还经常需要访问其他的数据文件。
这些数据文件可能是Excel文件、文本文件或数据库文件等。
经常有朋友会问如何在vba代码里操作这些数据文件?本文就系统地介绍一下在Excel中应用VBA操作数据文件的方法。
本文主要介绍四种常用的方法:1、利用Excel对象来处理文件;2、利用VBA文件处理语句来处理文件;3、利用FileSystemObject对象来处理文件;4、利用API函数来处理文件。
当然对于数据库文件,还可以利用ADO+SQL的方法操作,不过论坛已经有前辈详细介绍过此类方法,本文就不再重复了。
一、利用Excel对象来处理文件利用Excel对象自带的方法来操作文件是最方便,也是最简单的。
我们主要利用Workbooks集合和Workbook对象的方法来操作文件。
1、打开Excel文件我们可以用Workbooks.Open方法打开一个Excel工作簿。
Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)其中FileName是必选的参数,表示要打开的工作簿名,如果没有指定路径,则代表当前路径。
另外14个是可选参数,除了密码参数,其他的一般很少用。
具体的含义可以参看VBA 的帮助。
例:Workbooks.Open "F:\test.xls"可以打开F盘的test.xls文件。
2、打开文本文件使用Open方法也可以打开文本文件,但建议使用OpenText方法。
ExcelVBA编程命令按钮Excel VBA编程命令按钮对于⼤部分程序设计的⼈机交互⽅法中,常常通过⿏标对按钮的单击来实现⼀个命令的启动、中断或结束。
⼤多数应⽤程序中部有命令按钮,⽤户可以单击按钮执⾏操作。
对于控件对象来说.仅仅实现单⼀的功能是不够的。
命令按钮控件还应该为⽤户提供按钮⽂本的控制等功能,即提供多种属性。
●Caption属性Caption属性改变命令按钮上显⽰的⽂本。
设计时,可在【属性】窗⼝中设置此属性。
Caption属性最多包含255个字符。
若标题超过了命令按钮的宽度,则会另起⼀⾏。
但是,如果控件⽆法容纳其全部长度,则标题会被截尾。
●Default属性⽤于确定某命令按钮是否作为窗体上的缺省按钮。
缺省按钮是指当窗体打开时,⾸先获得焦点的那个命令按钮。
如果某个命令按钮的Default属性被设置为True,则该命令按钮为缺省按钮,即当单击该按钮以按回车键都可发⽣该命令按钮的Click事件。
需要注意的是每个窗体只能设置⼀个默认按钮。
因此,当—个按钮的Default属性被设置为True时,其它命令按钮的Default属性⾃动被设置为False。
●Cancel属性与Default属性类似,即当Cancel属性设置为True时,⽤户可以使⽤ESC键选择激活该命令按钮。
●Enabled属性命令按钮的Enabled为True时,允许使⽤命令按钮;若设置为False,则不允许使⽤命令按钮,同时,该按钮上的标题⽂本将被显⽰为灰度,表⽰按钮不可⽤。
●TooITipToxt属性⽤于设置命令按钮的提⽰⽂本。
即,当⿏标指向命令按钮时,在光标下⽅所显⽰的⽂字,这些⽂字常被⽤作解释按钮的功能。
●MousePointer属性指定当⽤户把⿏标放到特定对象上时,所显⽰⿏标指针的类型,其类型如表13-6所⽰。
表13-6 ⿏标指针类型。
excel vba 教程Excel VBA(Visual Basic Applications)是Microsoft Excel电子表格软件的一种编程语言,通过使用VBA,用户能够自动化执行各种任务,创建自定义功能和处理数据。
下面将介绍Excel VBA的一些基本知识和语法。
首先,打开Excel的可视基本编辑器(Visual Basic Editor或简称VBE),按下Alt+F11键即可打开。
在VBE中,可以看到项目资源管理器窗口和代码窗口。
在代码窗口中输入和编辑VBA代码。
VBA代码运行在宏(Macro)中,宏可以通过触发按钮、快捷方式、自定义菜单和事件等方式来执行。
可以通过宏录制器来录制一系列的操作步骤,并将其转化为VBA代码。
VBA代码由子程序(Sub)和函数(Function)组成。
子程序用于执行一系列的操作步骤,而函数则返回一个值。
下面是一个VBA子程序的示例:```Sub HelloWorld()MsgBox "Hello World!"End Sub```要执行该子程序,可以在Excel中按下Alt+F8键,选择HelloWorld,并点击运行按钮。
VBA代码可以操作Excel的各种对象,如工作簿(Workbook)、工作表(Worksheet)、单元格(Cell)等。
可以使用对象的属性和方法来操作和修改对象的属性和数据。
下面是一个修改单元格内容的示例:```Sub ChangeCellValue()Range("A1").Value = "Hello World!"End Sub```上述代码将单元格A1的值修改为"Hello World!"。
此外,VBA还支持条件语句(If语句)、循环语句(For循环、While循环)、数组、变量等基本语法结构。
这些语法结构可以帮助用户实现复杂的任务和算法。
除了基本语法,VBA还提供了丰富的内置函数和对象库,可用于处理字符串、日期时间、数学计算、文件操作等。
运行excel vba的15种方法运行Excel VBA的15种方法Excel VBA是一种基于微软Excel的可视化基本编程语言,它可以帮助用户自动执行各种复杂的任务,提高工作效率。
本文将介绍运行Excel VBA的15种方法,帮助读者更好地掌握和应用VBA技巧。
1. 使用快捷键在Excel中,可以通过按下Alt+F11快捷键来打开VBA编辑器,然后在编辑器中编写和运行VBA代码。
2. 使用开发者选项在Excel的菜单栏中,可以通过点击“文件”选项卡,然后选择“选项”来打开Excel选项。
在Excel选项中,可以勾选“开发者”选项卡,然后点击“Visual Basic”按钮来打开VBA编辑器。
3. 使用宏录制功能在Excel中,可以通过点击“开发者”选项卡中的“录制宏”按钮来录制宏。
录制完成后,可以通过点击“宏”按钮来运行录制好的宏。
4. 使用命令按钮在Excel中,可以通过插入命令按钮来执行VBA代码。
首先,在“开发者”选项卡中,点击“插入”按钮,然后选择“按钮”选项。
接下来,在工作表中绘制按钮,然后在出现的宏对话框中选择要执行的VBA代码。
5. 使用工作表事件在Excel中,可以通过在VBA编辑器中选择特定的工作表对象,然后编写相应的事件过程来运行VBA代码。
例如,选择工作表对象后,可以编写“Worksheet_SelectionChange”事件过程,该事件过程会在用户选择单元格时自动触发。
6. 使用工作簿事件与工作表事件类似,可以通过在VBA编辑器中选择工作簿对象,然后编写相应的事件过程来运行VBA代码。
例如,选择工作簿对象后,可以编写“Workbook_Open”事件过程,该事件过程会在打开工作簿时自动触发。
7. 使用自定义菜单在Excel中,可以通过在VBA编辑器中编写代码来创建自定义菜单,并在菜单项中执行VBA代码。
例如,可以创建一个名为“自定义菜单”的菜单,然后在菜单项中编写相应的VBA代码。
VBA中的图表操作命令与实例展示VBA(Visual Basic for Applications)是一种用于微软Office套件中编写宏的编程语言。
在Excel等应用程序中使用VBA可以自动化许多任务,包括图表操作。
本文将介绍一些常用的VBA图表操作命令,并提供实例展示。
1. 创建图表要在Excel中创建图表,可以使用ChartObjects集合的Add方法。
下面是一个创建柱状图的示例代码:```vbaSub CreateChart()Dim ws As WorksheetDim chtObj As ChartObjectDim cht As ChartSet ws = ThisWorkbook.Worksheets("Sheet1") '图表所在的工作表Set chtObj = ws.ChartObjects.Add(Left:=50, Top:=50, Width:=300, Height:=200) '图表的位置和尺寸Set cht = chtObj.Chart'设置图表的数据源范围cht.SetSourceData ws.Range("A1:B5")'设置图表类型为柱状图cht.ChartType = xlColumnClustered'给图表设置标题cht.HasTitle = Truecht.ChartTitle.Text = "Sales Report"End Sub```2. 修改图表属性可以使用Chart对象的属性来修改图表的样式和外观。
下面的示例代码演示了如何更改柱状图的标题、轴标签和图例:```vbaSub ModifyChartProperties()Dim ws As WorksheetDim cht As ChartSet ws = ThisWorkbook.Worksheets("Sheet1") '图表所在的工作表Set cht = ws.ChartObjects(1).Chart '假设图表是第一个ChartObject'修改图表标题cht.HasTitle = Truecht.ChartTitle.Text = "Sales Report 2021"'修改X轴和Y轴的标签cht.Axes(xlCategory, xlPrimary).HasTitle = Truecht.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Month"cht.Axes(xlValue, xlPrimary).HasTitle = Truecht.Axes(xlValue, xlPrimary).AxisTitle.Text = "Sales Amount"'修改图例位置cht.HasLegend = Truecht.Legend.Position = xlLegendPositionRightEnd Sub```3. 添加数据系列可以使用SeriesCollection集合的Add方法来添加数据系列。
本示例为设置密码窗口 (1) If Application.InputBox("请输入密码:") = 1234 Then [A1] = 1 '密码正确时执行 Else: MsgBox "密码错误,即将退出!" '此行与第2行共同设置密码 End If
本示例为设置密码窗口 (1) X = MsgBox("是否真的要结帐?", vbYesNo) If X = vbYes Then Close
本示例为设置工作表密码 ActiveSheet.Protect Password:=641112 ' 保护工作表并设置密码 ActiveSheet.Unprotect Password:=641112 '撤消工作表保护并取消密码
'本示例关闭除正在运行本示例的工作簿以外的其他所有工作簿,并保存其更改内容
。 For Each w In Workbooks If w.Name ThisWorkbook.Name Then w.Close SaveChanges:=True End If Next w
'每次打开工作簿时,本示例都最大化 Microsoft Excel 窗口。 Application.WindowState = xlMaximized
'本示例显示活动工作表的名称。 MsgBox "The name of the active sheet is " & ActiveSheet.Name
'本示例保存当前活动工作簿的副本。 ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS"
'下述过程激活工作簿中的第四张工作表。 Sheets(4).Activate
'下述过程激活工作簿中的第1张工作表。 Worksheets(1).Activate
'本示例通过将 Saved 属性设为 True 来关闭包含本段代码的工作簿,并放弃对该 工作簿的任何更改。 ThisWorkbook.Saved = True ThisWorkbook.Close
'本示例对自动重新计算功能进行设置,使 Microsoft Excel 不对第一张工作表自
动进行重新计算。 Worksheets(1).EnableCalculation = False
'下述过程打开 C 盘上名为 MyFolder 的文件夹中的 MyBook.xls 工作簿。 Workbooks.Open ("C:\MyFolder\MyBook.xls")
'本示例显示活动工作簿中工作表 sheet1 上单元格 A1 中的值。 MsgBox Worksheets("Sheet1").Range("A1").Value
本示例显示活动工作簿中每个工作表的名称 For Each ws In Worksheets MsgBox ws.Name Next ws
本示例向活动工作簿添加新工作表 , 并设置该工作表的名称? Set NewSheet = Worksheets.Add NewSheet.Name = "current Budget"
本示例将新建的工作表移到工作簿的末尾 'Private Sub Workbook_NewSheet(ByVal Sh As Object) Sh.Move After:=Sheets(Sheets.Count) End Sub
本示例将新建工作表移到工作簿的末尾 'Private Sub App_WorkbookNewSheet(ByVal Wb As Workbook, _ ByVal Sh As Object) Sh.Move After:=Wb.Sheets(Wb.Sheets.Count) End Sub
本示例新建一张工作表,然后在第一列中列出活动工作簿中的所有工作表的名称。 Set NewSheet = Sheets.Add(Type:=xlWorksheet) For i = 1 To Sheets.Count NewSheet.Cells(i, 1).Value = Sheets(i).Name Next i
本示例将第十行移到窗口的最上面? Worksheets("Sheet1").Activate ActiveWindow.ScrollRow = 10
当计算工作簿中的任何工作表时,本示例对第一张工作表的 A1:A100 区域进行排序
。 'Private Sub Workbook_SheetCalculate(ByVal Sh As Object) With Worksheets(1) .Range("a1:a100").Sort Key1:=.Range("a1") End With End Sub 本示例显示工作表 Sheet1 的打印预览。 Worksheets("Sheet1").PrintPreview
本示例保存当前活动工作簿? ActiveWorkbook.Save
本示例保存所有打开的工作簿,然后关闭 Microsoft Excel。 For Each w In Application.Workbooks w.Save Next w Application.Quit
下例在活动工作簿的第一张工作表前面添加两张新的工作表? Worksheets.Add Count:=2, Before:=Sheets(1)
本示例设置 15 秒后运行 my_Procedure 过程,从现在开始计时。 Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
本示例设置 my_Procedure 在下午 5 点开始运行。 Application.OnTime TimeValue("17:00:00"), "my_Procedure"
本示例撤消前一个示例对 OnTime 的设置。 Application.OnTime EarliestTime:=TimeValue("17:00:00"), _ Procedure:="my_Procedure", Schedule:=False
每当工作表重新计算时,本示例就调整 A 列到 F 列的宽度。 'Private Sub Worksheet_Calculate() Columns("A:F").AutoFit End Sub
本示例使活动工作簿中的计算仅使用显示的数字精度。 ActiveWorkbook.PrecisionAsDisplayed = True 本示例将工作表 Sheet1 上的 A1:G37 区域剪下,并放入剪贴板。 Worksheets("Sheet1").Range("A1:G37").Cut
Calculate 方法 计算所有打开的工作簿、工作簿中的一张特定的工作表或者工作表中指定区域的单元
格,如下表所示: '要计算 '依照本示例
所有打开的工作簿 ' Application.Calculate (或只是 Calculate
) 指定工作表 '计算指定工作表Sheet1 Worksheets
("Sheet1").Calculate 指定区域 'Worksheets(1).Rows(2).Calculate
本示例对自动重新计算功能进行设置,使 Microsoft Excel 不对第一张工作表自动
进行重新计算。 Worksheets(1).EnableCalculation = False
本示例计算 Sheet1 已用区域中 A 列、B 列和 C 列的公式。 Worksheets("Sheet1").UsedRange.Columns("A:C").Calculate
本示例更新当前活动工作簿中的所有链接? ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
本示例设置第一张工作表的滚动区域? Worksheets(1).ScrollArea = "a1:f10"
本示例新建一个工作簿,提示用户输入文件名,然后保存该工作簿。 Set NewBook = Workbooks.Add Do fName = Application.GetSaveAsFilename Loop Until fName False NewBook.SaveAs Filename:=fName
本示例打开 Analysis.xls 工作簿,然后运行 Auto_Open 宏。 Workbooks.Open "ANALYSIS.XLS" ActiveWorkbook.RunAutoMacros xlAutoOpen 本示例对活动工作簿运行 Auto_Close 宏,然后关闭该工作簿。 With ActiveWorkbook .RunAutoMacros xlAutoClose .Close End With
在本示例中,Microsoft Excel 向用户显示活动工作簿的路径和文件名称。 'Sub UseCanonical() Display the full path to user. MsgBox ActiveWorkbook.FullNameURLEncoded End Sub
本示例显示当前工作簿的路径及文件名(假定尚未保存此工作簿)。 MsgBox ActiveWorkbook.FullName
本示例关闭 Book1.xls,并放弃所有对此工作簿的更改。 Workbooks("BOOK1.XLS").Close SaveChanges:=False
本示例关闭所有打开的工作簿。如果某个打开的工作簿有改变,Microsoft Excel 将显示询问是否保存更改的对话框和相应提示。 Workbooks.Close
本示例在打印之前对当前活动工作簿的所有工作表重新计算? 'Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each wk In Worksheets wk.Calculate Next End Sub
本示例对查询表一中的第一列数据进行汇总,并在数据区域下方显示第一列数据的总
和。 Set c1 = Sheets("sheet1").QueryTables(1).ResultRange.Columns(1) c1.Name = "Column1" c1.End(xlDown).Offset(2, 0).Formula = "=sum(Column1)"
本示例取消活动工作簿中的所有更改? ActiveWorkbook.RejectAllChanges
本示例在商业问题中使用规划求解函数,以使总利润达到最大值。SolverSave 函数