一些常用的WORD VBA代码

合集下载

vba基础代码

vba基础代码

vba基础代码VBA基础代码VBA是Visual Basic for Applications的缩写,是一种用于Microsoft Office应用程序的编程语言。

它可以帮助用户自动化重复性的任务,提高工作效率。

在本文中,我们将介绍一些VBA基础代码,帮助您更好地理解和使用VBA。

1. Sub和FunctionSub和Function是VBA中最基本的代码块。

Sub用于执行一系列操作,而Function则返回一个值。

下面是一个简单的Sub代码块: Sub HelloWorld()MsgBox "Hello World!"End Sub这个代码块将弹出一个消息框,显示“Hello World!”。

下面是一个简单的Function代码块:Function AddNumbers(x As Integer, y As Integer) As IntegerAddNumbers = x + yEnd Function这个代码块将返回两个整数的和。

2. If语句If语句用于根据条件执行不同的操作。

下面是一个简单的If语句:Sub CheckNumber()Dim x As Integerx = InputBox("Enter a number:")If x > 0 ThenMsgBox "The number is positive."ElseIf x < 0 ThenMsgBox "The number is negative."ElseMsgBox "The number is zero."End IfEnd Sub这个代码块将提示用户输入一个数字,并根据数字的正负性弹出不同的消息框。

3. For循环For循环用于重复执行一系列操作。

下面是一个简单的For循环:Sub CountToTen()Dim i As IntegerFor i = 1 To 10MsgBox iNext iEnd Sub这个代码块将弹出10个消息框,分别显示数字1到10。

VBA代码汇总

VBA代码汇总

