链接图像的SourceFullName与实际链接不同

时间:2012-11-12 08:10:05

标签: c# ms-word office-interop

我在使用Office Interop和C#3.5开发的自动化程序中有一个奇怪的案例

该程序的一项任务是将word文档中的任何链接图像复制到其他位置,并将这些图像的链接源重写到新位置。

现在,在一个文档中,当我检查链接文件(使用Word 2010)时,它将图像指向类似于images\image_file.jpg的位置 - 因此,图像位于文档所在文件夹的子文件夹中是。这完全正确。

Linked image editscreen

但是,当我的程序遇到该图像时,同一图像的LinkFormat.SourceFullName会在我的本地网络上为我提供一条路径,例如\\net-storage\customer\001 - customername\data\images\documents\image_file.jpg,与我期待的实际图片链接没有任何关联。

这里出了什么问题?如何在程序中获取正确图像源?

编辑为 sw_lasse :我确定这是一个相对路径,因为(在其他文档中)删除相对路径中的图像并更新word中的字段后,图像为未找到。所以它绝对是一条相对的道路。

此外,两条路径(网络和相对路径)彼此之间没有相关性。网络上的图像使用完全不同的文件夹层次结构,这就是为什么有一个document子文件夹,而它不存在于相对路径中。

1 个答案:

答案 0 :(得分:0)

我知道你写的VSTO C#代码,这是VBA,但我相信这解释了你看到的奇怪行为。

你不能使用:

myPicPath = Options.DefaultFilePath(wdPicturesPath)

...因为如果用户从其他文件夹插入了图片,则默认文件路径将返回该文件夹而不是对话框中的实际设置。您可以使用:< / p>

With Dialogs(wdDialogToolsOptionsFileLocations)
    .Path = "PICTURE-PATH"
    .Update
    myPicPath = .Setting

    If Not Right$(myPicPath, 1) = "\" Then
        myPicPath = myPicPath + "\"
    End If

    MsgBox myPicPath 
End With

同样,你不能使用:

myDocPath = Options.DefaultFilePath (wdDocumentsPath)

获取默认文档路径,因为这会返回当前的FileOpen路径,而不是默认文档路径!!

相反,请使用:

Dim myDocPath As String
myDocPath = Dialogs(wdDialogToolsOptionsFileLocations).Setting

'Add a "\" at the end of the path, unless the setting is already followed by a "\" -
'which it will be if the setting is set to a root folder 
If Not Right$(myDocPath, 1) = "\" Then
    myDocPath = myDocPath + "\"
End If

MsgBox myDocPath

这些天我很擅长将VBA转换为C#,如果你提供一些不起作用的代码,我会把这个VBA转换成适合的。

Ref: How to retrieve Word's default Documents path or Pictures path setting