ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: huangyun

如何实现批量复制文档(含表格)到一个新文档中

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-12 23:39 | 显示全部楼层
各位朋友、版主,请帮帮我吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-14 20:21 | 显示全部楼层

怎么了,没附件的时候有答复的,传了附件没人理会了。

TA的精华主题

TA的得分主题

发表于 2006-12-15 06:00 | 显示全部楼层
QUOTE:
以下是引用huangyun在2006-12-9 11:11:01的发言:

我有二个问题请教各位朋友:

一、我有几十个结构一样的WORD表格,它们只有一页大小,带抬头的。现在想要一一复制粘贴到一个新文档(空白)中,EXCEL VBA我能写代码实现,WORD VBA没有具体接触,所以不会写。具体要求如下:运行宏后,首先出现一个允许选择多个文档的打开对话框,然后使用CTRL/SHIFT键,我进行多选后,宏能够将所选文档内容(含抬头、表格、内容)都复制到VBA代码所在文档中,最后报出所复制的文件名。

二、上面的文档制作好后,需要进行标题设置,也就是将抬头都设置成标题1样式或某种样式,这样以便我接下去制作目录。具体要求如下:运行宏后,首先出现一个INPUTBOX对话框,提示输入有具有共同标志的文字部分(也就是说,这几十个文档的抬头都是“**公司达标申报表”,我只需要输入“公司达标申报表”),这样宏自动查找文字部分所在行,并将其设置成标题1样式。

谢谢各位。

第一种思路:

我觉得使用WORD自带的功能,基本能够实现楼主的需要:

插入/文件。

使用查找与替换功能,将关键字所在的段落设置为标题样式。

只是文件名无法取得。

第二种思路:

VBA法,由于你说的文档基于一页,而你又需要将该页的内容复制到新文档中,还是利用插入/文件功能,插入文件名,完成所有文档插入后,进行查找与替换。

第三种思路:

使用对话框,使用复制与粘贴,其它思路同上。

范例如下:

'* +++++++++++++++++++++++++++++

'* Created By SHOUROU@ExcelHome 2006-12-15 6:26:31

'仅测试于System: Windows NT Word: 11.0 Language: 2052

'№ 0116^The Code CopyIn [ThisDocument-ThisDocument]^'

'* -----------------------------

Option Explicit

Sub Example2()    '此代码功能为列出指定文件夹中所有选取的WORD文件全路径名

    Dim MyDialog As FileDialog, vrtSelectedItem As Variant

    Dim myRange As Range, KeyFind As String

    On Error Resume Next    '忽略错误

    '定义一个文件夹选取对话框

    Set MyDialog = Application.FileDialog(msoFileDialogFilePicker)

    With MyDialog

        .Filters.Clear    '清除所有文件筛选器中的项目

        .Filters.Add "所有 WORD 文件", "*.doc", 1    '增加筛选器的项目为所有WORD文件

        .AllowMultiSelect = True    '允许多项选择

        If .Show = -1 Then    '确定

            For Each vrtSelectedItem In .SelectedItems    '在所有选取项目中循环

                With ThisDocument

                    Set myRange = .Range(.Content.End - 1, .Content.End - 1)

                    myRange.InsertAfter vrtSelectedItem & Chr(13)

                    Set myRange = .Range(.Content.End - 1, .Content.End - 1)

                    myRange.InsertFile FileName:=vrtSelectedItem, Range:="", link:=False

                End With

            Next

        End If

    End With

    KeyFind = VBA.InputBox(prompt:="请输入需要设置标题样式的关键字!", Title:="Excelhome", Default:="公司达标申报表")

    If KeyFind = "" Then Exit Sub

    With ThisDocument.Content.Find

        .ClearFormatting

        .Text = KeyFind

        .Format = True

        .Replacement.ClearFormatting

        .Replacement.Text = ""

        .Replacement.Style = "标题 1"

        If .Execute(Replace:=wdReplaceAll) = False Then

            MsgBox "Word没有找到指定的内容,请检查!"

        Else

            MsgBox "Word已进行指定内容的样式设置!"

        End If

    End With

End Sub

'----------------------

[此贴子已经被作者于2006-12-15 6:26:51编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-15 07:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢版主帮助,但程序执行到这句Dim MyDialog As FileDialog就提示用户定义类型未定义,执行不下去了,是需要引用什么吗,还是有其它要求。

TA的精华主题

TA的得分主题

发表于 2006-12-16 07:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用huangyun在2006-12-15 7:40:58的发言:
谢谢版主帮助,但程序执行到这句Dim MyDialog As FileDialog就提示用户定义类型未定义,执行不下去了,是需要引用什么吗,还是有其它要求。

FileDialog对象需要WORD XP及其以上版本,看来你是WORD2000了。如果是WORD2000,建议升级一下,若是使用WINDOWS的通用对话框,可能也会有所局限,有关“通用对话框”的操作,可以以此搜索本版。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 07:43 , Processed in 0.026932 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表