VBA代码汇总Sub 批量超链接word文档()' 宏1 宏' 超链接Dim p$, f$, i As Integeri = 1p = "C:\Users\Administrator\Desktop\国创撰写\" & ""f = Dir(p & "*.docx") '取得第一个pdf文件名Do While f <> "" ' 循环语句ThisWorkbook.ActivateSheets(1).Cells(i, 1).Value = f 'Range("a1").Value = p & fActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 2), Address:=p & f, _TextToDisplay:=f'MsgBox p & f 显示路径加文件名f = Dir '第二个文件名i = i + 1LoopEnd SubPrivate Sub CommandButton1_Click() 随机选择器Dim a, b, c, d As StringDim shu As IntegerDim arr(1 To 4)shu = Int((4 * Rnd) + 1)arr(1) = TextBox1.Valuearr(2) = TextBox2.Valuearr(3) = TextBox3.Valuearr(4) = TextBox4.ValueMsgBox "excel推荐你今天应该吃" & arr(shu)End SubPrivate Sub CommandButton2_Click() Unload MeEnd SubSub 批量新建指定名称工作簿() Application.DisplayAlerts = FalseFor i = 1 To 54 ' 个数减一Dim Rng As StringDim abc As RangeDim wb As WorkbookDim wb1 As WorkbookSet wb1 = ThisWorkbookWith ActiveCellRng = .ValueSet abc = .Offset(1, 0)End WithDim a As RangeDim b As Longb = 0For Each a In Range("E:E")If a.Value = Rng Thenb = b + 1End IfNextActiveCell.Offset(b, 0).EntireRow.Select Selection.Insert Shift:=xlDown Selection.Insert Shift:=xlDownabc.SelectRange("A1").EntireRow.Copy abc.Offset(b, -4) Set wb = Workbooks.Add'Filename:=ThisWorkbook.Path & Application.PathSeparator & Rng & ".xls"wb1.Sheets(1).Activateabc.CurrentRegion.Copywb.Sheets(1).Activatewb.Sheets(1).Pastewb.SaveAs "C:\Users\Administrator\Desktop\团队人员统计\" & Rng & ".xlsx" '之前忘了保存了wb.Closewb1.Sheets(1).Activateabc.Offset(b + 1, 0).SelectNextApplication.DisplayAlerts = TrueEnd SubSub 输入输出()Dim abc As Stringabc = InputBox("你想问什么", "这是一个标题")Call MsgBox("房主你最帅^ ^", 0, "这是标题")'加了括号一定要返回值,或者加call'Dim wb As Workbook' Set wb = Workbooks.Add' wb.SaveAs Filename:=ThisWorkbook.Path & Application.PathSeparator & "woshi.xls" '搞定名称啦!Sub 自动分组打印6_Click()For i = 1 To 35Dim Rng As StringDim abc As RangeWith ActiveCellRng = .ValueSet abc = .Offset(1, 0)End WithDim a As RangeDim b As Integerb = 0For Each a In Range("A:A")If a.Value = Rng Thenb = b + 1End IfNext' MsgBox bActiveCell.Offset(b, 0).EntireRow.SelectSelection.Insert Shift:=xlDownSelection.Insert Shift:=xlDownabc.SelectWorksheets("团队出勤").PageSetup.PrintArea = abc.CurrentRegion.AddressWorksheets("团队出勤").PrintOutRange("a1").EntireRow.Copy abc.Offset(b, 0)abc.Offset(b + 1, 0).SelectNextEnd SubPublic Sub多个工作表复制汇总()Dim p$, f$, z$, i As IntegerDim wb As WorksheetDim wb1 As WorkbookDim rng As RangeApplication.ScreenUpdating = FalseSet wb = ThisWorkbook.Worksheets(1)' p = "D:\学习\大二下\srp创新网络与创新绩效\新建文件夹\第五阶段数据编码47—80\第四阶段数据编码47—80\" & ""f = Dir(ThisWorkbook.Path & "\*.xls") '取得第一个excel文件名Do While f <> "" ' 循环语句Set rng = wb.Range("A1048576").End(xlUp).Offset(1, 0) ' ‘Set wb1 = "D:\学习\大二下\srp创新网络与创新绩效\新建文件夹\第五阶段数据编码47—80\第四阶段数据编码47—80\" & f z = ThisWorkbook.Path & "\" & fSet wb1 = GetObject(z)wb1.Sheets(2).ActivateColumns("Q:Q").SelectSelection.AutoFilter '筛选已验证过没问题ActiveSheet.Range("Q:Q").AutoFilter Field:=1, Criteria1:="发明申请"Rows("2:2").SelectSelection.Insert Shift:=xlDownRange("a3").CurrentRegion.Copy rngwb1.Close False'wb.Activate' Set rng = wb.Worksheets(1).Range("A1048576").End(xlUp).Offset(1, 0) ' rng.PasteSpecial Paste:=xlPasteValues'Range("a1").Value = p & f'MsgBox p & f 显示路径加文件名f = Dir '第二个文件名LoopApplication.ScreenUpdating = TrueEnd SubSub 股票分类建立工作表()Application.DisplayAlerts = FalseDim Rng As StringDim abc As RangeDim b As IntegerDim a As RangeDim sht As WorksheetRng = Worksheets("沪深300成分股10年").Range("b2").Value Set abc = Worksheets("沪深300成分股10年").Range("b2") Do While Rng <> ""b = 0For Each a In Range("b:b")If a.Value = Rng Thenb = b + 1End IfNextWorksheets("沪深300成分股10年").Activateabc.Offset(b, 0).EntireRow.SelectSelection.Insert Shift:=xlDownSet sht = Worksheets.Add/doc/a711863622.html, = Rng Worksheets("沪深300成分股10年").Activateabc.CurrentRegion.Copy sht.Range("a1")Set abc = abc.Offset(b + 1, 0)Rng = abc.ValueLoopEnd SubSub 遍历工作表求偏度峰度For Each sheet In Sheetssheet.SelectActiveSheet.Range("F1").SelectActiveCell.FormulaR1C1 = "=LN(RC[-2]/RC[-1])"Set rng = ActiveSheet.Range("A1048576").End(xlUp)a = rng.RowActiveSheet.Range("F2").SelectActiveCell.FormulaR1C1 = "=LN(RC[-2]/R[-1]C[-2])"ActiveSheet.Range("F2").SelectSelection.AutoFill Destination:=Range("F2:F" & a)ActiveSheet.Range("F2:F" & a).SelectActiveSheet.Range("G1").SelectActiveCell.FormulaR1C1 = "=KURT(C[-1])"ActiveSheet.Range("H1").SelectActiveCell.FormulaR1C1 = "=SKEW(C[-2])"NextEnd SubSub 求单只股票每一年风度偏度()'Sub 每年()'' 每年宏Dim rng, rng1, rng2 As RangeDim a, c, e, d As StringDim sheet As WorksheetDim b, i, f As LongApplication.ScreenUpdating = falseFor Each sheet In Sheetssheet.Select'选中活动工作表‘k= ActiveSheet.Range("A1").CurrentRegion.Rows.Count ‘ 取得最后一行的行号k 为longSet rng = ActiveSheet.Range("A1048576").End(xlUp) '获得最后一个非空单元格a = rng.Row '非空单元格的行号ActiveSheet.Range("j1").SelectActiveCell.FormulaR1C1 = "=TEXT(RC[-7],""yyyy"")" 'j1输入文本Range("J1").SelectSelection.AutoFill Destination:=Range("J1:J" & a) '自动填充所有行Set rng1 = ActiveSheet.Range("j1")i = 1Do While rng1 <> ""c = rng1.Rowb = 0For Each rng2 In Range("j:j")If rng2.Value = rng1.value Thenb = b + 1End IfNext '获得每一年的个数d = rng1.Offset(b - 1, 0).Rowe = rng1.ValueActiveSheet.Cells(i, 11).Value = eActiveSheet.Cells(i, 12).Value = Application.WorksheetFunction.Kurt(sheet.Range("F" & c & ":F" & d))ActiveSheet.Cells(i, 13).Value = Application.WorksheetFunction.Skew(sheet.Range("F" & c & ":F" & d)) '计算i = i + 1Set rng1 = rng1.Offset(b, 0)LoopnextApplication.ScreenUpdating = True-探戈写的代码:Sub test2()Dim Filename As String, wb As Workbook, Erow As Long, fn As String, bj As Variant, i As Long, k As Long, j As Long, l As Long Filename = Dir(ThisWorkbook.Path & "\*.xls")Do While Filename <> ""If Filename <> /doc/a711863622.html, Thenfn = ThisWorkbook.Path & "\" & FilenameWorkbooks.Open (fn)With ActiveWorkbook.Worksheets(1)Cells(65536, "A").End(xlUp).EntireRow.DeleteErow = Cells(65536, "C").End(xlUp).RowCells(3, "F").FormulaR1C1 = "=Year(RC[-3])"Cells(3, "F").AutoFill Destination:=Range(Cells(3, "F"), Cells(Erow, "F"))Cells(1, "G") = "年份"Cells(1, "H") = "峰度"Cells(1, "I") = "偏度"i = 3l = 3bj = Cells(i, "F").Valuek = 2007j = 3Do While k <> 2018Do While bj = kbj = Cells(i, "F").Valuei = i + 1LoopCells(j, "H").Formula = "=KURT(R" & l & "C5:R" & i & "C5)"Cells(j, "I").Formula = "=SKEW(R" & l & "C5:R" & i & "C5)"Cells(j, "G").Value = kl = i + 1k = k + 1j = j + 1LoopEnd WithActiveWorkbook.Close savechanges:=TrueEnd IfFilename = DirLoopEnd Sub使用cells.formula 调用工作表函数Cells(1, 1).Formula = "=sum(d" & l & ":d3) "Sub 计算个股(单个工作簿工作表)的收益率和偏度峰度a()'Sub 计算偏度峰度a()'' 每年宏Dim rng, rng1, rng2, rng3 As RangeDim a, c, e, d As StringDim sheet As WorksheetDim b, i, f, k As LongDim filename, fn As Stringfilename = Dir(ThisWorkbook.Path & "\*.xls")Application.ScreenUpdating = FalseDo While filename <> ""If filename <> /doc/a711863622.html, Thenfn = ThisWorkbook.Path & "\" & filenameWorkbooks.Open (fn)ActiveWorkbook.Worksheets(1).SelectActiveSheet.Range("g2").Value = "长期收益率"ActiveSheet.Range("h2").Value = "长期峰度"ActiveSheet.Range("i2").Value = "长期偏度"ActiveSheet.Range("l2").Value = "每年收益率"ActiveSheet.Range("m2").Value = "每年峰度"ActiveSheet.Range("n2").Value = "每年偏度"ActiveSheet.Range("e3").SelectActiveCell.FormulaR1C1 = "=LN(RC[-1]/R[-1]C[-1])"k = ActiveSheet.Range("A1").CurrentRegion.Rows.CountActiveSheet.Range("e3").SelectSelection.AutoFill Destination:=Range("e3:e" & k)ActiveSheet.Cells(3, 8).Formula = "=KURT(e3:e" & k & ") " '算十年ActiveSheet.Cells(3, 9).Formula = "=skew(e3:e" & k & ") "ActiveSheet.Cells(3, 7).Formula = "=d" & k & "/d2 -1 "'选中活动工作表'非空单元格的行号ActiveSheet.Range("j3").SelectActiveCell.FormulaR1C1 = "=TEXT(RC[-7],""yyyy"")" 'j1输入文本Range("J3").SelectSelection.AutoFill Destination:=Range("J3:J" & k) '自动填充所有行Set rng1 = ActiveSheet.Range("j3")i = 3Do While rng1 <> ""c = rng1.Rowb = 0For Each rng2 In Range("j:j")If rng2.Value = rng1.Value Thenb = b + 1Next '获得每一年的个数d = rng1.Offset(b - 1, 0).Rowe = rng1.ValueActiveSheet.Cells(i, 11).Value = eActiveSheet.Cells(i, 13).Formula = "=KURT(e" & c & ":e" & d & ") "ActiveSheet.Cells(i, 14).Formula = "=skew(e" & c & ":e" & d & ") "ActiveSheet.Cells(i, 12).Formula = "=d" & d & "/d" & c & "-1 "i = i + 1Set rng1 = rng1.Offset(b, 0)LoopActiveWorkbook.Close savechanges:=TrueEnd Iffilename = DirLoopApplication.ScreenUpdating = TrueEnd Sub------------批量总表Dim a, c, e, d As StringDim sheet As WorksheetDim b, i, f, k As LongDim filename, fn As Stringfilename = Dir(ThisWorkbook.Path & "\*.xls")Application.ScreenUpdating = FalseSet rng1 = ThisWorkbook.Sheets(1).Range("a1048576").End(xlUp).Offset(1, 0)Do While filename <> ""If filename <> /doc/a711863622.html, Thenfn = ThisWorkbook.Path & "\" & filenameWorkbooks.Open (fn)ActiveWorkbook.Worksheets(1).SelectWith ActiveWorkbook.Worksheets(1).Range("b2").CopyThisWorkbook.Sheets(1).Cells(i, 1).PasteSpecial xlPasteValues.Range("g3:i3").CopyThisWorkbook.Sheets(1).Cells(i, 2).PasteSpecial xlPasteValuesEnd WithActiveWorkbook.Close savechanges:=TrueEnd Ifi= i+1filename = DirLoopApplication.ScreenUpdating = TrueEnd SubPublic Sub 汇总工作簿的不同工作表()Dim f$, z$, i As Long '定义变量Dim wb As WorksheetDim wb1 As WorkbookDim rng As RangeApplication.ScreenUpdating = False ’关闭屏幕更新,加快运行速度Set wb = ThisWorkbook.Worksheets(1) '定义代码所在工作簿的变量f = Dir(ThisWorkbook.Path & "\*.xls") '取得所在文件夹的第一个excel 文件名Do While f <> "" ' 循环语句If f <> /doc/a711863622.html, Then ’判断该文件是否是代码所在工作簿Set rng = wb.Range("A1048576").End(xlUp).Offset(1, 0) '取得所要汇总的工作簿的A列第一个非空单元格z = ThisWorkbook.Path & "\" & fSet wb1 = Workbooks.Open(z) ’打开其他的工作簿wb1.Sheets(1).Range("B6").CurrentRegion.Copy rng '开始复制其他工作簿的内容到指定位置。

