精华内容
下载资源
问答
  • 如何在Excel VBA 中读写word文档 步骤

    千次阅读 2012-12-06 18:48:05
    在默认情况下,新创建的excel vba中不支持定义word对象。 所以需要先引入word库,操作步骤如下: 1.1 打开excel vba 界面 1.2 选中其中的一个Module 1.3 选择菜单, Tools --> References  在打开的对话框中...

    1. 库的配置

    在默认情况下,新创建的excel vba中不支持定义word对象。

    所以需要先引入word库,操作步骤如下:

    1.1 打开excel vba 界面

    1.2 选中其中的一个Module

    1.3 选择菜单, Tools --> References

            在打开的对话框中选择类似 "Microsoft Word 14.0 Object Library".

    1.4 点击OK保存配置。

     

    2.  打开文档

       Set wordApplication = CreateObject("Word.Application")

       wordApplication.Visible = False

       Dim hasOpenDoc As Boolean

       hasOpenDoc = IsOpen(filePath)  ' is a self-defined function to check file is opend

       If hasOpenDoc = True then

             Set wordDoc = GetObject(filePath)

       End if

       If hasOpenDoc = False Then

           Set  wordDoc = wordApplication.Documents.Open(filePath)

       End if

       wordDoc.Active

    With wordApplication

              Dim aParagraph As Word.Paragraph

               For Each aParagraph In wordDoc.Paragraphs

                   ' do some thing to every paragraph.

               Next aParagraph

    End with

    wordDoc.Close

    Set wordDoc = nothing

     

     

    ' 如下这段代码引用某位牛人的,非常感谢他。由于路径丢失,不能给出链接, 抱歉

    ' 如下的找寻方式,能够正确的找出文件是否被打开

    Function IsOpen(fileName As String) As Boolean
        IsOpen = False
        Dim findFile As Integer
        findFile = FreeFile()
        On Error GoTo ErrOpen
        Open fileName For Binary Lock Read Write As findFile
        Close findFile
        Exit Function
    ErrOpen:
        If Err.Number <> 70 Then
            Msg = "Error # " & Str(Err.Number) & "was generated by " & Err.Source & Chr(13) & Err.Description
            MsgBox Msg, "Error", Err.HelpFile, Err.HelpContext
           
        Else
            IsOpen = True
        End If


    End Function

     

     

     

     

      

     

    展开全文
  • 不能使用Scripting.FileSystemObject对象 我需要知道当前已经打开的ActiveDocument中的文档的创建日期或者修改日期。
  • 大家好,我们今日继续讲解VBA代码解决方案的第146讲内容:如何实现Word文档的信息统计。熟悉Word的朋友都清楚,对于WORD文档的信息统计,是一个标准的功能,打开一个WORD文档,当选择一段文字后,在下面的信息栏中就...

    37b29cfb41592eb878fdffb135159b0c.png

    大家好,我们今日继续讲解VBA代码解决方案的第146讲内容:如何实现Word文档的信息统计。熟悉Word的朋友都清楚,对于WORD文档的信息统计,是一个标准的功能,打开一个WORD文档,当选择一段文字后,在下面的信息栏中就会提示选中的字数、段落数等信息。那么这个功能是如何实现的的呢?我们利用VBA可否也可以实现类似的功能呢?今日的内容就当大家实现这个功能。当然,目的仍是让大家熟悉在WORD中如何利用循环语句。

    说句实在话,对于一个OFFICE软件,无论是excel还是word,在微软提供的功能中如果想实现循环计算只有两个办法,一是利用数组,二是利用迭代运算。但这两种方法都有自己的局限性,比如迭代,要受到迭代次数的影响,不同的迭代次数运行的结果会有不同,而数组本身就是EXCEL的一个难点,说句夸张的话,在讲数组的文章中,或许你只有在我的这个平台可以能看到系统的讲解,如何的定义,如何的利用,在讲VBA之前我利用了大量的时间给大家讲EXCEL函数及各种高端的应用,如果感兴趣的朋友可以回过头来看看我之前的文章。如果我们理解了VBA这个知识点完全可以用VBA来解决,而且,解决的更好。

    今日讲的实例是利用循环统计出所选文本中的句子数量和结尾的标点符号。

    Sub mynzsen()

    Dim s As Range, SenCount As Integer, MyString As String

    Dim EndChar As String, K As Integer

    K = 0

    With Selection

    If .Type = wdNoSelection Then Exit Sub

    SenCount = .Sentences.Count '取得所选内容的句子数

    For Each s In .Sentences '在句子中循环

    K = K + 1

    '如果句子中的最后一个字符为段落标记则EndChar为段落标记的前一个字符

    If s.Characters(s.Characters.Count) = Chr(13) Then

    EndChar = "[第" & K & "句结束标点为 " & s.Characters(s.Characters.Count - 1) & "]"

    Else

    EndChar = "[第" & K & "句结束标点为 " & s.Characters(s.Characters.Count) & "]"

    End If

    '以空格为分隔符,将结束标点在变量中累加

    MyString = MyString & " " & EndChar

    Next

    End With

    MsgBox "所选内容句子数:" & SenCount & vbCrLf & "结束标点分别为:" & MyString

    End Sub

    代码截图:

    1a569883afebbca6463dcedc531e6a0d.png

    由于在程序中大部分我都做了注释,只是再简单的讲解一下:

    上面的程序中需要注意的是对于有选择和没有选择的判断,这里是根据Selection.Type 的值来进行判断的,对于这个值可以有很多种类型,如下:

    wdNoSelection 0 No selection.

    wdSelectionBlock 6 A block selection.

    wdSelectionColumn 4 A column selection.

    wdSelectionFrame 3 A frame selection.

    wdSelectionInlineShape 7 An inline shape selection.

    wdSelectionIP 1 An inline paragraph selection.

    wdSelectionNormal 2 A normal or user-defined selection.

    wdSelectionRow 5 A row selection.

    wdSelectionShape 8 A shape selection.

    这里我用的是wdNoSelection也可以用wdSelectionIP,也可以表示没有任何的选中结果,对于这个词语的解释,后者wdSelectionIP的对应英文解释An inline paragraph selection。目前我还没有看到有那种翻译是较为合适的,好在我们的目的是应用,记住就可以了。

    下面我们看程序的运行:

    22875c1167f23a0666aedf269d99b83a.png

    在上述的文档中选择了部分文字,运行结果:

    fb5def1987fc0e647149de29d2f9a96c.png

    今日内容回向:

    1 WORD中的循环,你是否明白呢?

    2 如何请计算出选择的句子数呢?

    《VBA代码解决方案》终于可以和大家见面了,是我将一些非常实用的VBA内容结集成册,PDF文件,可以从中直接查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。

    136d1a6b60d627ae5cc7f43d39f6a8f8.png

    c04181ffe7cd0b98a853aa0d98db9647.png

    3279f025dacc529361a16789e42ef536.png
    展开全文
  • 大家好,我们今日继续讲解VBA代码解决方案的第146讲内容:如何实现Word文档的信息统计。熟悉Word的朋友都清楚,对于WORD文档的信息统计,是一个标准的功能,打开一个WORD文档,当选择一段文字后,在下面的信息栏中就...

    5d4deed0b8136e2f0f8a358c58e0f3c7.png

    大家好,我们今日继续讲解VBA代码解决方案的第146讲内容:如何实现Word文档的信息统计。熟悉Word的朋友都清楚,对于WORD文档的信息统计,是一个标准的功能,打开一个WORD文档,当选择一段文字后,在下面的信息栏中就会提示选中的字数、段落数等信息。那么这个功能是如何实现的的呢?我们利用VBA可否也可以实现类似的功能呢?今日的内容就当大家实现这个功能。当然,目的仍是让大家熟悉在WORD中如何利用循环语句。

    说句实在话,对于一个OFFICE软件,无论是excel还是word,在微软提供的功能中如果想实现循环计算只有两个办法,一是利用数组,二是利用迭代运算。但这两种方法都有自己的局限性,比如迭代,要受到迭代次数的影响,不同的迭代次数运行的结果会有不同,而数组本身就是EXCEL的一个难点,说句夸张的话,在讲数组的文章中,或许你只有在我的这个平台可以能看到系统的讲解,如何的定义,如何的利用,在讲VBA之前我利用了大量的时间给大家讲EXCEL函数及各种高端的应用,如果感兴趣的朋友可以回过头来看看我之前的文章。如果我们理解了VBA这个知识点完全可以用VBA来解决,而且,解决的更好。

    今日讲的实例是利用循环统计出所选文本中的句子数量和结尾的标点符号。

    Sub mynzsen()

    Dim s As Range, SenCount As Integer, MyString As String

    Dim EndChar As String, K As Integer

    K = 0

    With Selection

    If .Type = wdNoSelection Then Exit Sub

    SenCount = .Sentences.Count '取得所选内容的句子数

    For Each s In .Sentences '在句子中循环

    K = K + 1

    '如果句子中的最后一个字符为段落标记则EndChar为段落标记的前一个字符

    If s.Characters(s.Characters.Count) = Chr(13) Then

    EndChar = "[第" & K & "句结束标点为 " & s.Characters(s.Characters.Count - 1) & "]"

    Else

    EndChar = "[第" & K & "句结束标点为 " & s.Characters(s.Characters.Count) & "]"

    End If

    '以空格为分隔符,将结束标点在变量中累加

    MyString = MyString & " " & EndChar

    Next

    End With

    MsgBox "所选内容句子数:" & SenCount & vbCrLf & "结束标点分别为:" & MyString

    End Sub

    代码截图:

    a7f0e9fa0ea7c5538e47d7cd804dc600.png

    由于在程序中大部分我都做了注释,只是再简单的讲解一下:

    上面的程序中需要注意的是对于有选择和没有选择的判断,这里是根据Selection.Type 的值来进行判断的,对于这个值可以有很多种类型,如下:

    wdNoSelection 0 No selection.

    wdSelectionBlock 6 A block selection.

    wdSelectionColumn 4 A column selection.

    wdSelectionFrame 3 A frame selection.

    wdSelectionInlineShape 7 An inline shape selection.

    wdSelectionIP 1 An inline paragraph selection.

    wdSelectionNormal 2 A normal or user-defined selection.

    wdSelectionRow 5 A row selection.

    wdSelectionShape 8 A shape selection.

    这里我用的是wdNoSelection也可以用wdSelectionIP,也可以表示没有任何的选中结果,对于这个词语的解释,后者wdSelectionIP的对应英文解释An inline paragraph selection。目前我还没有看到有那种翻译是较为合适的,好在我们的目的是应用,记住就可以了。

    下面我们看程序的运行:

    9f0f1414d1f3f1758aa00b8694effa76.png

    在上述的文档中选择了部分文字,运行结果:

    1716863cbdc11cefcb9a7101b02dc088.png

    今日内容回向:

    1 WORD中的循环,你是否明白呢?

    2 如何请计算出选择的句子数呢?

    《VBA代码解决方案》终于可以和大家见面了,是我将一些非常实用的VBA内容结集成册,PDF文件,可以从中直接查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。

    1537844628c3026b6c4ab21e0be63121.png

    664f940a7e214963c82d4a32d0dbe2dd.png

    b61cbf1b5b17f311a92a85d3174ad926.png
    展开全文
  • 可以通过公众号下方的菜单栏编程基础来回顾VBA编程基础今天我们就要开始VBA编程的实际应用了,这里我们先从Word开始,看看VBA如何应用在Word文档上面。我们先回想一下自己平时使用Word的情形,绝大部分使用Word的...

    Hi,大家好,前面几期介绍了VBA的编程基础,大家都掌握了吗?可以通过公众号下方的菜单栏编程基础来回顾VBA编程基础

    今天我们就要开始VBA编程的实际应用了,这里我们先从Word开始,看看VBA如何应用在Word文档上面。

    我们先回想一下自己平时使用Word的情形,绝大部分使用Word的场景都是新建或打开已经存在的Word文档,然后开始一些编辑操作,例如增加,删除,查找,替换及排版等操作,操作完成之后,再保存退出Word.

    如果上述的这些针对文档的操作仅仅是操作有限的几份文档,那完全可以手动依次打开,然后修改完保存就可以了,但是如果是成千上万份呢?手动修改就太麻烦了。

    假如现在有500份Word文档,需要批量修改文档里面出现的一个日期的任务,那么我们可以通过此前学过的VBA编程基础来处理这样的问题。

    首先,我们需要通过遍历循环,来遍历每一份Word文档,这样就能确保每一份文档都能访问到。

    其次,我们需要在遍历循环的循环体中,针对遍历的每一份Word文档,需要执行如下操作:

    1. 执行打开文档的操作,

    2. 执行查找日期的操作,然后对查找到的日期执行替换操作,

    3. 保存,并关闭文档

    因此,编程的思路明确了,剩下的就是用具体的代码实现,也就是如何编写VBA代码操作Word文档。

    虽然这些步骤看起来挺容易,但是里面涉及到的东西还是挺多的,还是要慢慢来,打好基础。

    这里需要引入一个概念---对象,对象是对具体的物体在计算机中的一种抽象,简单来说就是计算机用来表示各种各样的物体,可以理解为一种自定义的变量类型,与我们此前接触到的变量类型类似。

    在VBA中,Word是用Document对象来表示的,因此,对于文档的操作,都是可以通过对Document对象的操作来完成的。

    但是我们有时候同时打开了多个文档,这种情况下,多个文档则是通过Documents集合来表示的,Documents包含所有打开的文档。

    既然有打开文档,那么相对应的就有关闭文档的操作,同时,在关闭的时候,我们可能还涉及到了保存及另存为等操作,这些都是可以通过文档对象来操作的。

    下面通过一个具体的例子,来演示一下如下新建并打开文档,然后保存文档,具体的代码如下:

    Sub Wordtest()Dim Mydoc As DocumentSet Mydoc = Documents.AddMydoc.SaveAs2 FileName:="D:\myFirstdoc.doc"Debug.Print Mydoc.Name & "保存到" & Mydoc.FullNameMydoc.CloseEnd Sub

    复制粘贴上面的代码到VBA代码编辑窗口,如下图所示:

    aae48f5549d302eaa1c4287e9236cbf6.png

    点击运行按钮,执行子程序,看到这次的运行如下:

    23e658fa17f4c4773b587db173768df8.png

    其中立即窗口的输出是为了方便调试打印出来的,实际上这里的运行结果是在电脑的D盘根目录生成了一个名叫myFirstdoc.doc的文档。
    怎么样,是不是很神奇?通过简单的几行代码就新建并重命名了一个新的文档。
    下面来逐句解释一下上述的代码:

    Sub Wordtest()Dim Mydoc As Document        //定义一个文档对象变量,变量名字为MydocSet Mydoc = Documents.Add    //新建一个文档,并将此文档绑定到此前定义的变量上面,后续通过变量即可操作文档Mydoc.SaveAs2 FileName:="D:\myFirstdoc.doc"  //将新建文档重命名为myFirstdoc.doc并保存到D盘根目录Debug.Print Mydoc.Name & "保存到" & Mydoc.FullName    //调试输出新建的文档的名字及保存路径Mydoc.Close        //关闭文档End Sub


    代码里面的文件名和保存的路径可以根据自己的需求随意更换的,如果不写明保存路径,默认是保存到当前用户的我的文档目录下的。

    觉得有用吗?想了解更多吗?下方扫码关注喔!

    37f21db5a117ebcc42c80cf6b2d77d4e.png

    展开全文
  • 2019-2-9更新这篇文章的...我也不大清楚2018-11-03更新:在word里调出开发者模式并插入contentcontrol显示开发者模式的步骤打开文件>>选项选择自定义功能区在里面把开发工具前面的钩打上参考:https://jingyan...
  • 大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,...那么同理,如何在EXCEL中打开WORD呢?在这讲中我给出专题的讲解,这个讲解中我们将利用CreateObj...
  • 大家好,我们今日继续讲解VBA代码解决方案的第146讲内容:如何实现Word文档的信息统计。熟悉Word的朋友都清楚,对于WORD文档的信息统计,是一个标准的功能,打开一个WORD文档,当选择一段文字后,在下面的信息栏中就...
  • 上篇文章我们介绍了如果在Excel中利用VBA技术访问Word文档,今天我们就说说如何在Excel中利用VBA写入/提取Word文档中的数据。写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,...
  • 首先,我们先看看如何word文档中手动输入带√的框。对于在word中输入打√的方框,只要打开百度搜索一下,就可以找到一系列教程,教怎么在Word中输入打√的方框。这里,小编推荐本人最喜欢的2种方法,也是最容易...
  • 上篇文章我们介绍了如果在Excel中利用VBA技术访问Word文档,今天我们就说说如何在Excel中利用VBA写入/提取Word文档中的数据。写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,...
  • 首先,我们先看看如何word文档中手动输入带√的框。对于在word中输入打√的方框,只要打开百度搜索一下,就可以找到一系列教程,教怎么在Word中输入打√的方框。这里,小编推荐本人最喜欢的2种方法,也是最容易...
  • 上篇文章我们介绍了如果在Excel中利用VBA技术访问Word文档,今天我们就说说如何在Excel中利用VBA写入/提取Word文档中的数据。写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,...
  • word 如何使用vba

    千次阅读 2013-10-14 13:35:21
    1、在Word打开你需要处理的doc文档; 2、键入ALT+F11; 3、在出现的VBA窗口中,粘贴你下载的代码; 4、把键盘光标放到入口函数中任意一行代码上(如果你不知道是什么地方,可以把代码贴上来看看); 5、键入F5运行...
  • Access要调用第三方的Exe 执行程序,就需要用到Shell函数,那Access VBA如何 调用Shell 函数呢使用非常简单Shell "要执行命令的路径"例如要打开微软Word文档处理,可以使用如下的命令:Shell "C:\Program Files\...
  • C#操作word文档

    2015-08-30 21:02:04
    这里给大家介绍下如何运用VBA来操作word文档内容,打开关闭word文档。 一、什么是VBA  Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE...
  • 打开Word时总是出现“Microsoft Office Word 需要 VBA 宏语言支持来完成此操作。 解决方法: 1. 当我们打开Word时,会弹出“Microsoft Office Word 需要 VBA 宏语言支持来完成此操作。”这项功能目前尚未...
  • Word的对象模型有比较详细的帮助文档,放在 Office 安装程序目录,office 2003是在Program Files\Microsoft Office\OFFICE11\2052下,文档本身是为VBA提供的,在这个目录下还可以看到所有的office应用程序的VBA帮助...
  • Word中的LaTeX是GPL许可的工具,允许在Microsoft Word文档中使用方程式。 程序的客户端根据Word版本在文档“ latex_in_word_ [year]。[doc或docm]”中作为VBA宏实现。 为Microsoft Word的不同版本提供了此文件的...
  • 怎么批量修改Word表格的宽度呢。Word表格可根据窗口自动调整表格宽度,使得所有的...第一步、打开Word文档,按下【Alt + F11】第二步、在VBA编辑器窗口的左上方,双击【ThisDocument】第三步、在右侧选择【Docume...
  • 本文讲的是实例讲解如何绕过 Office 文档的反分析技术,今天我们来试着分析一个使用Word文档的恶意VBA项目。该文档的作者对文件中的VBA项目进行了密码保护,以防止对恶意代码的检查,同时也使用了一些防止密码删除的...
  • PAGE PAGE #/ 3 有了在 word 文档中编程实现搜索文本的经验在 excel 中实现这个功能也 并非难事 打开Excel的VBA帮助查看Excel的对象模型很容易找到完成这个功能 需要的几个集合和对象 ...Worksheet 和 Ranga ...
  • 一般Word被嵌入了带有恶意行为的宏代码(VBA代码),当我们双击打开带有宏病毒的word文档的时候它的宏代码会自动运行。或者有的word默认是禁止宏运行,会弹出一个提示,是否允许运行携带的宏代码。 上面是一个11...
  • 打开word的工具箱后,可以在word文档中增加 命令按钮、文本框、标签、单选按钮等,这些操作都非常简单,只需要将这些控件拖放到文档中即可。但是拖放组合框后,如何在其中增加内容呢?笔者给出操作步骤:(1)将组合...
  • 若要获得 Microsoft Excel 中的 VBA 过程的列表的工作簿、 一个 PowerPoint 演示文稿或 Word 文档,您可以使用类和函数公开结合的应用程序对象模型的应用程序扩展库通过 Microsoft vba。当利用自动化功能打开文档时...

空空如也

空空如也

1 2 3 4 5
收藏数 87
精华内容 34
关键字:

vba如何打开word文档