【问题标题】:translate javascript/jquery to vba将 javascript/jquery 翻译成 vba
【发布时间】:2016-06-14 08:38:35
【问题描述】:

我有这个删除 html 文件部分的 javascript/jquery 代码

    var divs = document.getElementsByTagName('div');
var d = divs.length;
for (var i = 1; i < d; i++) {
    if( $('.section'+i).innerHTML.includes("textfind")==true || $('.section'+i).innerHTML.includes("textfind2")==true){
    $('.section'+i).remove();
    }
}

我想为 word 编写与 vba 代码相同的函数

到目前为止我有这个代码

Dim i as Long
    For each objSect in ActiveDocument.sections
        if objSect.Range.Text like "textfind +i" Or "textfind2+i" then objSect.range.delete
    Next objSect

我将如何删除那些我找到字符串的特定部分

【问题讨论】:

    标签: javascript jquery vba ms-word


    【解决方案1】:

    你能在这里详细说明这个问题吗?而且,您想使用 VBA 删除 html 或 word 元素?

    EDIT :- 您可以创建一个变量并在其中存储一个字符串数组以进行查找和替换。 (注意:如果您只想清除文本,请使用空字符串代替“替换”字符串。)

    请参阅此链接以获取 VBA 查找和替换代码 VBA To find and replace a string in MS Word

    【讨论】:

    • 是的,使用 vba 我想做和 JavaScript 一样的事情
    • 我认为您在论坛的其他地方找到了解决方案。如果是这样,请将此问题标记为已关闭/已解决
    • @AK0101 不要忘记接受答案(即使不是我的!)
    【解决方案2】:

    RemoveTextfinders:将删除两个元素

    <div class="section1">textfind2</div>
    <div class="section2"><input name="textfind2" value="" /></div>
    

    但这些元素都不是

    <div class="section1" name="textfind2"></div>
    <div class="">textfind2</div>
    
    Sub RemoveTextfinders()
        Dim d, divs
        Set divs = document.getElementsByTagName("div")
        For Each d In divs
            If InStr(d.className, "section") And InStr(d.innerHTML, "textfind2") Then d.ParentNode.RemoveChild d
        Next
    End If
    

    更新我将两个 if 语句组合在一起,它们是多余的。
    如果任何 div 的类包含“section”,则 InStr(d.className, "section") 将评估为 true。
    这段代码对我来说运行良好。我一定弄错了你的html结构。能否请您发布一个html示例?

    【讨论】:

    • 那个没用,也忘了加节号见编辑过的操作
    • 它的html文件是用microsoft word打开的,所以它没有像div这样的html标签,所以需要使用activedocument.sections vba代码