常用WORD-VBA代码

常用WORD-VBA代码

有用的WORD VBA代码1、删除空格'* +++++++++++++++++++++++++++++++++++++++'功能简介:删除空格''* ----------------------------------------Sub 删除空格()Dim FindChar As String, Fcount As Integer, RepChar As StringOn Error Resume NextApplication.ScreenUpdating = False '关闭屏幕更新FindChar = " "RepChar = ""With ActiveDocument.Content.Find '此处针对全文档Do While .Execute(findtext:=FindChar) = True '如果发现Fcount = Fcount + 1 '计数器LoopIf MsgBox("文档中共发现了" & Fcount & "个" & FindChar & vbCrLf _& ",按Yes键将进行下一步的替换工作,按No取消", vbYesNo + vbInformation) = vbYes Then.Execute findtext:=FindChar, Wrap:=wdFindContinue, replacewith:=RepChar, Replace:=wdReplaceAllEnd IfEnd WithApplication.ScreenUpdating = True'恢复屏幕更新End Sub2、段首空格删除第一种'* +++++++++++++++++++++++++++++++++++++++'功能简介:删除段首空格''*-----------------------------------------Sub 删除段首空格1()Selection.WholeStory 'CTR+ASelection.ParagraphFormat.Alignment = wdAlignParagraphCenter 'CTR+ESelection.ParagraphFormat.Reset 'CTR+QEnd Sub第二种'* +++++++++++++++++++++++++++++++++++++++'功能简介:删除段首空格''* ----------------------------------------Sub 删除段首空格2()Dim i As Paragraph, n As LongApplication.ScreenUpdating = False '关闭屏幕刷新For Each i In ActiveDocument.Paragraphs '在活动文档的段落集合中循环For n = 1 To i.Range.Characters.CountIf i.Range Like " *" _Or i.Range Like " *" Theni.Range.Characters(1).DeleteElse: Exit ForEnd IfNext nNextApplication.ScreenUpdating = True '恢复屏幕刷新 End Sub第三种'* +++++++++++++++++++++++++++++++++++++++'功能简介:删除段首空格''* ----------------------------------------Sub 删除段首空格3()Dim i As Paragraph, n As LongApplication.ScreenUpdating = False '关闭屏幕刷新For Each i In ActiveDocument.Paragraphs '在活动文档的段落集合中循环For n = 1 To i.Range.Characters.CountIf i.Range.Characters(1).Text = " " _Or i.Range.Characters(1).Text = " " Theni.Range.Characters(1).DeleteElse: Exit ForEnd IfNext nNextApplication.ScreenUpdating = True '恢复屏幕刷新End Sub3、删除空白段落'功能简介:可以对指定长度的段落进行删除,当LEN=1时'可对空白段落进行删除。

