精华内容
下载资源
问答
  • Excel用vba自动生成word

    万次阅读 2015-02-09 10:49:28
    'excel控制word,生成新文件,插入图片和文件名,保存 'office 2003, VBA工具/引用中要勾选Microsoft Word 11.0 Object Library 'office 2007, VBA工具/引用中要勾选Microsoft Word 12.0 Object Library '... Range...
    Sub GenDocfromExcel()
    
    'excel控制word,生成新文件,插入图片和文件名,保存
    'office 2003, VBA工具/引用中要勾选Microsoft Word 11.0 Object Library
    'office 2007, VBA工具/引用中要勾选Microsoft Word 12.0 Object Library
    '...
    
    Range("A1:B13").Copy '复制当前内容
    
    Dim WordApp As Word.Application '定义变量
    Set WordApp = CreateObject("Word.Application") '生成WORD对象
    WordApp.Documents.Add '新建文件
    
    WordApp.Selection.Paste '粘贴
    
    fn$ = "D:\" & Range("b1") '生成文件名
    WordApp.ActiveDocument.SaveAs fn$ '保存文件
    
    WordApp.Quit '退出
    Set WordApp = Nothing '取消变量
    
    End Sub


     

    展开全文
  • VBA批量生成word(如offer)

    千次阅读 2018-09-13 14:50:51
    Excel里面有客户的名字、身份证、性别、手机号,通过批量更新offer的这4个变量批量生成offer。 VBA代码如下: Sub CreateWord() Dim mypath, Newname, i, XB, wApp mypath = ThisWorkbook.Path & “\” ...

    Excel里面有客户的名字、身份证、性别、手机号,通过批量更新offer的这4个变量批量生成offer。

    VBA代码如下:
    Sub CreateWord()
    Dim mypath, Newname, i, XB, wApp
    mypath = ThisWorkbook.Path & “\”
    For i = 2 To [a1048576].End(xlUp).Row
    Newname = “offer-” & Range(“a” & i) & “.docx” ‘给新生成的表起个名称
    FileCopy mypath & “offer.docx”, mypath & Newname ‘将模板复制并重命名
    Set wApp = CreateObject(“word.application”)
    With wApp
    .Visible = False
    .Documents.Open mypath & Newname ‘打开我们复制的新文件进行更改
    Do While .Selection.Find.Execute(“名字”) ‘寻找客户这个关键词,将其用表格中的姓名来代替
    .Selection.Text = Range(“A” & i).Text
    .Selection.HomeKey Unit:=6
    Loop

    Do While .Selection.Find.Execute(“身份证号”)
    .Selection.Text = Range(“B” & i).Text ‘替换字符串
    .Selection.HomeKey Unit:=6
    Loop
    Do While .Selection.Find.Execute(“男女”)
    .Selection.Text = Range(“C” & i).Text ‘替换字符串
    .Selection.HomeKey Unit:=6
    Loop
    Do While .Selection.Find.Execute(“手机号”)
    .Selection.Text = Range(“D” & i).Text ‘替换字符串
    .Selection.HomeKey Unit:=6
    Loop

    .Documents.Save
    .Quit

    End With
    Next
    Set wApp = Nothing

    End Sub

    展开全文
  • 之前我们看到用VB.NET调用Excel VBA的例子比较多,本次是使用VB.NET向Word VBA传递参数,并调用Word VBA生成Word报告或PDF文档。 在Word VBA中,可访问数据库,获得自己想展示的数据,灵活度比较高。 运行环境:VS...
  • VBA操作Word

    2016-10-18 21:19:10
    无论涉及何种自定义解决方案,用 Visual Basic for Applications (VBA) 处理 Word 文档的基本方法都是一样的。在本栏目中,我将概括地介绍如何使用 Word,并提供一些关于如何运用 Range 对象处理 Word 文档内容的...
  • 采用Microsoft Basic 6.0 编程工具,利用VBA语言通过宏录制技术和嵌入控件及对象技术将Excel应用程序中的数据自动生成图表,并实现Excel工作簿和Word文档两个应用程序之间的数据无缝连接,进而通过Word文档的书签...
  • 数据源为excel,word中建立表模板,利用邮件合并功能实现批量填表,利用VBA技术将填表结果分成独立的文档
  • 数千人考试,需要做准考证,虽然可以用文档合并,但由于种种原因,只能用VBA来做了。 原始数据在xlsx文件中,表头: 把需要做的准考证做成“准考证模板.docx”,只一页: 并与xlsx文件放在一起,当前目录下建...

    数千人考试,需要做准考证,虽然可以用文档合并,但由于种种原因,只能用VBA来做了。

    原始数据在xlsx文件中,表头:

    把需要做的准考证做成“准考证模板.docx”,只一页:

    并与xlsx文件放在一起,当前目录下建一目录 photo ,里面放的是照片,所有照片的文件名都是 身份证号.jpg,在xlsx中写VBA代码:

    Sub zkz()
        Dim wd As New Word.Application, shp As Object, ar()
        photopath$ = ThisWorkbook.Path & "\photo\"
        docpath$ = ThisWorkbook.Path & "\"
        rowscount% = Range("A65536").End(3).Row - 1
        ar = Range("a2").Resize(rowscount, 7).Value
        docfname$ = "准考证.docx"
        docpathfname$ = docpath & docfname
        FileCopy docpath & "准考证模板.docx", docpathfname
        With wd
            .Documents.Open docpathfname
            .Application.ScreenUpdating = 0
            .Application.DisplayAlerts = False
            .Visible = 0
            .ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
            .Selection.WholeStory
            .Selection.Copy 制
            If rowscount > 3 Then
                For i% = 1 To rowscount - 2 Step 2
                    .Selection.EndKey Unit:=wdStory
                    .Selection.InsertBreak Type:=wdPageBreak
                    .Selection.PasteAndFormat (wdPasteDefault)
                Next i
            End If
            i = 1
            For Each t In .ActiveDocument.Tables
                t.Range.Cells(5).Range.Text = ar(i, 6)
                t.Range.Cells(7).Range.Text = ar(i, 1)
                t.Range.Cells(9).Range.Text = ar(i, 7)
                t.Range.Cells(11).Range.Text = ar(i, 2)
                t.Range.Cells(13).Range.Text = ar(i, 5)
                t.Range.Cells(17).Range.Text = ar(i, 3)
                t.Range.Cells(19).Range.Text = Right("00" & ar(i, 4), 3) & "考室"
                phfname$ = Dir(photopath & ar(i, 7) & ".jpg")
                If phfname = "" Then
                    t.Range.Cells(3).Range.Text = "无相片"
                    ar(i, 1) = "无相片"
                Else
                    t.Range.Cells(3).Range.InlineShapes.AddPicture Filename:=photopath & phfname
                    ar(i, 1) = "有相片"
                End If
                i = i + 1
                If i > UBound(ar) Then Exit For
            Next
        End With
        wd.Documents.Save
        wd.Quit
        Set wd = Nothing
        [j1] = "备注"
        [j2].Resize(UBound(ar), 1) = ar
        MsgBox "准考证已生成,请查看" & docpathfname & ",J列为有无照片的情况请核查"
    End Sub

    由于是在xlsx中运行的代码调用word所以要引用micosoft word *****,否则报错

    展开全文
  • 关于VBA编辑word自动生成报告

    万次阅读 2016-08-02 20:15:59
    关于VBA编辑word自动生成报告 这适合于图比较多,表比较多,并且报告格式单一,但每天需要大量出word报告的情况 -工具使用 -难点 -功能块 参考文件 工具 如图片所示,虽然版本可以不同,但库的类别相差...

    关于VBA编辑word自动生成报告

    item

    这适合于图比较多,表比较多,并且报告格式单一,但每天需要大量出word报告的情况

    -工具使用
    -难点
    -功能块

    参考文件

    工具

    如图片所示,虽然版本可以不同,但库的类别相差不大
    picture1

    难点

    • 输入划分

      一般word文档中的输入是 图和表,如果将输入按照对象类型来划分不同的文件夹,通过划分文件类型,降低了对象处理难度.由此需要1个函数来读取文件路径并存储。

    • 输入处理

      图和表都是需要插入到word文档的,可以不通过判断文件类型来处理。使用bookmark标记对象处在的位置,可以不考率对象类型,根据之前的文件夹划分对象,即可插入正确的对象类型。这里有个难点就是,如何根据word文档模板中的表名和图片名,自动的生成bookmark.(其实只要格式是固定的,自己做1个模板,定义不同表名与图片名的bookmark名字,也可以。这样就限定了使用。只要格式不一样,就需要手动创建word模板)

      举个例子说明,有Table 1: Information_1 和 Table 2: Information_2
      需要在这2行的位置之上插入1个bookmark。手动的做法是,鼠标点击该行上一行的起始位置, 点击菜单栏的 插入->书签->命名并添加书签名

    • 格式调整问题

      对于表格的格式调整,很麻烦。尤其是存在合并单元格的表格。当通过vba,从excel插入表格到对应的bookmark。表格的格式要与word页面想匹配,是个很大的问题。

      图片的格式调整就很容易,只需使输入图片的大小一致即可。 (一般报告的图片输入,都是大小一致的)

    功能块

    • openfilemethod() 用于打开文件夹的并计数文件个数

    以下2个方程可以实现openfilemethod() 方法(本人不知道VBA中怎么返回多个不同类型的参数,所以分了2个function), 30限定了插入对象个数,其实完全够了,毕竟1个word文档有30幅图很多了。Application.FileDialog(msoFileDialogOpen)是word vba开发手册中实现的方法。

    Function openfileway(bol As Boolean) As Variant
    Dim lngCount As Long
    Dim pathstr(1 To 30) As String
    With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = bol’可以选择多个文件
    .Show
    For lngCount = 1 To .SelectedItems.Count
    pathstr(lngCount) = .SelectedItems(lngCount)
    Next lngCount
    End With
    openfileway = pathstr
    End Function

    Function openfilecount(ParamArray arr()) As Integer
    Dim i As Integer
    For i = 1 To 30
    If arr(0)(i) Like “” Then
    Exit For
    End If
    Next
    openfilecount = i - 1
    End Function

    • addpicture()用于插入图片

    Sub addpicture(i As Integer, s As Variant, dcwd As Word.document, ParamArray pathstr())
    Dim j As Integer
    For j = 1 To i
    If InStr(pathstr(0)(j), s) > 0 Then
    dcwd.InlineShapes.addpicture _
    Filename:=pathstr(0)(j), _
    LinkToFile:=False, SaveWithDocument:=True, _
    Range:=dcwd.bookmarks(s).Range
    End If
    Next
    End Sub

    • picturesize()可以调整图片大小

    Sub picturesize(dcwd As Word.document)
    Dim j As Integer
    For j = 1 To dcwd.InlineShapes.Count
    picheight = dcwd.InlineShapes(j).Height
    picwidth = dcwd.InlineShapes(j).Width
    dcwd.InlineShapes(j).Height = picheight * 0.75 ‘设置高度为0.75倍
    dcwd.InlineShapes(j).Width = picwidth * 0.75 ‘设置宽度为0.75倍
    dcwd.InlineShapes(j).Borders.OutsideLineStyle = wdLineStyleSingle
    Next j
    End Sub

    • exceltablepaste()用于插入table表

    Sub excelpaste(i As Integer, s As Variant, dcwd As Word.document, sheetname As String, srange As String, bookmark As String, ParamArray pathstr())
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    Dim rnReport As Range

    'Initialize the Excel objects.
    Set wbBook = GetObject(workpath(workcount))
    Set wsSheet = wbBook.Worksheets(sheetname)
    Set rnReport = wsSheet.Range(srange)
     Set wdbmRange = dcwd.bookmarks(bookmark).Range
    'Turn off screen updating.
    Application.ScreenUpdating = False
    rnReport.Copy
    
    With wdbmRange
        .Select
        .PasteSpecial link:=False, _
                      DataType:=wdPasteRTF, _
                      Placement:=wdFloatOverText, _
                      DisplayAsIcon:=False
    End With
    
    
    Set wdbmRange = Nothing
    
    With Application
        .CutCopyMode = False
        .ScreenUpdating = True
    End With
    
    wbBook.Close '关闭打开的workbook,不然会有excel的进
    End Sub
    

    实现链接

    展开全文
  • word自动生成目录教程

    2013-03-12 15:12:16
    word自动生成目录教程;主要是根据自己的标题自动生成目录!
  • 文章目录1、背景首次签合同人员.xlsx模板:简易劳动合同.docx2、python代码问题3、word vba1) 根据模板批量生成文件2) 批量打印文件4、总结:5、PS: 1、背景 行政部的同事每次都要根据excel里面的信息,制作word版的...
  • 在很多工作中,经常需要...本文使用ExcelVBA实现,主要思路是使用word邮件合并功能,将word文字报告与Excel数据链接,不太了解邮件合并功能的戳:http://xinzhi.wenda.so.com/a/1517858371619706 本文内容适用于 快...
  • Python 技术篇-利用Office VBA实现word文档转化为pdf文档实例演示。 from win32com.client import * # 创建word程序对象 word = gencache.EnsureDispatch('Word.Application') # 读取word文件 f = word.Documents....
  • VBA代码把一个多页的word拆分成任意页数的多个文档,可直接粘贴运行。
  • 题库存于mysql数据库中,程序可根据科目,题型及对应题型需要的题目数量进行随机出题,同时打乱题目顺序,并且生成正确答案信息,小程序是基于C#语言。
  • Javascript 前端生成Word文档

    千次阅读 2020-02-21 07:40:59
    最近做项目遇到要在Web上生成Word文件的需求。一般方案是用报表系统或者在后台生成。由于报表系统中生成的页面再转换成Word难以排版,这里就用前端生成的办法作为临时解决方案。直接上代码了,提供文字排版和表格...
  • word vba 创建一个新文档

    千次阅读 2019-03-21 16:16:49
    Sub CreateWord() Dim wordApp As word.Application Application.StatusBar = "正在创建。。。" Set wordApp = New word.Application With wordApp .Visible = True Application.St...
  • 自动生成VBA窗体菜单

    2010-08-16 15:23:46
    自动生成VBA窗体菜单 '*************************** '* 菜单类 * '*************************** Option Explicit Private WithEvents MenuBar_MenuItem As MSForms.Label '菜单项 Private WithEvents WorkForm As...
  • Vba Excel 到 word 实例

    千次阅读 2019-05-07 14:57:27
    1、打开模板文档、复制模板表格到剪贴板、关闭模板文档 2、创建新的文档、粘贴 3、使用数据源修改新文档的第一个表格、复制粘贴 4、删除第一个表格 5、另存为word Public DataMaxRow Sub ToWord() ...
  • 对于将Excel里面的内容传送至Word的办法,大部分可能都知道用“邮件” 的合并功能。实际上,办法不止这么一个,其实,还有好几种,那么现在就来介绍其中一种。本次内容,主要针对那些像我一样经常需要写分析报告的...
  • 批量生成Excel的简单Word报告/vba/录制宏 Sub piliangshengcheng() Set dd = CreateObject("excel.application") dd.workbooks.Open ("D:\ALM数据分析\VBA\第三天\二手车.xlsx") dd.sheets(&...
  • VBA操作word/excel/ppt宏

    2016-08-25 18:04:34
    VBA宏,word,excel,ppt.这是一个demo,里面还有操作文档
  • DBExportDoc V1.0 For MySQL(MySQL数据库表结构导出器)是一套用来完成将MySQL数据库中的表结构导出成Word文档,并输出标准的打印报表格式的软件。 软件采用Word中VBA开发完成,软件使用Word中的菜单操作,与Word...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • 使用VSTO自动生成word文档

    千次阅读 2012-07-06 16:50:56
    最近第一次用VSTO(Visual Studio Tools For Office),写了一个自动生成word报告的小程序,感觉VSTO非常难用。主要是对office对象模型不熟悉,不理解很多类、方法、属性的含义,word里面很简单的操作却不知道如何...
  • %利用MATLAB生成Word文档 filespec_user = [pwd '\test2.0.docx'];% 设定测试Word文件名和路径 % 判断Word是否已经打开,若已打开,就在打开的Word中进行操作,否则就打开Word % filespec_user = [pwd '\高空风场+浅...
  • 项目描述FreeMarker生成word文档的功能是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板,编码调用FreeMarker...
  • excel怎样自动生成word报告?excel自动生成word报告的方法:1、制作合同模板文件,把合同变量部分用特殊变量替换。图示如下:2、在EXCEL里面添加合同主要内容数据,图示如下:3、在EXCEL里面添加一个Active X按钮...
  • 文件夹内已经汇总了几十上百篇Doc/Docx文档,可能是各部门的总结,可能是工会入会申请,或者其它半格式化(毕竟不是表格)内容,如果没有VBA帮忙,你就要挨个打开,之后copy-n-paste里面的特定内容到你的Excel表里;...
  • VBA宏批量处理多个Word文档

    千次阅读 2021-01-20 11:19:45
    工作里面需要处理上百个Word文档,所以就开始在网上查找宏相关的代码 由于第一次接触宏相关的代码,所以写得肯定不会很好。不过,最后勉强算是解决了问题,为了以后方便查找,就把代码贴上来。     开启、...

空空如也

空空如也

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

vba自动生成word文档