ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何将OLE连接或嵌入对象的路径改为相对路径

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-6-30 21:23 | 显示全部楼层 |阅读模式
在“复制-选择性粘贴-粘贴链接“进行OLE链接或嵌入对象时,word是采用的绝对路径,文件拿到别的计算机上链接失效(甚至在本机上文件换个目录也如此),如何将该路径改为相对路径?求教,迫切!

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-7-1 11:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
同志们,难道真的没办法了吗?请回复,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-7-3 15:17 | 显示全部楼层
我找到了一篇有关数据库路径方面的文章,不知能否用于改变上面word中的链接路径?如何在word中操作,请VBA高手解答,谢谢! 我个人因为经常作一些数据库方面的程序,对于程序间如何与数据库进行接口的问题之烦是深有体会,因为VB在数据库链接的时候,一般是静态,即数据库存放的路径是固定的,如用VB的DATA,adodc,DataEnvironment 等到作数据库链接时,如果存放数据库的路径被改变的话,就会找不到路经,真是一个特别烦的事。 笔者的解决方法是利用app.path 来解决这个问题。 一、用data控件进行数据库链接,可以这样: 在form_load()过程中放入: private form_load() Dim str As String '定义 str = App.Path If Right(str, 1) <> "\" Then str = str + "\" End If data1.databasename=str & "\数据库名" data1.recordsource="数据表名" data1.refresh sub end 这几句话的意为,打开当前程序运行的目录下的数据库。 你只要保证你的数据库在你程序所在的目录之下就行了。 二、利用adodc(ADO Data Control)进行数据库链接: private form_load () Dim str As String '定义 str = App.Path If Right(str, 1) <> "\" Then str = str + "\" End If str = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & str & "\tsl.mdb" Adodc1.ConnectionString = str Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from table3" Adodc1.Refresh end sub 三、利用DataEnvironment进行数据库链接 可在过程中放入: On Error Resume Next If DataEnvironment1.rsCommand1.State <> adStateClosed Then DataEnvironment1.rsCommand1.Close '如果打开,则关闭 End If 'i = InputBox("请输入友人编号:", "输入") 'If i = "" Then Exit Sub DataEnvironment1.Connection1.Open App.Path & "\userdatabase\tsl.mdb" DataEnvironment1.rsCommand1.Open "select * from table3 where 编号='" & i & "'" 'Set DataReport2.DataSource = DataEnvironment1 'DataReport2.DataMember = "command1" 'DataReport2.show end sub 四、利用ADO(ActiveX Data Objects)进行编程: 建立连接: dim conn as new adodb.connection dim rs as new adodb.recordset dim str str = App.Path If Right(str, 1) <> "\" Then str = str + "\" End If str = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & str & "\tsl.mdb" conn.open str rs.cursorlocation=aduseclient rs.open "数据表名",conn,adopenkeyset.adlockpessimistic 用完之后关闭数据库: conn.close set conn=nothing

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-7-4 17:26 | 显示全部楼层
看来只有我在这自言自语了!!!

TA的精华主题

TA的得分主题

发表于 2003-7-5 00:54 | 显示全部楼层
先生,word并不知道你的源文件的位置,这是问题所在。

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-7-7 15:18 | 显示全部楼层
我的引用其实就是在同一个文件中第二页引用第一页的内容,但word也必须用绝对路径?我试过,文件不保存时是相对路径,只要一存就自动更改为绝对路径,真是让我苦恼,做好一个模板文件原本是分发给大家用的,这倒好,就只能在我自己的计算机的原始目录中使用了? 记得,做网页时,引用的链接是可以有绝对路径,也可以有相对路径的,也就是所链接的目标文件可以定位为“c:/.../pic.htm“,也可以定位为当前目录下的“/.../pic.htm”,为啥word就不行?做数据库时,也可以引用同一目录下的其他数据,word就不行?我好困惑!请指点迷津!!!

TA的精华主题

TA的得分主题

发表于 2012-5-10 19:06 | 显示全部楼层
虽然这个问题很旧了,word2007确实有个bug,我摸索了很久,找到了解决方法
===针对word2007及以上,即docx文件格式===
要word引用excel表格中的数据,最好的方法是新建一个word.docx文件,然后马上另存为doc,不要考虑兼容,然后复制excel表格中的数据粘贴到word中,并选择粘贴选项中链接到excel。这样只要word和excel在同一个目录下,随便拷到哪里都会提示更新的。
==
Word中引用excel表格中的数据属于OLE对象,word2007只能使用绝对路径,换了位置就不能更新了,word2003也是绝对路径,但换了地方还能更新,会以以当前文档路径下的同名excel文件路径进行更新。
即如果是word.docx文件,“复制excel表格中的数据粘贴到word中,并选择粘贴选项中链接到excel”,保存后把word和excel文件剪切到另外的地方,按alt+F9你会发现仍然引用的是绝对路径,但是word2003就已经更新到新的路径中了,虽然格式还是绝对路径。
==
国内的论坛没有人回答出可以用的方法,国外的有人回复过,但是发现也不对,如果是xp sp2可能是可以的,但电脑是sp3的话以下方法又不行了。
I think i've find a solution at least to my specific problem at hand.

I first build a word template by copy cells from the Excel workbook and paste them in the word document as usual.
Then I presss "Alt+F9".
Then I "Find and Replace" the directory part of all the Links (they all point to a single Excel workbook) with empty strings, so that they all contain only a file name without the directory part.
After that i can copy the "template" word document together with the Excel workbook to any other places. Once i open the Word document at the new place, Word (Office SP2) will prompt me to "update" the links, if i accept, the Links will now get to point to the copy of Excel workbook that is right side by side with the word document.

Happy ing~

TA的精华主题

TA的得分主题

发表于 2012-5-10 19:09 | 显示全部楼层
How to link From a Word document to an Excel workbook relatively?  
Hi every body,

I'm making some kind of Work document template.

Data in the document is stored and updated in an Excel workbook.

Parts of the word document is "linked" to the workbook's cells, as i copy the cell and paste in the word document.



The problem is that the "link" seems to be an absolute path to the Excel workbook, so that the pair of Word document and Excel workbook are not portable. If i copy them to some other places on the computer disk, not to mention to other computers, the links are invalid and the word documents won't get updated at all.



Is there any way out of this problem??

Thanks a lot!
==
有人提出过这个问题的。

TA的精华主题

TA的得分主题

发表于 2013-4-5 18:39 | 显示全部楼层
8楼的老板 ,您怎么没有把帖子的后面给上来啊s
在这里,

http://blog.sciencenet.cn/home.p ... ard=1&id=677206

TA的精华主题

TA的得分主题

发表于 2017-1-5 17:44 | 显示全部楼层
1905244668 发表于 2012-5-10 19:06
虽然这个问题很旧了,word2007确实有个bug,我摸索了很久,找到了解决方法
===针对word2007及以上,即docx ...

感谢,终于找到解决办法了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 18:51 , Processed in 0.025189 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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