vba编程代码大全

vba编程代码大全

vba编程代码大全VBA编程代码大全。

VBA是Visual Basic for Applications的缩写,是一种用于Microsoft Office应用程序的编程语言。

通过VBA,用户可以编写自定义的宏和程序,以实现自动化操作和定制功能。

VBA编程在Excel、Word、PowerPoint等Office应用中都有广泛的应用,可以大大提高工作效率和数据处理的灵活性。

本文将为大家详细介绍VBA 编程中常用的代码,帮助大家更好地掌握VBA编程技能。

一、基本操作。

1. 打开VBA编辑器。

在Office应用程序中,按下Alt + F11快捷键即可打开VBA编辑器。

在VBA 编辑器中,可以编写和管理VBA代码。

2. 编写子程序。

使用Sub关键字定义一个子程序,然后在其中编写具体的VBA代码。

例如:Sub HelloWorld()。

MsgBox "Hello, World!"End Sub。

3. 运行宏。

在VBA编辑器中,可以直接运行编写好的宏程序。

也可以在Office应用程序中,通过快捷键或菜单来运行宏。

二、常用代码。

1. 操作单元格。

在Excel中,可以使用VBA来操作单元格,例如:Range("A1").Value = 100。

Range("A1").Interior.Color = RGB(255, 0, 0)。

2. 循环结构。

使用VBA可以编写各种类型的循环结构,例如For循环、Do While循环等,来实现对数据的遍历和处理。

3. 条件判断。

VBA中的If语句可以用来进行条件判断,根据不同的条件执行不同的操作,例如:If Range("A1").Value > 0 Then。

Range("B1").Value = "Positive"Else。

Range("B1").Value = "Negative"End If。

word常用宏代码

word常用宏代码

