2012-11-12 36 views
2

不同我有一句話自動化程序我使用Office互操作開發一個奇怪的情況和C#3.5鏈接的圖像的SourceFullName從實際的鏈接

該方案的任務是在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子文件夾,而它不存在於相對路徑中。

+0

大問題 - 我一直在尋找到這一點,我需要你做一些澄清。你說,「當我檢查鏈接的文件時,它會將圖像指向類似於images \ image_file.jpg的位置」 - 首先,您是否使用「鏈接」對話框來查看此圖像?如果不是,你如何檢查?其次,你確定Word會將此報告爲相對路徑嗎?最後,您提到了兩個路徑:'image \ image_file.jpg'和'\\ net-storage \ ... \ images \ documents \ image_file.jpg' - 是否有意讓第一個路徑不包含文檔'圖像文件夾內的文件夾? –

+0

我編輯了我的問題。我附上了截圖,查看圖像鏈接。不幸的是,我只能用德語提供,但我認爲從定位上來說,你應該能夠推斷出它是否與你所談論的功能相同。 –

回答

0

我知道你寫的VSTO C#代碼,這是VBA,但我相信這解釋了你看到的奇怪行爲。

不能使用:

myPicPath = Options.DefaultFilePath(wdPicturesPath) 

......因爲如果用戶插入從不同的文件夾的圖片,默認文件路徑返回該文件夾,而不是從該對話框中的實際設置。相反,你可以使用:

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