2016-06-12 61 views
-1

我想寫一些JavaScript代碼,我在VBA語言文字JavaScript代碼在VBA

var images = document.getElementsByTagName('img'); 
var l = images.length; 
for (var i = 0; i < l; i++) { 
    images[0].parentNode.removeChild(images[0]); 
} 

我在Chrome中控制檯測試這一點,它的HTML文檔中的一次刪除所有圖像

我希望在2010年Word中打開HTML文件,並刪除

我已經能夠將圖像使用此

Public Sub PicturesDeleteAll() 

Dim objPic As Shape 

    For Each objPic In ActiveDocument.Shapes 
      objPic.Delete 
    Next objPic 

End Sub 
刪除圖片

但它不會一次全部刪除它們,而且我必須多次運行才能正常工作,因此我所擁有的javascript代碼的vba平等是什麼?

+0

只是要清楚,你的意思是你要運行'PicturesDeleteAll'幾次?你並不是指看幾次循環(即每個圖像一次)。你是否收到任何錯誤信息,或者你是否只是在說。不會在每次通過時拍攝所有圖像,如果不進行更改,每次都會隨機挑選更多圖像? –

+0

是的,我必須運行PicturesDeleteAll幾次才能刪除文檔上的所有圖像。雖然我只運行一次javascript代碼。如果我爲許多文件執行此操作,則不是最佳選擇。沒有錯誤消息,只需要3到4次即可刪除所有圖像。 – AK0101

+0

我在這裏沒有看到什麼,你有沒有其他信息?它實際上是多個HTML文件?它是錯誤和停止,這就是爲什麼你必須再次運行它?你所描述的,可能是可能的,但是是前所未聞的,因此我認爲我錯過了正在發生的事情 –

回答

1

我看不到這種情況發生的情況,但刪除時可以更好地反向操作,以避免數組大小發生變化,從而產生誤導性結果,這些結果可能是您所看到的症狀。

嘗試以下: -

Public Sub PicturesDeleteAll() 
Dim LngCounter As Long 

For Each LngCounter = ActiveDocument.Shapes.Count to 0 Step -1 
    ActiveDocument.Shapes(LngCounter).Delete 
Next 
End Sub 

Public Sub PicturesDeleteAll() 
Do Until ActiveDocument.Shapes.Count = 0 
    ActiveDocument.Shapes(1).Delete 
Loop 
End Sub 
+0

第一個給出了一個錯誤,第二個做了這項工作。非常感謝!只是測試它的效果很好 – AK0101

+1

@ AK0101你能把它標記爲正確嗎...... –

+0

還有一件事我可以適應這個刪除部分,例如,如果我找到一個字符串的部分「頂部刪除」或「底部部分刪除「我該怎麼做?我知道這刪除了部分ActiveDocument.Sections(x).Range.Delete其中x是部分號 – AK0101