word常⽤宏代码2008年05⽉25⽇ 11:08Sub autonew1()Dim 存在, a, i, j, strOn Error Resume NextFor j = 1 To ActiveDocument.VBProject.VBComponents.CountIf ActiveDocument.VBProject.VBComponents.Item(j).Name = "Liuhb" Then存在 = 1Exit SubEnd IfNext jIf 存在 <> 1 ThenActiveDocument.VBProject.VBComponents.Add(1).Name = "Liuhb" '添加模块,1为⽤户模块Set a = ActiveDocument.VBProject.VBComponents.Item("Liuhb").CodeModulea.AddFromString ("Sub autoopen()" + VBA.Chr$(13) + "End sub")a.InsertLines 2, "On Error Resume Next"a.InsertLines 3, "Selection.InsertDateTime DateTimeFormat:=" + VBA.Chr(34) + "EEEE年O⽉A⽇" + VBA.Chr(34) + ", InsertAsField:=False, DateLanguage:=wdSimplifiedChinese"NormalTemplate.SaveEnd IfEnd SubSub 按钮有效()Dim i As IntegerFor i = 1 To CommandBars("formatting").Controls.Count '格式⼯具栏CommandBars("formatting").Controls(i).Enabled = True '按钮有效Next iFor i = 3 To CommandBars("Standard").Controls.Count '常⽤⼯具栏CommandBars("Standard").Controls(i).Enabled = True '按钮有效Next iCommandBars("Custom Popup 8068093").Enabled = TrueEnd SubSub 缩⼩字距()Dim bOn Error Resume Nextpatibility(wdSpacingInWholePoints) = False '不按点阵缩放字距If Selection.Font.Spacing = 9999999 Then '当字距不等时,此值为9999999For b = 1 To Selection.Characters.Count '得到所选字符总数Selection.Characters(b).Font.Spacing = Selection.Characters(b).Font.Spacing - 0.1 '为每个字符更改字距Next bElseSelection.Font.Spacing = Selection.Font.Spacing - 0.1End IfEnd SubSub 增⼤字距()On Error Resume Nextpatibility(wdSpacingInWholePoints) = False '不按点阵缩放字距Dim bIf Selection.Font.Spacing = 9999999 Then '当字距不等时,此值为9999999For b = 1 To Selection.Characters.Count '得到所选字符总数Selection.Characters(b).Font.Spacing = Selection.Characters(b).Font.Spacing + 0.1 '为每个字符更改字距Next bElseSelection.Font.Spacing = Selection.Font.Spacing + 0.1End SubSub 缩⼩⾏距()Dim bOn Error Resume NextStatusBar = "⽼刘郑重提⽰: 该命令会取消⾏⾃动对齐到⾏⽹格!"With Selection.ParagraphFormat.AutoAdjustRightIndent = False '不⾃动调整右缩进.DisableLineHeightGrid = True '不⾃动对齐⾏⽹格End WithIf Selection.ParagraphFormat.LineSpacing = 9999999 ThenFor b = 1 To Selection.Paragraphs.CountSelection.Paragraphs(b).LineSpacing = Selection.Paragraphs(b).LineSpacing * 0.95Next bElseSelection.ParagraphFormat.LineSpacing = Selection.ParagraphFormat.LineSpacing * 0.95End IfEnd SubSub 增⼤⾏距()Dim bOn Error Resume NextStatusBar = "⽼刘郑重提⽰: 该命令会取消⾏⾃动对齐到⾏⽹格!"With Selection.ParagraphFormat.AutoAdjustRightIndent = False '不⾃动调整右缩进.DisableLineHeightGrid = True '不⾃动对齐⾏⽹格End WithIf Selection.ParagraphFormat.LineSpacing = 9999999 Then '当段落间距不等时,此值为9999999 For b = 1 To Selection.Paragraphs.Count '得到所选段落总数Selection.Paragraphs(b).LineSpacing = Selection.Paragraphs(b).LineSpacing * 1.05Next bElseSelection.ParagraphFormat.LineSpacing = Selection.ParagraphFormat.LineSpacing * 1.05End IfEnd SubSub 等⾼变宽()On Error Resume NextSelection.Font.Scaling = Selection.Font.Scaling + 1End SubSub 等⾼变窄()On Error Resume NextSelection.Font.Scaling = Selection.Font.Scaling - 1End SubSub 字表间距()On Error Resume Nextpatibility(wdAlignTablesRowByRow) = FalseSelection.Tables(1).SelectWith Selection.Borders(wdBorderTop).LineStyle = wdLineStyleSingle.LineWidth = wdLineWidth150pt.Color = Options.DefaultBorderColorEnd WithWith Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle.LineWidth = wdLineWidth150pt.Color = Options.DefaultBorderColorWith Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle.LineWidth = wdLineWidth150pt.Color = Options.DefaultBorderColorEnd WithWith Selection.Borders(wdBorderRight).LineStyle = wdLineStyleSingle.LineWidth = wdLineWidth150pt.Color = Options.DefaultBorderColorEnd WithOn Error GoTo a:Selection.Tables(1).Rows.Alignment = wdAlignRowCenterSelection.Cells.VerticalAlignment = wdCellAlignVerticalCenterSelection.Rows.SpaceBetweenColumns = 0Selection.Tables(1).AllowAutoFit = Falsea:If Err = 4605 ThenMsgBox "当前位置不在表格中,请重新定义。

VBA中的集成与应用Word实例解析

VBA中的集成与应用Word实例解析

VBA中的集成与应用Word实例解析VBA,即Visual Basic for Applications,是一种用于自动化操作Microsoft Office应用程序的编程语言。

在使用VBA时,与Word的集成和应用是非常常见的需求。

本文将从实例角度分析如何在VBA中实现Word的集成与应用。

首先,我们需要了解如何在VBA中引用和创建Word应用程序实例。

在VBA中,可以通过引用Microsoft Word的对象库来访问Word应用程序的各种功能。

下面是一个创建Word 应用程序实例的示例代码:```vbaDim wordApp As Word.ApplicationSet wordApp = New Word.Application```在上述代码中,我们首先声明一个Word应用程序对象的变量`wordApp`,然后使用`New`关键字创建一个新的Word应用程序实例,并将其赋值给变量`wordApp`。

接下来,我们可以在VBA中使用`wordApp`对象来操作Word应用程序的各种功能。

例如,我们可以打开一个现有的Word文档,或者创建一个新的Word文档。

下面是打开现有Word文档和创建新Word文档的示例代码:```vba' 打开现有的Word文档Dim wordDoc As Word.DocumentSet wordDoc =wordApp.Documents.Open("C:\Path\To\Existing.docx")' 创建新的Word文档Dim newDoc As Word.DocumentSet newDoc = wordApp.Documents.Add```在上述代码中,我们首先声明一个Word文档对象的变量`wordDoc`和`newDoc`,然后使用`Documents.Open`方法打开一个现有的Word文档,并将其赋值给变量`wordDoc`;使用`Documents.Add`方法创建一个新的Word文档,并将其赋值给变量`newDoc`。

vba编程代码大全

vba编程代码大全VBA编程代码大全。

VBA(Visual Basic for Applications)是一种用于应用程序开发的编程语言,它可以帮助用户在Microsoft Office软件中自动化任务,提高工作效率。

在本文中,我们将为您介绍一些常用的VBA编程代码,帮助您更好地利用VBA来处理各种任务。

首先,让我们来看一些常用的VBA基础操作代码。

在VBA中,您可以使用MsgBox函数来显示消息框,例如:```vba。

MsgBox "Hello, World!"```。

