2017-03-16 33 views
0

[有與尚未得到滿意的答覆類似的標題另一個最近的問題,並給了我沒有洞察:-(]刪除Word中的水印從Excel VBA(終極版)的Word和Excel VBA之間的區別

這是我第一次嘗試將Word自動化與Excel VBA整合在一起,所以我開始用Word VBA中的宏記錄來獲得線索。不幸的是,當我嘗試將它轉換爲Excel時,甚至爲了不得不使用Excel本地wrdDoc爲了限定引用,在VBA中工作的代碼在Excel VBA中不起作用。令人沮喪的是:

這裏是記錄的代碼s nippet從Word,我開始: [sWatermark:

ActiveDocument.Sections(1).Range.Select 
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader 
Selection.HeaderFooter.Shapes("US-CA watermark").Select 
Selection.Delete 

這裏是從Excel代碼段我從衍生 [記錄到水印圖像匹配分配的名稱後手動編輯的形狀名稱]串預定義以匹配圖像名]

With wrdDoc 
    .Sections(1).Range.Select 
    .ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader 
    .Selection.HeaderFooter.Shapes(sWatermark).Select 
    .Selection.Delete 
End With 

結果:VBA扼流圈每次當我嘗試選擇水印(線3內的帶塊)。

我已經嘗試過和沒有的問題行。前綴[即作爲wrdDoc.Selection和只是選擇(如在原始的Word宏)]。

我已經嘗試訪問水印作爲.HeaderFooter.shapes(1)後,驗證該範圍內只有1項。再次,這似乎在Word VBA中工作得相當令人滿意,但從未在Excel VBA中使用。

爲什麼?!?!?!

+1

'.Selection'應該是'.Application.Selection' – Slai

回答

0

儘可能避免使用選擇,因爲它可以在宏執行過程中更改。例如:

wrdDoc.StoryRanges(wdPrimaryHeaderStory).ShapeRange(1).Delete 
+0

我知道要儘量避免選擇在一般情況下,雖然我在過去已經發現VBA可以很無情的說。舉例來說,即使在這裏,我也試圖放棄。(1).Range.select,並將前兩行合併,但在這方面也失敗了。另外,無論如何,你的告誡似乎並沒有回答這個問題,至於爲什麼VBA代碼可以在Word中運行,但是其等效功能在Excel中不起作用。 – Alister

+0

@Alister'Selection'指'Application.Selection',但在第二個代碼中指向'wrdDoc.Selection'並且沒有'Document.Selection'屬性 – Slai

+0

如果您可以添加對Microsoft Word的引用和'Dim wrdDoc As Word .Document',你應該在'wrdDoc.Selection'行有編譯錯誤。 – Slai

相關問題