精华内容
下载资源
问答
  • VBA操作Word

    2016-10-18 21:19:10
    所有 Office 应用程序,Microsoft Word 可能是应用最广泛的应用程序,它还经常自定义 Office 解决方案扮演重要的角色。开发人员用各种不同的方式使用 Word,有一些方式很简单,而另一些极其复杂。无论涉及何...
  • 研究论文-利用VBA在Word中实现自动排版功能
  • Word VBA 高效排版范例应用》共分18章,介绍Word VBA基础知识、语法和函数之后,循序渐进地介绍了利用Word VBA处理文档、绘制表格、排版打印等实际应用,以大量技巧和丰富的实例,全方展示了Word VBA的精髓。
  • 利用VBA在Word中排出漂亮的代码

    千次阅读 2018-07-25 14:02:16
    学习编程的过程,常常会使用word来做笔记,下面我将对如何利用word 宏来进行代码的排版进行说明 1.工具  我用的是word2007,word2003和word2010操作也差不多 2.基本操作  从visual studio、QT、...

    引言


    在学习编程的过程中,常常会使用word来做笔记,下面我将对如何利用word宏来进行代码的排版进行说明


    1.工具

      我用的是word2007,word2003和word2010操作也差不多

    2.基本操作

      从visual studio、QT、Android studio复制代码到word时,通常都会自带高光的,直接复制粘贴到word就行了。
      但是作为一个精致的程序媛,怎么可能只满足这么点要求呢,我们通常看到的代码除了高光,还有灰色的背景和代码行号,下面才是我想介绍的重点了。
      话不多说,为了不耽搁各位时间,先上图,看完图感兴趣的就接着看,觉得没什么用的看完图就可以先撤退了。
    图1

    图1

    图2
    图2

      
      通常复制到word中的代码如图1所示,利用VBA进行word宏的编写可以为
    代码添加行号和灰色背景

    3.实现方法

      打开word,利用Alt +F11,可以进入VBA,然后在“Normal -> 模块”,右键选择“插入模块”就行了,然后进行代码编写。(Normal是Word打开时会自动载入的一个模板文件,把宏放在这里,可以保证在任意一个Word文档中都能调用。)

    部分代码

     '统计行数
        Dim wordCount, lineCount
        Set myRange = Selection.Range
        lineCount = myRange.ComputeStatistics(Statistic:=wdStatisticLines) 
        '插入1*2的表格
        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, 
    
    NumColumns:= _
            2, DefaultTableBehavior:=wdWord9TableBehavior, 
    
    AutoFitBehavior:= _
            wdAutoFitFixed
        With Selection.Tables(1)
            If .Style <> "网格型" Then
                .Style = "网格型"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
        '设置代码行号   
        For i = 1 To lineCount - 1
            Selection.ParagraphFormat.LineSpacingRule = 
    
    wdLineSpaceExactly
            Selection.ParagraphFormat.LineSpacing = 12
            Selection.Font.Size = 11
            Selection.Font.Color = Black
            Selection.Font.Name = Tahoma
            Selection.TypeText Text:=i
            Selection.TypeParagraph '换行              
        Next
        Selection.TypeText Text:=lineCount
       Selection.Tables(1).Select
          ' 背景色为morning的配色方案,RGB为(229,229,229)
        With Selection.Tables(1)
            With .Shading
                .Texture = wdTextureNone
                .ForegroundPatternColor = wdColorAutomatic
                .BackgroundPatternColor = 15066597
            End With
            .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
            .Borders(wdBorderRight).LineStyle = wdLineStyleNone
            .Borders(wdBorderTop).LineStyle = wdLineStyleNone
            .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
            .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
            .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
            .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
            .Borders.Shadow = False
            .AutoFitBehavior (wdAutoFitContent)  '自动调整大小
        End With
        With Options
            .DefaultBorderLineStyle = wdLineStyleSingle
            .DefaultBorderLineWidth = wdLineWidth050pt
            .DefaultBorderColor = wdColorAutomatic
        End With
    
        ' 段落无首行缩进,行间距为固定值12磅
        With Selection.ParagraphFormat
            .LeftIndent = CentimetersToPoints(0)
            .RightIndent = CentimetersToPoints(0)
            .SpaceBefore = 0
            .SpaceBeforeAuto = False
            .SpaceAfter = 0
            .SpaceAfterAuto = False
            .LineSpacingRule = wdLineSpaceExactly
            .LineSpacing = 12
            .KeepWithNext = False
            .KeepTogether = False
            .PageBreakBefore = False
            .NoLineNumber = False
            .Hyphenation = True
            .FirstLineIndent = CentimetersToPoints(0)
            .OutlineLevel = wdOutlineLevelBodyText
            .CharacterUnitLeftIndent = 0
            .CharacterUnitRightIndent = 0
            .CharacterUnitFirstLineIndent = 0
            .LineUnitBefore = 0
            .LineUnitAfter = 0
            .MirrorIndents = False
            .TextboxTightWrap = wdTightNone
            .AutoAdjustRightIndent = True
            .DisableLineHeightGrid = False
            .FarEastLineBreakControl = True
            .WordWrap = True
            .HangingPunctuation = True
            .HalfWidthPunctuationOnTopOfLine = False
            .AddSpaceBetweenFarEastAndAlpha = True
            .AddSpaceBetweenFarEastAndDigit = True
            .BaseLineAlignment = wdBaselineAlignAuto
        End With
        Selection.Font.Size = 11
        Selection.Font.Name = Tahoma
        ' 清除原有的段落底纹
        Selection.ParagraphFormat.Shading.BackgroundPatternColor = 
    
    wdColorAutomatic
    

      先选中需要进行处理的代码,然后点击word中开发工具,点击宏,运行即可。
      也可以通过word选项,自定义,添加宏快捷键,运行时只需要先选中代码,然后点击快捷键。
      详情可以去我上传的资源下载哦。
    下载资源

    展开全文
  • VBA在Word文档应用.pdf word文档VBA
  • Word VBA高效排版范例应用》的实例文件
  • VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是其桌面应用程序执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种...

    VBA简介

    VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。

    用我的话来说:
    因为其他语言难以读/写word和excel,即Microsoft Office自己的生态问题,规定必须用VBA
    来对其进行编程。
    我本来想用java、c、js等等来读写word、excel,因为VBA太不顺手了。后来发现不行,必须用VBA。
    

    在word、excel里用VBA编程的步骤

    首先,要清楚,VBA是可以同时操作word和excel的。比如,你在word里面编程,操作某个excel是可行的。
    我用word来做示例,excel同理。

    1 随便打开一个word文件

    2 我们打开 视图->宏->查看宏 如下图

    在这里插入图片描述

    3 对弹出的对话框,添加宏,然后编辑 如下图

    在这里插入图片描述

    4然后会弹出VBA编程页面

    在这里插入图片描述
    图已打码

    5 编程完成后,回到第三步,运行宏就可以

    展开全文
  • Sub del() On Error Resume Next Application.DisplayAlerts = False For j = ActiveDocument.Tables.Count To 1 Step -1 If Len(ActiveDocument.Tables(j).Cell(2, 1).Range.Text) = 2 Then Documents(1).Tables(j)...

    Sub del()
    On Error Resume Next
    Application.DisplayAlerts = False
    For j = ActiveDocument.Tables.Count To 1 Step -1
    If Len(ActiveDocument.Tables(j).Cell(2, 1).Range.Text) = 2 Then
    Documents(1).Tables(j).Range.Select
    ActiveDocument.Tables(j).Delete
    Selection.Font.Color = wdColorAutomatic
    Selection.Font.Size = 11
    Selection.TypeText Text:=vbTab
    Selection.TypeText “暂时没有详细数据。”
    Selection.TypeParagraph
    End If
    Next
    Application.DisplayAlerts = True
    End Sub
    如果想删除表格,直接把Selection.TypeText "暂时没有详细数据。"改成Selection.Delete

    展开全文
  • 文章应用VBA二次开发编程,结合Word 2007对象模型Table对象,将Word 2007表格原始数据读出,然后新建行列转置的表格,将读出的数据写入到新表格的单元格,完成表格的行列转置,再将其转换为Word 2007加载项,解决了工作...
  • 今天女朋友工作上出了点麻烦,就是要向Word中批量添加图片以及整理成Excel数据的图片名。其中图片名需要设置段落和文字格式,有些图片还是共享一个图片名。这可是个繁琐而枯燥的工作。我一直相信重复劳动是对人这...

    今天女朋友工作上出了点麻烦,就是要向Word中批量添加图片以及整理成Excel数据的图片名。其中图片名需要设置段落和文字格式,有些图片还是共享一个图片名。这可是个繁琐而枯燥的工作。我一直相信重复劳动是对人这种智慧生物的侮辱(手动狗头,所以决定解放一下她。下面整理下需求:

    1. 从文件夹中向Word里批量添加整理好的图片,并设置图片格式。
    2. 为图片设置整理成Excel数据的图片名,其中有个难点是图片名是给好的,独特的,无法通过程序批量生成,只能通过程序引入。
    3. 有些图片共用一个图片名,只需在最后一个图片下写入图片名,前面图片下面并不需要。

    解决思路:

    1. 因为Word、Excel都是微软的office产品,所以最佳方式还是利用VBA在Word中写宏来解决。
    2. 有两个素材,一个是包含图片的文件夹和包含图片名数据的Excel表格。必须通过手选图片,选好图片后然后程序会根据图片数顺序选取相对应的数据写入图片名,并在其过程中,设置好图片和图片名格式。
    3. 解决图片共用图片名问题 。好在她的问题中大多数共用图片名的图片个数为两个,可以通过选取图片数个数来做判断,不过这个个数也可以修改。

    因为VBA使用的VB语言好久没用了,花时间搜集了点资料,粗略写出了这段程序,虽然还有很大优化空间,但是问题解决了,就暂时先用着,等以后有空再说。

    下面是Word中写入的宏:

    Sub InsertPic()
        Dim xlApp As Excel.Application    '从外部文件中读取和修改所用Excel数据的个数
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim anotherFileName As String
        Dim number As Integer    'Excel中被选用的数据的个数
    
        anotherFileName = "C:\Users\Feng\Desktop\111.xlsx"
        Set xlApp = New Excel.Application
        Set xlBook = xlApp.Workbooks.Open(anotherFileName)
        Set xlSheet = xlBook.Worksheets(1)
    
        Dim myfile As FileDialog
        Dim i As Integer '代表行号
        Dim j As Integer '代表列号
        Dim samePic As Integer '代表其实是一整张图的图数
        Dim countNum As Integer '设定如果是几个图为一个整图,前面图就跳过
        Dim r As String
        Dim c As String
        
        number = xlSheet.Cells(3, 5).Value   '这个位置是记录Excel中所用数据的个数的变量,就不设置主函数和功能函数了,代码不多,同时也利于检测是否共用了图片名
        i = number + 1 '设置开始行数
        j = 1   '设置开始列
        
        countNum = 0 '如果是整个图,就前面图跳过,从最后一个图开始写标题
        samePic = 2   '几张图是整图,就把这个数设置为几,例如两张图是整数,就把这个数设置为2
        
        
        Set myfile = Application.FileDialog(msoFileDialogFilePicker)
        With myfile
            .InitialFileName = "\"
            If .Show = -1 Then
                For Each fn In .SelectedItems
                    countNum = countNum + 1
                    Set mypic = Selection.InlineShapes.AddPicture(FileName:=fn, SaveWithDocument:=True)
                    '按比例调整相片尺寸
                    WidthNum = mypic.Width
                    c = 20         '在此处修改相片宽,单位厘米
                    mypic.Width = c * 28.35
                    mypic.Height = (c * 28.35 / WidthNum) * mypic.Height
                    If Selection.Start = ActiveDocument.Content.End - 1 Then  '如光标在文末
                        Selection.TypeParagraph    '在文末添加一空段
                    Else
                        Selection.MoveDown
                    End If
                    
                    If (myfile.SelectedItems.Count = samePic And countNum < samePic) Then    '如果选定的是两张图,那直接跳过第一张图,命名第二张
                        GoTo NextLoop
                    Else
                         'Selection.Text = Basename(fn)    '函数取得文件名
                    
                        chan = DDEInitiate(app:="Excel", topic:="system") '打开一个DDE通道
                        DDEExecute channel:=chan, Command:="[open(" & Chr(34) & "C:\Users\Feng\Desktop\111.xlsx" & Chr(34) & ")]"
                        '在一个应用程序中执行打开.xls文件命令,需要指出的是,文件所放位置需要修改为自己的文件位置。
                        DDETerminate channel:=chan '关闭DDE通道
                        chan = DDEInitiate(app:="Excel", topic:="111.xlsx") '打开一个DDE通道
                        dse = "r" + CStr(i) + "c" + CStr(j) '确定单元格位置
                        a = DDERequest(channel:=chan, Item:=dse)  '获取单元格数据
                         Selection.InsertAfter (a) '在鼠标停留位置插入获得数据
                        With Selection.ParagraphFormat             '设置文字段落格式
                        .Alignment = wdAlignParagraphCenter         '文字居中
                        With Selection.Font                 '设置文字字体格式
                        .Name = "宋体"
                        .Size = "14"
                        End With
                        End With
                        i = i + 1
                        number = number + 1
                        Selection.EndKey
                        
                        If Selection.Start = ActiveDocument.Content.End - 1 Then  '如光标在文末
                            Selection.TypeParagraph    '在文末添加一空段
                        Else
                            Selection.MoveDown
                        End If
                        
                    End If
    NextLoop:       Next fn '结束此次循环,继续下一个循环
    
            Else
            End If
        DDETerminateAll '关闭所有以及打开的DDE通道
        xlSheet.Cells(1, 5) = number
        xlApp.ActiveWorkbook.Close Savechanges:=True     '保存该工作表
        
        End With
        Set myfile = Nothing
        xlApp.Workbooks.Close '关闭此工作表
    
    End Sub
    

    注意要点:

    1. 要引用Microsoft Excel Object Library。方式是“工具->引用->Microsoft Excel Object Library”。
    2. 存放图片名的Excel数据表在宏运行前要关闭,不然会无法写入变量。造成图片名和图片不匹配。
    3. 程序是通过识别选取图片数量来判断是否是公用图片名的,但是这个数量是可以修改的,通过修改程序中‘samePic’变量值来实现,如果无公用图片名可以将值设置为0。
    4. 注意Excel表格中数据是自动选取的,所以Excel表格中数据要是排序好的,而且和你选取的图片要一一对应,否则会图片和图片名不吻合。数据开始的行和列也是可以修改的。
    5. 关于图片的格式和图片名的格式都是可以根据需求修改的。
    6. Word文档完全处理好之后,可以将Excel数据表第3行第5列设置的变量删除,但是程序运行过程中不要删除,否则会导致图片名又会从头开始读入。

    因为程序临时写的,本身结构散乱并且有很多冗余瑕疵。欢迎随时提出其中问题,如果对您有用我会再次优化,另外遇到任何问题都可以在评论中提出来,我看到会及时回复的。

    展开全文
  • Word VBA 高效排版范例应用》共分18章,介绍Word VBA基础知识、语法和函数之后,循序渐进地介绍了利用Word VBA处理文档、绘制表格、排版打印等实际应用,以大量技巧和丰富的实例,全方展示了Word VBA的精髓。
  • Word不仅是个码字工具,还是个排版工具,而Word在排版方面经常遇到的问题,恐怕说个三天三夜都说不完!好不容易做完了100页的活动方案,交到处女座上司那里,他告诉我:“Word里面的图片要统一尺寸,还有…必须居中...
  • 花了九牛二虎之力网上搜的,完整版。呵呵
  • 序言 一份word表格,如何快速更改某单元格的内容,比如说序号,或者是填充自己所需要的列表之类的文字,查阅得知 VBA中的ActiveDocuments.Tables(index)属性,或者使用Python-docx库可以做到。。这篇博客主要记录...
  • Excel VBA 操作 Word(入门篇)

    万次阅读 多人点赞 2018-07-03 13:14:56
    原文地址本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想Excel通过VBA操作Word还有困难的人。 一、新建Word引用需要首先创建一个对 Word Application 对象的引用。在VBA中,工具-引用,选取...
  • @Word VBA高效排版范例应用.7z
  • VBA的一个强项是可以跨应用操作,特别是office各程序内部。以下代码实现了Excel打开Word文档。代码:Sub openWord() 'Excel打开Word文档 ' ' Dim sFName As String, strFilt As String, strTitle As ...
  • 完整版!不要谢我,网络搜集的,忘记是谁整理的!感谢他和原作者吧!
  • Word VBA 实现办公自动化排版教程。
  • VBA中关于WORD的基本应用 比如批量改页眉页脚,从文件名取数字作为页眉等等。 以下是代码,直接在WordVBA编辑器里粘贴上去就OK了。 Sub 批量转PDF() Dim i As Variant Dim t As Variant Dim str As String, n As ...
  • 本书将使读者对每天都要面对... 全书共分18章,介绍Word VBA基础知识、语法和函数之后,循序渐进地介绍了利用Word VBA处理文档、绘制表格、排版打印等实际应用,以大量技巧和丰富的实例,全方展示了Word VBA的精髓。
  • VBA编程在Word中运用

    2007-10-17 15:48:21
    介绍了两个例子,讲解如使用VBA编程操作word
  • VBA读取word中的内容到Excel

    千次阅读 2019-06-28 15:53:00
    VBA读取word中的内容到Excel,这类代码的思路都是一致的,包括ADO、SQL、DELPHI、VB…… 先声明、创建一个对象 → 用此对象打开需要操作的文件、数据库 → 从头到尾循环一遍做某事 → 关闭文件 → 关闭对象 → ...
  • Word VBA-图片操作汇总

    2021-05-28 09:38:43
    True .DisableLineHeightGrid = False .FarEastLineBreakControl = True .WordWrap = True .HangingPunctuation = True .HalfWidthPunctuationOnTopOfLine = False .AddSpaceBetweenFarEastAndAlpha = True ....
  • 下列示例所选内容的开头将所选内容折叠为一个插入点。 Sub CollapseToBeginning()  Selection.Collapse Direction:=wdCollapseStart End Sub 下列示例将区域折叠至其结束点(第一个单词之后),并添加新文本。 ...
  • Word VBA-表格操作汇总

    2021-05-28 09:41:57
    =True ' .AutoFormat ApplyLastRow:=True ' .AutoFormat ApplyFirstColumn:=True ' .AutoFormat ApplyLastColumn:=True ' .AutoFormat AutoFit:=True '应用用户定义的样式,但保留用户直接应用的所有格式。...
  • VBA——word中书签与VS的完美搭配

    万次阅读 热门讨论 2016-05-18 08:47:58
    VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是微软开发出来其桌面应用程序执行通用的自动化(OLE)(Object Linking and Embedding)任务的编程语言。他是一种自动化...
  • 使用VBA抓取Word文档内容时发现存放形状里的文字是不能通过paragraphs读到的。如下图所示: 解决思路简述: 外圈for循环遍历Doc文档内所有形状对象得到它们的名字,知道了名字以后用“文本对象.shapes.Range...
  • 编按:相信许多小伙伴都有过一次性需要...* * * * * * * * * * *编辑Word长文档时,一篇文档经常含有许多表格,如果要修改所有表格的样式,或者让我们删除文档所有表格,你会怎么办呢?逐一设置样式?或逐一...
  • c# 调用wordvba的宏

    热门讨论 2012-06-26 11:02:35
    c#调用word中vba宏!这个可以很方便的来实现罢工自动化!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,999
精华内容 1,599
关键字:

vba在word中的运用