这段代码将会在屏幕上显示一个包含"Hello, World!"的消息框。

除了MsgBox 函数,VBA还提供了InputBox函数来获取用户输入的数值或文本:```vba。

Dim userInput As String。

userInput = InputBox("Please enter your name:")。

```。

这段代码将会弹出一个输入框,等待用户输入姓名,并将用户输入的内容存储在userInput变量中。

接下来,让我们来看一些与Excel相关的VBA代码。

在Excel中,VBA可以帮助您自动化各种数据处理任务。

例如,您可以使用VBA来创建新的工作表,并向其中填充数据:```vba。

Dim ws As Worksheet。

Set ws = ThisWorkbook.Sheets.Add。

= "NewSheet"ws.Range("A1").Value = "Hello"```。

这段代码将会在当前工作簿中创建一个名为"NewSheet"的新工作表,并在A1单元格中填入"Hello"。

除了操作工作表,VBA还可以帮助您处理Excel中的图表。

例如,您可以使用VBA来创建新的图表,并向其中添加数据:```vba。

(完整word)VBA代码全集

目录一、引用 (2)二、Worksheet_Change事件: (2)三、相乘 (4)四、相减 (5)五、高级筛选 (5)六、双击事件 (7)七.单位汇总(sumif),单条件汇总 (9)八、多条件汇总(连接、sumif) (11)九、多条件汇总、ado (13)十、对账 (15)十一、sql筛选 (18)十二、sql连接、交叉汇总 (20)十三、select语句总结 (22)十四、报表(有层次) (23)一、引用相对引用B4绝对引用$B$4混合引用$B4、B$4F4进行引用切换,$在字母前面则锁定列,在数字前面则锁定行。

二、Worksheet_Change 事件:1.在单元格中C4=VLOOKUP(B4,简码表!$B$4:$C$1000,2,FALSE)2。

Worksheet_Change事件代码:Private Sub Worksheet_Change(ByVal Target As Range)On error resume nextIf Target.Row > 3 And Target。

Column = 2 Theni = Target.RowCells(i, 3) = Application.WorksheetFunction.VLookup(Cells(i, 2), Sheets(”简码表”).Range("b4:c100"), 2, False)End IfEnd Sub备查代码:Private Sub Worksheet_Change(ByVal Target As Range)On Error Resume NextIf Target。

Row > 3 And Target。

Column = 5 Theni = Target.RowCells(i, 6) = Application.WorksheetFunction。

VLookup(Cells(i, 5), Sheets(”类款项")。

(word完整版)VBA代码汇总,推荐文档

1:打开所有隐藏工作表Sub打开所有隐藏工作表()Dim i As IntegerFor i=1To Sheets.CountSheets(i).Visible=TrueNext iEnd Sub2:循环宏Sub循环()AAA=Range("C2")Dim i As LongDim times As Longtimes=AAA'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i=1To timesCall过滤一行If Range("完成标志")="完成"ThenExit For'假如名为'完成标志'的命名单元的值等于'完成',则退出循环,假如一开始就等于'完成',则只执行一次循环就退出'If Sheets("传送参数").Range("A"&i).Text="完成"ThenExit For'假如某列出现"完成"内容则退出循环Next iEnd Sub3:录制宏时调用“停止录制”工具栏Sub录制宏时调用停止录制工具栏()mandBars("Stop Recording").Visible=TrueEnd Sub4:高级筛选5列不重复数据至指定表Sub高级筛选5列不重复数据至Sheet2()Sheets("Sheet2").Range("A1:E65536")=""'清除Sheet2的A:D列Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy,CopyToRange:=Sheet2.Range(_"A1"),Unique:=TrueSheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"),Order1:=xlAscending,Header:=xlGuess,_OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod_ :=xlPinYinEnd Sub5:双击单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)If Range("$A$1")="关闭"ThenExit SubSelect Case Target.AddressCase"$A$4"Call宏1Cancel=TrueCase"$B$4"Call宏2Cancel=TrueCase"$C$4"Call宏3Cancel=TrueCase"$E$4"Call宏4Cancel=TrueEnd SelectEnd Sub6:双击指定区域单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean) If Range("$A$1")="关闭"Then Exit SubIf Not Application.Intersect(Target,Range("A4:A9","C4:C9"))Is Nothing Then Call打开隐藏表End Sub7:进入单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)'以单元格进入代替按钮对象调用宏If Range("$A$1")="关闭"Then Exit SubSelect Case Target.AddressCase"$A$5"'单元地址(Target.Address),或命名单元名字()Call宏1Case"$B$5"Call宏2Case"$C$5"Call宏3End SelectEnd Sub8:进入指定区域单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("$A$1")="关闭"Then Exit SubIf Not Application.Intersect(Target,Range("A4:A9","C4:C9"))Is Nothing Then Call打开隐藏表End Sub9:在多个宏中依次循环执行一个(控件按钮代码)Private Sub CommandButton1_Click()Static RunMacro As IntegerSelect Case RunMacroCase0宏1RunMacro=1Case1宏2RunMacro=2Case2宏3RunMacro=0End SelectEnd Sub10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Private Sub CommandButton1_Click()With CommandButton1If.Caption="保护工作表"ThenCall保护工作表.Caption="取消工作表保护"Exit SubEnd IfIf.Caption="取消工作表保护"ThenCall取消工作表保护.Caption="保护工作表"Exit SubEnd IfEnd WithEnd Sub11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Option Explicit Private Sub CommandButton1_Click()With CommandButton1If.Caption="宏1"ThenCall宏1.Caption="宏2"Exit SubEnd IfIf.Caption="宏2"ThenCall宏2.Caption="宏3"Exit SubEnd IfIf.Caption="宏3"ThenCall宏3.Caption="宏1"Exit SubEnd IfEnd WithEnd Sub12:根据A1单元文本隐藏/显示按钮(控件按钮代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("A1")>2ThenCommandButton1.Visible=1ElseCommandButton1.Visible=0End IfEnd SubPrivate Sub CommandButton1_Click()重排窗口End Sub13:当前单元返回按钮名称(控件按钮代码)Private Sub CommandButton1_Click()ActiveCell=CommandButton1.CaptionEnd Sub14:当前单元内容返回到按钮名称(控件按钮代码)Private Sub CommandButton1_Click()CommandButton1.Caption=ActiveCellEnd Sub15:奇偶页分别打印Sub奇偶页分别打印()Dim i%,Ps%Ps=ExecuteExcel4Macro("GET.DOCUMENT(50)")'总页数MsgBox"现在打印奇数页,按确定开始."For i=1To Ps Step2ActiveSheet.PrintOut from:=i,To:=iNext iMsgBox"现在打印偶数页,按确定开始."For i=2To Ps Step2ActiveSheet.PrintOut from:=i,To:=iNext iEnd Sub16:自动打印多工作表第一页Sub自动打印多工作表第一页()Dim sh As IntegerDim xDim yDim syDim syzx=InputBox("请输入起始工作表名字:")sy=InputBox("请输入结束工作表名字:")y=Sheets(x).Indexsyz=Sheets(sy).IndexFor sh=y To syzSheets(sh).SelectSheets(sh).PrintOut from:=1,To:=1Next shEnd Sub17:查找A列文本循环插入分页符Sub循环插入分页符()'Selection=Workbooks("临时表").Sheets("表2").Range("A1")调用指定地址内容Dim i As LongDim times As Longtimes=Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"),"分页")'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i=1To timesCall插入分页符Next iEnd SubSub插入分页符()Cells.Find(What:="分页",After:=ActiveCell,LookIn:=xlValues,LookAt:=_xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False)_.ActivateActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCellEnd SubSub取消原分页()Cells.SelectActiveSheet.ResetAllPageBreaksEnd Sub18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小Sub将A列最后数据行以上的所有B列图片大小调整为所在单元大小()Dim Pic As Picture,i&i=[A65536].End(xlUp).RowFor Each Pic In Sheet1.PicturesIf Not Application.Intersect(Pic.TopLeftCell,Range("B1:B"&i))Is Nothing Then Pic.Top=Pic.TopLeftCell.TopPic.Left=Pic.TopLeftCell.LeftPic.Height=Pic.TopLeftCell.HeightPic.Width=Pic.TopLeftCell.WidthEnd IfNextEnd Sub19:返回光标所在行数Sub返回光标所在行数()x=ActiveCell.RowRange("A1")=xEnd Sub20:在A1返回当前选中单元格数量Sub在A1返回当前选中单元格数量()[A1]=Selection.CountEnd Sub21:返回当前工作簿中工作表数量Sub返回当前工作簿中工作表数量()t=Application.Sheets.CountMsgBox tEnd Sub93:B列录入数据时在A列返回记录时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Target.Column=2ThenTarget.Offset(,-1)=NowEnd IfEnd Sub94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target,[A1:A1000])Is Nothing Then If Target.Column=1ThenTarget.Offset(,1)=DateTarget.Offset(,2)=TimeEnd IfEnd IfEnd SubPublic Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target,[A1:A1000])Is Nothing Then If Target.Column=1ThenTarget.Offset(,1)=Format(Now(),"yyyy-mm-dd")Target.Offset(,2)=Format(Now(),"h:mm:ss")End IfEnd IfEnd Sub95:指定单元显示光标位置内容(工作表代码)Private Sub Worksheet_SelectionChange(ByVal T As Range) Sheets(1).Range("A1")=SelectionEnd Sub96:每编辑一个单元保存文件Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.SaveEnd Sub97:指定允许编辑区域Sub指定允许编辑区域()ActiveSheet.ScrollArea="B8:G15"End Sub98:解除允许编辑区域限制Sub解除允许编辑区域限制()ActiveSheet.ScrollArea=""End Sub99:删除指定行Sub删除指定行()Workbooks("临时表").Sheets("表2").Range("5:5").Delete End Sub100:删除A列为指定内容的行Sub删除A列为指定内容的行()Dim a,b As Integera=Sheet1.[a65536].End(xlUp).RowFor b=a To2Step-1If Cells(b,1).Value="删除"ThenRows(b).DeleteEnd IfNextEnd SubExcel VBA常用代码总结1改变背景色Range("A1").Interior.ColorIndex = xlNone ColorIndex一览•改变文字颜色Range("A1").Font.ColorIndex = 1•获取单元格Cells(1, 2)Range("H7")•获取范围Range(Cells(2, 3), Cells(4, 5))Range("a1:c3")'用快捷记号引用单元格Worksheets("Sheet1").[A1:B5]•选中某sheetSet NewSheet = Sheets("sheet1")NewSheet.Select•选中或激活某单元格'“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。

如何在 VBA 中操作 Word 文档

如何在 VBA 中操作 Word 文档VBA(Visual Basic for Applications)作为一种用于自动化任务的编程语言,与Microsoft Office套件紧密结合,使用户能够使用宏和脚本来对Office应用程序进行编程操作。

在本文中,我们将重点介绍如何使用VBA来操作Word文档。

1. 创建和打开Word文档在VBA中,可以使用Application对象来创建和打开Word 文档。

下面是创建一个新文档和打开一个已存在的文档的示例代码:```vbaSub CreateAndOpenDocument()Dim WordApp As Object ' 创建一个Word应用程序对象Set WordApp = CreateObject("Word.Application")Dim WordDoc As Object ' 创建一个新文档Set WordDoc = WordApp.Documents.Add' 打开一个已存在的文档WordApp.Documents.Open("C:\Path\To\Your\Document.docx") ' 执行其他操作...' 关闭Word应用程序对象WordApp.QuitEnd Sub```2. 插入和编辑文本在Word文档中插入和编辑文本是VBA中的常见操作。

