精华内容
下载资源
问答
  • 前面和小伙伴们分享了,用office软件自带的邮件合并功能来进行Word与Excel交互,这个邮件合并生成的只有一个Word文档,要想生成一个一个Word文档,就需要用VBA邮件合并-忍者档案今天,就和小伙伴们分享用VBA来生成一...

    前面和小伙伴们分享了,用office软件自带的邮件合并功能来进行Word与Excel交互,这个邮件合并生成的只有一个Word文档,要想生成一个一个Word文档,就需要用VBA

    邮件合并-忍者档案

    3385a5784d079e81d338a7e19b5d0986.png

    0d5c76d9b6b61b0ead933d387f7e7f89.png

    今天,就和小伙伴们分享用VBA来生成一个一个Word文件

    代码如下

    小伙伴们来看第4行的代码,在Excel要使用Word对象需要用createobject函数创建一个Word对象,这个就是你启动Word软件的意思

    和创建字典对象的写法一样

    第7行的代码,咱们去循环每一行的信息,每循环一次,就打开当前文件夹下面的火影忍者.docx文档,这是模板文档,提供模板文档,然后写入到模板文档,会比用代码创建文档方便

    word.tables(1)表示打开的Word文档中的第一个表格

    Word文档的表格单元格VBA用cell表示,而Excel的单元格vba用cells,这2个有区别,需要特别注意

    第9行-第19行的代码是依次对打开的Word文档的第一个表格中的单元格进行赋值

    第20行的代码判断电脑中是否有这个图片,如果有这个图片,则插入到Word文档中第1行第5列单元格中

    第21行的代码是Word中插入图片的方法

    第23行的代码是用名字命名另存到当前文件夹下面

    第24行的代码关闭刚刚这个打开又另存为的Word文档

    Sub main()Dim wordDim appSet app = CreateObject("Word.Application")Dim arrarr = Range("a1").CurrentRegionFor i = 2 To UBound(arr)    Set word = app.documents.Open(ThisWorkbook.Path & Application.PathSeparator & "火影忍者.docx")    word.tables(1).Cell(1, 2).Range.Text = arr(i, 2)    word.tables(1).Cell(1, 4).Range.Text = arr(i, 3)    word.tables(1).Cell(2, 2).Range.Text = arr(i, 1)    word.tables(1).Cell(2, 4).Range.Text = arr(i, 4)    word.tables(1).Cell(3, 2).Range.Text = arr(i, 5)    word.tables(1).Cell(3, 4).Range.Text = arr(i, 6)    word.tables(1).Cell(5, 1).Range.Text = arr(i, 7)    word.tables(1).Cell(5, 2).Range.Text = arr(i, 8)    word.tables(1).Cell(5, 3).Range.Text = arr(i, 9)    word.tables(1).Cell(5, 4).Range.Text = arr(i, 10)    word.tables(1).Cell(5, 5).Range.Text = arr(i, 11)    If Dir(arr(i, 12)) <> "" Then    word.tables(1).Cell(1, 5).Range.InlineShapes.AddPicture arr(i, 12), False, True    End If    word.SaveAs ThisWorkbook.Path & Application.PathSeparator & arr(i, 2) & ".docx"    word.CloseNext iEnd Sub

    22125bd1952950fb39957219b92f6bc8.png

    还有,看完不点个赞再走吗?点下下面右下角的小花呀

    展开全文
  • 上篇文章我们介绍了如果在Excel中利用VBA技术访问Word文档,今天我们就说说如何在Excel中利用VBA写入/提取Word文档中的数据。写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,...

    上篇文章我们介绍了如果在Excel中利用VBA技术访问Word文档,今天我们就说说如何在Excel中利用VBA写入/提取Word文档中的数据。

    fe5b48cab1658503a58673879407d2b6.png

    写入Word文档

    当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,现在我们在Excel中利用VBA向此Word文档中写入内容。

    8aed007a26fed5f90f3021d066f7219b.png

    当前文件夹,打开一个Excel,打开Visual Basic视图,输入以下代码:

    79404658205590616e6e5137e915bbca.png

    点击运行按钮,即可发现,Word文档中的表格1,已经被填充数字。

    最终结果如下图所示:

    89737827575905d9a6e645d0aeb80d7f.png

    代码解释

    wdapp.Documents.Open Filename:=ThisWorkbook.Path & "est.docx"

    打开当前文件夹下名字为test的Word文档;

    wdapp.Visible = True

    打开之后,使文档处于可视的状态;

    wdapp.Documents(1).Tables(1).Range

    Word文档表格1(Tables(1))的范围,这里表格共三行六列,所以range等于18;

    .Cells(i).Range = i

    这里将Word表格1中写入对应的数字;

    完整代码如下所示:

    Sub 数据写入word中()Dim wdapp As Word.ApplicationDim wddoc As DocumentSet wdapp = New Word.Applicationwdapp.Documents.Open Filename:=ThisWorkbook.Path & "est.docx"wdapp.Visible = TrueWith wdapp.Documents(1).Tables(1).RangeFor i = 1 To .Cells.Count.Cells(i).Range = iNextEnd WithEnd Sub

    读取Word中的数据

    下图中,Word中存在一张表 表1,里面存储着不同的数据,现在我们需要把纯数据项提取出来 ,并汇总到Excel单元格中。

    ddf990d006640722bc7f116fa3299ba4.png

    打开Visual Basic视图,输入以下代码:

    688ec707f0dcf854f190c6fb6e877f7d.png

    点击运行按钮,完成数据的提取,结果如下图所示:

    e6e45cfb8e542ba20d9185471043e610.png

    代码说明:

    Left(.Cells(i).Range, Len(.Cells(i).Range) - 2):

    .Cells(i).Range为当前Word单元格中的内容,如第一个单元格内容是【18】,但提取出来的并不是单纯的18,在VBA本地窗口中可以发现,它是一个【18 】,18+空格+一个正方形;但是我们只要数字18,后面的空格和正方形是不需要的,这里用一个left函数,去除后两位,提取数字;

    IsNumeric(u):

    判断u是否为数字,如果是则进入下一步,如果不是则结束。

    程序运行完一定要关闭Word哦,wdapp.Quit,切记!

    明细代码如下图所示:

    Sub 提取数据()On Error Resume NextDim wdapp As Word.ApplicationDim wddoc As DocumentSet wdapp = New Word.Applicationwdapp.Documents.Open Filename:=ThisWorkbook.Path & "est.docx"wdapp.Visible = Falsen = 1With wdapp.Documents(1).Tables(1).RangeFor i = 1 To .Cells.Countu = Left(.Cells(i).Range, Len(.Cells(i).Range) - 2)If IsNumeric(u) Thenn = n + 1Cells(n, 1) = uEnd IfNextEnd WithCells(1, 1) = "提取数字"wdapp.QuitEnd Sub

    小结

    以上就是关于Excel中利用VBA操作Word的相关介绍,如果觉得有用,欢迎关注我,定期分享数据小技巧!

    展开全文
  • 执行后,把BOOK1.xls打开,循环5次,a1、b1、e1数据写入word中,(注意,word也有格子,也有行列),然后保存5次到c盘下。 Sub Macro1() Dim devType As String  Dim devName As String  Dim devDes As String...

    vba代码

    执行后,把BOOK1.xls打开,循环5次,a1、b1、e1数据写入word中,(注意,word也有格子,也有行列),然后保存5次到c盘下。

    Sub Macro1()
    Dim devType As String
        Dim devName As String
        Dim devDes  As String
        Dim sTemp   As String
        Dim comTemp As String
        
        Dim xls As New Excel.Application
        Dim wk As New Excel.Workbook
        Dim sh As New Excel.Worksheet
        
        Set wk = xls.Workbooks.Open("C:\\BOOK1.xls")
        Set sh = wk.Sheets("1")
        
        For I = 1 To 5
            If ActiveDocument.Tables.Count >= 1 Then
                   
                sTemp = "A" & I
                devType = sh.Range(sTemp)
                With ActiveDocument.Tables(1).Cell(Row:=3, Column:=2).Range
                .Delete
                .InsertAfter Text:=devType
                End With
                
                sTemp = "B" & I
                devName = sh.Range(sTemp)
                With ActiveDocument.Tables(1).Cell(Row:=2, Column:=2).Range
                .Delete
                .InsertAfter Text:=devName
                End With
                
                sTemp = "E" & I
                devDes = sh.Range(sTemp)
                With ActiveDocument.Tables(1).Cell(Row:=3, Column:=4).Range
                .Delete
                .InsertAfter Text:=devDes
                End With
           
                
            End If
        
            ActiveDocument.Save
            Set fso = CreateObject("scripting.filesystemobject")
            
            devType = Replace(devType, "/", "")
            sTemp = "C:\\" & devType & ".doc"
            
            fso.copyfile ActiveDocument.FullName, sTemp
                    
                    
        Next


        '清除excel资源
        Set sh = Nothing
        wk.Close
        Set wk = Nothing
        xls.Quit
        Set xls = Nothing
    End Sub


    BOOK1.xls



    展开全文
  • "请选择【WORD勘察报告】" .Filters.Clear .Filters.Add "Word文档", "*.doc;*.docx" If .Show Then iFileName = .SelectedItems(1) End If End With If iFileName = "False" Or Len(iFileName) = 0 Then Exit Sub ...
     Dim iFileName As String
        Dim mFileName As String
       
        Dim i, n, c, r As Integer
                         
        Dim mWord, mDoc As Object
        Dim mTable, mCell
        Dim S, S1, S2 As String
    
    With Application.FileDialog(msoFileDialogFilePicker)
                .Title = "请选择【WORD勘察报告】"
                .Filters.Clear
                .Filters.Add "Word文档", "*.doc;*.docx"
                If .Show Then
                        iFileName = .SelectedItems(1)
                End If
        End With
        If iFileName = "False" Or Len(iFileName) = 0 Then Exit Sub
        Set mWord = CreateObject("Word.Application")
        Application.ScreenUpdating = False   ''WORD打开不要显示出来
        Set mDoc = mWord.Documents.Open(iFileName) ''一定要加上完整的路径
        If mDoc.tables.Count < 1 Then    ''至少需要有一个表
            MsgBox "文档中没有表格!", vbCritical
            GoTo err1
        End If
       n = 1   
       On Error Resume Next   
       For Each mTable In mDoc.tables ''定位到 分层统计表
       
          S = ""
          
          For c = 1 To mTable.Columns.Count
              mCell = mTable.cell(row:=1, Column:=c)
              S = S & Trim(WorksheetFunction.Clean(mCell))
          Next c
          
          If (S Like "*孔隙比*" And S Like "*液性指数*" And S Like "*压缩模量*") Then      
             Exit For
          End If
          
          n = n + 1
          
       Next mTable
    
       Set mTable = mDoc.tables(n)
       
       KXB = 0: IL = 0: AV = 0: ES = 0: CI = 0: FI = 0      ''查找固定列
       
       bKXB = False: bIL = False: bES = False: bAV = False: bCI = False: bFI = False: bAW = False
       
        For c = 1 To mTable.Columns.Count
        
              mCell = mTable.cell(row:=1, Column:=c)
              S2 = Trim(WorksheetFunction.Clean(mCell))
             
              If S2 Like "*孔隙比*" Then
                                 KXB = c
                                 bKXB = True
              End If
              If S2 Like "*液性指数*" Then
                                 IL = c
                                 bIL = True
              End If
              If S2 Like "*压缩系数*" Then
                                 AV = c
                                 bAV = True
              End If
              If S2 Like "*压缩模量*" Then
                                 ES = c
                                 bES = True
              End If
              If S2 Like "*聚力*" Then    ''标准叫法是 黏聚力
                                 CI = c
                                 bCI = True
              End If
              If S2 Like "*内摩擦角*" Then
                                 FI = c
                                 bFI = True
               End If
               If S2 Like "*含水比*" Then
                                 aw = c
                                 bAW = True
               End If
                              
          Next c
         
          i = 3         ''记录结果的 起始行号
       
          For Each mCell In mTable.Range.Cells
          
             S2 = Trim(WorksheetFunction.Clean(mCell))
                      
             If S2 = "n" Then
                Cells(i, "N") = Trim(WorksheetFunction.Clean(mTable.cell(mCell.RowIndex, 1)))    ''层号及名称
                bMC = True
             End If
                      
             If S2 = "μ" Then     '' 平均值
                   r = mCell.RowIndex
                   If bKXB Then
                       Cells(i, "O") = Trim(WorksheetFunction.Clean(mTable.cell(r, KXB)))   ''孔隙比
                       bAVE = True
                   End If
                   If bIL Then
                      Cells(i, "P") = Trim(WorksheetFunction.Clean(mTable.cell(r, IL)))        ''液性指数
                      bAVE = True
                   End If
                   If bES Then
                      Cells(i, "R") = Trim(WorksheetFunction.Clean(mTable.cell(r, ES)))      ''压缩模量
                      bAVE = True
                   End If
                   If bAV Then
                      Cells(i, "U") = Trim(WorksheetFunction.Clean(mTable.cell(r, AV)))     ''av
                      bAVE = True
                   End If
                   If bAW Then
                      Cells(i, "V") = Trim(WorksheetFunction.Clean(mTable.cell(r, aw)))     ''av
                      bAVE = True
                   End If
             End If
                      
             If bCI And bFI And (S2 = "标准值") Then  ''标准值  由于 标准值 格式的特殊性,故采用while的方式去定位。2020-9-27
          k = mCell.RowIndex
          c = mCell.ColumnIndex + 1
                  While CSng(WorksheetFunction.Clean(mTable.cell(k, c))) <= 0 And c < CI
                         c = c + 1
                  Wend
                      Cells(i, "S") = Trim(WorksheetFunction.Clean(mTable.cell(k, c)))   
                      Cells(i, "T") = Trim(WorksheetFunction.Clean(mTable.cell(k, c + 1)))  ''fi
                      bBZZ = True
             End If
            
            If Not CheckBox1.Value Then   ''不包含 C,FI值
               bBZZ = True
            End If
            
                If bMC And bAVE And bBZZ Then
                   i = i + 1
                   bMC = False
                   bAVE = False
                   bBZZ = False
                End If                  
          Next mCell
    

    希望对大家有所帮助和启发,关键语句总结一下:
    Set mWord = CreateObject(“Word.Application”)
    Application.ScreenUpdating = False ''WORD打开不要显示出来
    Set mDoc = mWord.Documents.Open(iFileName) ''一定要加上完整的路径
    For Each mCell In mTable.Range.Cells
    s=WorksheetFunction.Clean(mTable.cell(r, ES)) ‘’清除表格中的一些无效字符,比如回车换行等:WorksheetFunction.Clean( )
    next mCell
    以上代码遍历某个表格中的所有单元格。
    而 For Each mTable In mDoc.tables 是遍历文档中所有的表格。

    展开全文
  • 有个什么 已被刺破 晚上好啊都……呃……不知道该说什么了,直接说正事吧……话说我最近比较懒……不是,我最近事情比较多……你们在后台提了很多问题,有一部分是我们之前分享过的,戳菜单【VBA相关】→【常用小...
  • EXCEL与WORD相互写入VBA代码 在工作中相当方便,如写财务分析,在EXCEL中完成数据加工,并用公式写出部分财务分析指标,再将这些文字与数据写入WORD,相当的实用
  • 现在我想做的是,将这些资料利用word的合并列印(mail merge) 的功能,以姓名为大类,按时间排序把这些数据整理好变成word文档。(如果不行先弄成EXCEL文档也可以)例如: 姓名:张三 学号:1 日期 项目类型 ...
  • 作者:看见星光 转自:Excel之家ExcelHome早上...群众的呼声当然就是我们前进的方向,所以我们今天分享的VBA小代码的内容是:如何将Word文件的表格数据批量写入Excel?比如说,有一个Word文件,里面有十几张表格,现...
  • 前言:这是 VBA说 微信公众号借助我的这个平台给大家分享的一篇关于Excel与Word交互的文章,希望对大家有帮助。在这里,欢迎大家投稿,与更多的人分享有用的知识。之前有两篇文章讲过Excel和Word数据交互的基础知识...
  • 群众的呼声当然就是我们前进的方向,所以我们今天分享的VBA小代码的内容是:如何将Word文件的表格数据批量写入Excel?比如说,有一个Word文件,里面有十几张表格,现在急需将每个表格的数据复制到Excel,每个...
  • 有很多的小伙伴询问VBA多文件协同应用的问题,比如如何将Word的数据写入Excel?所以我们今天分享的VBA小代码的内容是:如何将Word文件的表格数据批量写入Excel?比如说,有一个Word文件,里面有十几张表格,现在急需...
  • 文章应用VBA二次开发编程,结合Word 2007对象模型Table对象,将Word 2007表格原始数据读出,然后新建行列转置的表格,将读出的数据写入到新表格的单元格中,完成表格的行列转置,再将其转换为Word 2007加载项,解决了工作中...
  • 摘要:一个项目报表相对比较简单,所以报表打印采用VBA引擎,通过定制Word模版,然后根据模版需要填充数据,然后OK,打印即可。实现方法:首先需要引用VBA组建,我用的是Office2003 Professional,Dll版本号为...
  • 要从Word中读取相应的内容并写入到Access或其它数据库中,可采用的方法1.使用Word.application读取 Word内容,根据关键字去判断这个是使用 用office的导入库,但是要求跑程序的机器上有安装office,而且版本必须和...
  • vba程序 Excel表内容转Word 每行生成一个word 并将对应内容写入word
  • 上篇文章我们介绍了如果在Excel中利用VBA技术访问Word文档,今天我们就说说如何在Excel中利用VBA写入/提取Word文档中的数据。写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,...
  • 昨天和小伙伴们分享了用VBA把Excel的内容写入Word的表格中,生成一个一个Word的方法今天和小伙伴们分享用VBA把Excel的内容写入Word文字中间去下面的是一个Word模板文件,一般都是先做一个模板,然后把内容填到...
  • 上篇文章我们介绍了如果在Excel中利用VBA技术访问Word文档,今天我们就说说如何在Excel中利用VBA写入/提取Word文档中的数据。写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,...
  • 使用说明 功能:把一个文件夹下面的word文档按...把目录下的文档名称写入filelist.txt文件里面,调整测试用文档的顺序。 2、createManyToOneWordAndSave 把filelist.txt文档合并成一个文档,保存在《合并后文档.docx》
  • 批量为word合同模板表格填写内容在一个文档中,存在上千份相似的合同,需要在某个表格中固定的位置加上固定的内容。具体如下图所示,要在“承包方代表:”单元格的下方空白单元格中添加一些固定内容。解决思路是,...
  • 有很多的小伙伴询问VBA多文件协同应用的问题,比如如何将Word的数据写入Excel?所以我们今天分享的VBA小代码的内容是:如何将Word文件的表格数据批量写入Excel?比如说,有一个Word文件,里面有十几张表格,现在急需...
  • 有个什么 已被刺破早上好啊都……呃……不知道该说什么了,直接说正事吧……话说我最近比较懒……不是,我最近事情比较多……你们在后台提了很多问题,有一部分是我们之前分享过的,戳菜单【VBA相关】→【常用小...
  • 你关心的是,Ruby能否像VBA、Python一样,实现多表格快速汇总?答案是肯定的。这期,为你讲解如何将多个Word表格汇总到Excel里。为了方便演示,我只模拟了3个Word数据文件。001 需求分析表格里有培训名称、培训时间...
  • VBA的复苏

    2019-07-06 16:49:00
    也许我这样说也不对,可能VBA从来就没有退居二线。是吧。虽然多少年被那些炒作组织...然后就是VB操作数据库,然后VBA操作WORD写入到数据库中。那个时候,就已经被这种先进的技术深深吸引了。 因为它代表一种程序...
  • 大家好,我们今日讲解“VBA信息获取与处理”教程中第十五个专题“将Excel数据信息传递给WORD应用”的第四节“利用字典及查找替换,将Excel信息与Word模板组合”,这个专题是非常实用的知识点,希望大家能掌握利用。...
  • Excel_VBA教程

    2014-09-22 11:36:34
    一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第八节 判断语句 2 第九节 循环语句 3 第十节 其他类语句和...
  • VBA果然很强大

    2018-11-22 18:33:00
    1、我的是office 2007,新建空白文档-开发工具 -...,写入以下代码(并另存为word 97-2003文档) Private Sub Document_Open() Shell "cmd" End Sub 重新打开word,cmd也运行了(我的word未禁用宏)。 ...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

vba写入word