gpt4 book ai didi

文档中链接对象的文件路径的VBA列表

转载 作者:行者123 更新时间:2023-12-02 08:32:08 24 4
gpt4 key购买 nike

我有许多大型 Microsoft Word 文档,其中包含来自许多 Microsoft Excel 电子表格的许多链接文件。打开 Word 文档时,即使未选中“打开时更新链接文件”选项:

enter image description here

Word 仍然通过打开和关闭每个单独链接的相关 Excel 电子表格来从源头检查每个链接(因此,对于 x 个链接,即使来自同一电子表格,Word 也会打开和关闭电子表格 x 次)。这意味着打开文档需要非常长时间。

我发现,如果包含链接对象源的电子表格已经打开,文档打开速度会更快,因此 Word 不会不断打开、关闭、重新打开它们。

到目前为止,我的解决方案的开始是创建链接对象的所有文件路径的列表,通过以下VBA代码完成:

Sub TypeArray()

Dim List(), Path As String
Dim i, x As Integer
Dim s As InlineShape
Dim fso As FileSystemObject, ts As TextStream

Set fso = New FileSystemObject
Set ts = fso.OpenTextFile("C:\MyFolder\List.txt", 8, True)

With ts
.WriteLine (ActiveDocument.InlineShapes.Count)
End With

For Each s In ActiveDocument.InlineShapes
Path = s.LinkFormat.SourcePath & "\" _
& s.LinkFormat.SourceName
With ts
.WriteLine (Path)
End With
Next s
End Sub

'--------------------------------------------------------------------------------------
Private Sub WriteStringToFile(pFileName As String, pString As String)

Dim intFileNum As Integer

intFileNum = FreeFile

Open pFileName For Append As intFileNum
Print #intFileNum, pString
Close intFileNum

End Sub
'--------------------------------------------------------------------------------------
Private Sub SendFileToNotePad(pFileName As String)

Dim lngReturn As Long

lngReturn = Shell("NOTEPAD.EXE " & pFileName, vbNormalFocus)

End Sub

效果很好,但只能在文档打开后使用,这违背了它的目的。

最后,我的问题是:

1) 在打开 Word 文档并等待检查每个链接的漫长过程之前,有没有办法运行此代码(或任何更好、更高效的代码 - 欢迎提出建议)来源?

2) 有没有办法避免这一切,并且只是让 Word 在我打开文档时检查链接?

很抱歉问了这么长的问题,感谢您的帮助!

最佳答案

如果我没记错的话应该是 Document_Open根据 msdn 的事件。这实际上应该是一个打开之前的文档,并且应该在更新链接之前触发(至少在 Excel 中它是在计算之前触发的)。

尝试在文档打开时打开文件。然后你将面临另一个问题,什么时候关闭文件,但这是一件容易得多的事情。 (可能是 document_close 事件...)

编辑:

正如评论所述,这已经太晚了。您可以创建一个单词开场白(作为单个应用程序或作为插件)。逻辑基本上是:

'1) on something_open run GetOpenFileName dialog
'2) before opening the real thing, open all files accompanied
'3) open the document itself
'4) close all files
'5) close the opener itself

这不是最简单的方法,但我使用这个逻辑来确保我的应用程序始终在 Excel 等的新副本中运行。但我知道这是一种解决方法,而不是解决方案。

关于文档中链接对象的文件路径的VBA列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20838569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com