VBA

2016-06-12 11 views
-1

内のJavaScriptコード私はクロームで、コンソールでこれをテストし、それが私一度VBA

でHTMLドキュメント内のすべての画像を削除単語

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

ため、私はVBAを持っているいくつかのJavaScriptコードを書きたいですこの

Public Sub PicturesDeleteAll() 

Dim objPic As Shape 

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

End Sub 
を使用して画像を削除するには、私ができた

画像を単語2010でHTMLドキュメントを開き、削除したいです

しかし、それらを一度に削除するわけではありませんし、私はそれを何回か実行しなければならないので、私は持っているjavascriptコードのvba equivantは何ですか?

+0

ちょうど明確にするために、あなたは 'PicturesDeleteAll'複数回実行する必要があります意味ですか?ループループを数回(つまり、画像ごとに1回)見ていることには言及していません。あなたはエラーメッセージを受け取っているのか、それともそれだけを言っていますか?各パス上のすべての画像を上映せず、変更を加えて毎回無作為にピックアップします。 –

+0

はいPicturesDeleteAllを何回か実行して、ドキュメント上のすべてのイメージを削除する必要があります。私はjavascriptコードを1回だけ実行します。多くのファイルでこれをやっているのであれば最適ではありません。エラーメッセージは表示されず、すべての画像を削除するのに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

最初に1つはエラーを出し、2つ目は仕事をしました。どうもありがとう!ちょうどそれがうまく動作するかどうかを確認する – AK0101

+1

@ AK0101それを正しいとマークできますか.... –

+0

これは、セクションを削除するためにこれを採用することができます。例えば、 "削除するトップセクション"下のセクションを削除する "私はそれをやるだろうか?私はこのセクションを削除することを知っているActiveDocument.Sections(x).Range.Deleteここでxはセクション番号 – AK0101