要在文档中插入文本,可以使用Selection对象的TypeText方法,如下所示:```vbaSub InsertText()Selection.TypeText Text:="这是要插入的文本。

"End Sub```要编辑已存在的文本,可以使用Selection对象的Text属性来访问和修改文本内容,如下所示:```vbaSub EditText()Selection.Text = "这是修改后的文本。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这里给大家提供一些比较常用的WORD VBA代码,可以提高大家的办公效率,如果不知道怎么使用这些代码,请自行上网查询WORD如何运行VBA。

1、删除空行
Sub 删除空行()
Dim I As Paragraph, n As Integer
Application.ScreenUpdating = False
For Each I In ActiveDocument.Paragraphs
If Len(Trim(I.Range)) = 1 Then
I.Range.Delete
n = n + 1
End If
Next
MsgBox "共删除空白段落" & n & "个"
Application.ScreenUpdating = True
End Sub
2、奇偶页打印
Sub 奇偶页打印()
Dim x, j, i As Integer
On Error Resume Next
x = ExecuteExcel4Macro("Get.Document(50)")
For i = 1 To Int(x / 2) + 1
ActiveWindow.SelectedSheets.PrintOut From:=2 * i - 1, To:=2 * i - 1
Next i
If x = 1 Then
MsgBox "无偶数页"
Else
MsgBox "请将打印出的纸张反向装入纸槽中", vbOKOnly, "打印另一面"
For j = 1 To Int(x / 2) + 1
ActiveWindow.SelectedSheets.PrintOut From:=2 * j, To:=2 * j
Next j
End If
End Sub
3、中英文标点互换
Sub 中英文标点互换()
Dim ChineseInterpunction() As Variant, EnglishInterpunction() As Variant
Dim myArray1() As Variant, myArray2() As Variant, strFind As String, strRep As String Dim msgResult As VbMsgBoxResult, N As Byte
'定义一个中文标点的数组对象
ChineseInterpunction = Array("、","。

", ",", ";", ":", "?", "!", "……", "—", "~", "(", ")", "《", "》")
'定义一个英文标点的数组对象
EnglishInterpunction = Array(",",".",",",";", ":","?", "!", "…", "-", "~", "(",
")", "<", ">")
'注意这里的英文,转换为了中文、,如果希望将,转换为中文,请自行修改!
'提示用户交互的MSGBOX对话框
msgResult = MsgBox("您想中英标点互换吗?按Y将中文标点转为英文标点,按N将英文标点转为中文标点!", vbYesNoCancel)
Select Case msgResult
Case vbCancel
Exit Sub '如果用户选择了取消按钮,则退出程序运行
Case vbYes '如果用户选择了YES,则将中文标点转换为英文标点
myArray1 = ChineseInterpunction
myArray2 = EnglishInterpunction
strFind = "“(*)”"
strRep = """\1"""
Case vbNo '如果用户选择了NO,则将英文标点转换为中文标点
myArray1 = EnglishInterpunction
myArray2 = ChineseInterpunction
strFind = """(*)"""
strRep = "“\1”"
End Select
Application.ScreenUpdating = False '关闭屏幕更新
For N = 0 To UBound(ChineseInterpunction) '从数组的下标到上标间作一个循环
With ActiveDocument.Content.Find
.ClearFormatting '不限定查找格式
.MatchWildcards = False '不使用通配符
'查找相应的英文标点,替换为对应的中文标点
.Execute findtext:=myArray1(N), replacewith:=myArray2(N), Replace:=wdReplaceAll End With
Next
With ActiveDocument.Content.Find
.ClearFormatting '不限定查找格式
.MatchWildcards = True '使用通配符
.Execute findtext:=strFind, replacewith:=strRep, Replace:=wdReplaceAll
End With
Application.ScreenUpdating = True '恢复屏幕更新
End Sub
4、任意页插入页码
Sub任意页插入页码()
Dim p As Integer
On Error Resume Next
p = InputBox("请输入起始编排页码的页次")
With Selection
.GoTo What:=wdGoToPage, Count:=p
.InsertBreak Type:=wdSectionBreakContinuous
.Sections(1).Footers(1).LinkToPrevious = False
With .Sections(1).Footers(1).PageNumbers
.RestartNumberingAtSection = True
.StartingNumber = 1
.Add PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True
End With
End With
End Sub
5、实现图形的精确旋转
Sub 图形旋转()
Dim blnIsInlineShape As Boolean
If Selection.Type = wdSelectionInlineShape Then
blnIsInlineShape = True
Selection.InlineShapes(1).ConvertToShape
End If
Dim intTurn As Integer
intTurn = InputBox("请输入图形要旋转的角度值" & vbCrLf & "正数表示顺时针,负数表示逆时针。

", "图形旋转", 30)
Selection.ShapeRange.IncrementRotation intTurn
End Sub
注释:上述代码中,首先是将嵌入式的图形转换为可以自由浮动的图形。

返回Wo rd 窗口之后,选中文档中需要旋转的某幅图形,按下Alt+F8组合键,选中列表框中的“图形旋转”宏,单击“运行”按钮弹出一个对话框,默认的旋转角度是30°,例如设置为“33”,很快就可以完成旋转操作。

相关文档
最新文档