ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 27129|回复: 26

[求助] word的邮件合并功能,数据源路径能不能使用相对路径?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-6-22 11:31 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我在论坛上找到一个例子(见附件),它是一个通过邮件合并后的WORD文档,打开这个文档能自动打开数据源的EXCEL文档。且只要这个EXCEL 和 WORD文档在同一目录下,不论拷贝到哪里,这个路径都是有效的,即是相对路径。

我的问题是,附件例子中的如下两个功能是如何实现的:
打开WORD文档能自动打开EXCEL的数据源,是如何实现的,具体怎么做?

谢谢大侠们,帮帮忙,解答一下。

新合同联动.rar

9.79 KB, 下载次数: 708

TA的精华主题

TA的得分主题

发表于 2010-6-22 16:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

感谢QQ喜来乐教给的方法

1、Excel的设置(好像不设置也行)
   工具→选项→常规→忽略其他应用程序(不√)
2、Word的设置
   工具→选项→常规→打开时确认转换(打√)
3、邮件合并中,在“确认数据源”对话框选“Ms Excel 工作簿通过 DDE(*.xls)”。
4、注意:这点很重要
   在一个不用于保存邮件合并的地方进行邮件合并操作
   或将合并好的文档及数据源移到别处保存
  (或者说:在你进行邮件合并的地方再打开文档会出现“找不到数据源”的提示)

移到其他地方打开Word文档试一试效果吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-23 10:42 | 显示全部楼层
谢谢!~我的问题解决了!~从此邮件合并使用的数据源就可以固定不变了!~

TA的精华主题

TA的得分主题

发表于 2010-8-20 16:39 | 显示全部楼层
好方法。确实不错啊。期待更多的好东西啊。期待中

TA的精华主题

TA的得分主题

发表于 2010-11-16 16:42 | 显示全部楼层
感谢,我找了半天才找到这个问题的解决方法,谢谢了

TA的精华主题

TA的得分主题

发表于 2010-11-16 23:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-18 10:34 | 显示全部楼层
使用这种方法解决了相对路径的问题,可是无法选择工作表?
请教高手,如何选择工作表呢?

TA的精华主题

TA的得分主题

发表于 2010-11-18 13:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
2楼说的不错

TA的精华主题

TA的得分主题

发表于 2011-11-14 14:37 | 显示全部楼层
1、在你的WORD文档中选择“工具”——”宏“——”Visual Basic 编辑器“
2、弹出Visual Basic 编辑器后选择“Project(你的文档名)——”Microsoft Word 对象“——“ThisDocument”
3、将下列代码拷贝到代码窗口
4、修改“strExcel”、“strSheet”两个参数的值
5、保存。OK
'以下是代码
'code read environment variable with API
Private Declare Function GetEnvironmentVariable Lib "kernel32.dll" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String) As Long

Public Function GetVar(strName As String)
   Dim strBuffer As String
   Dim lngLen As Long
   lngLen = 256
   strBuffer = String$(lngLen, Chr$(0))
   lngLen = GetEnvironmentVariable(strName, strBuffer, lngLen)
   If lngLen <> 0 Then
       strBuffer = Left(strBuffer, lngLen)
       GetVar = strBuffer
   End If
End Function


Private Sub Document_Close()

'this necessary if you don't want it ask you to open datasource every time doc is opened
Me.MailMerge.MainDocumentType = wdNotAMergeDocument
Me.Save
End Sub



Private Sub Document_Open()
Dim strExcel As String
Dim strSheet As String
Dim strDataSource As String
Dim strConnection As String
Dim strQuery As String
Dim tempPath As String
tempPath = Me.Path
strExcel = "三非案件资料"
strSheet = "讨论1"
' set this to be the file name of your data source
strDataSource = tempPath & "\" & strExcel & ".xls"

' set this to be the connection string for your data source
strConnection = ""
strQuery = "select * from " & strDataSource 'MMerge.TXT"

With ActiveDocument
With MailMerge
.OpenDataSource Name:= _
        strDataSource, _
        ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:= _
        "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & strDataSource & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:RegistryPath="""";Jet OLEDB:Database Password", SQLStatement:="SELECT * FROM `" & strSheet & "$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess

End With
End With
End Sub





TA的精华主题

TA的得分主题

发表于 2011-11-18 13:19 | 显示全部楼层
谢谢了,Excel 文档不能放太深目录中,不然出现字符串大于255的错误。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 06:49 , Processed in 0.049630 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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