Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-制作翻译程序时ie.navigate功能出现问题_Vba_Excel_Internet Explorer - Fatal编程技术网

Excel VBA-制作翻译程序时ie.navigate功能出现问题

Excel VBA-制作翻译程序时ie.navigate功能出现问题,vba,excel,internet-explorer,Vba,Excel,Internet Explorer,我试图通过使ie可见(真实)来了解问题所在。事实证明,当我使用: ie.navigate "https://translate.google.com/#" & ilang & "/" & olang & "/" & cell.Value 它不会在应该的时候重新加载页面。 例如,请参阅以下图片: 因此,它会在地址栏中输入新的URL,但实际上不会导航到该URL。 代码在这里(子程序): 实际代码: 'A function called translat

我试图通过使ie可见(真实)来了解问题所在。事实证明,当我使用:

 ie.navigate "https://translate.google.com/#" & ilang & "/" & olang & "/" & cell.Value
它不会在应该的时候重新加载页面。 例如,请参阅以下图片:

因此,它会在地址栏中输入新的URL,但实际上不会导航到该URL。
代码在这里(子程序):

实际代码:

'A function called translate
Public Function Translate(r As Range, ilang As String, olang As String) As String
    'Declaring all variables
    Dim ie As InternetExplorer
    Dim y As Integer
    Dim ys As String
    Dim urmsg As String
    Dim result As String

    y = 0
    Set ie = New InternetExplorer

    ie.Visible = True

    For Each cell In r
        ie.navigate "https://translate.google.com/#" & ilang & "/" & olang & "/" & cell.Value
        Do While ie.Busy = True Or ie.readyState <> 4: DoEvents: Loop

        y = y + 1
        result = ie.document.getElementById("result_box").innerText
        Sheets("Sheet1").Range("G" & y).Value = result
    Next cell

    urmsg = MsgBox(ys & " Translations Executed...", vbOK, "Prompt")
    ie.Quit
    Translate = " "
End Function
“一个名为translate的函数
公共函数将(r作为范围,ilang作为字符串,olang作为字符串)转换为字符串
'声明所有变量
Dim ie作为InternetExplorer
Dim y作为整数
将Y作为字符串
Dim urmsg作为字符串
将结果变暗为字符串
y=0
Set ie=新的InternetExplorer
可见=真实
对于r中的每个单元格
即“导航”https://translate.google.com/#“&ilang&“/”&olang&“/”&cell.Value
当ie.Busy=True或ie.readyState 4:DoEvents:Loop时执行
y=y+1
结果=ie.document.getElementById(“结果框”).innerText
图纸(“图纸1”)。范围(“G”和y)。值=结果
下一个细胞
urmsg=MsgBox(ys&“已执行翻译…”,vbOK,“提示”)
即退出
Translate=“”
端函数
请告诉我是什么问题,这样我才能解决它。另外,如果代码非常复杂,并且有不必要的行,请对我放松,我只研究了VBA几天


谢谢。

您可以在此处查看如何解决Excel中的翻译问题:[1]或[2]。谷歌也有一个网站,你应该使用它,而不是刮网页(这可能是不合法的:检查谷歌的使用条款)。嗨。我不知道这样做是违法的,但是,我并没有将此代码用于商业用途,我只是在尝试学习这门语言。谢谢你的回复@PehI没有说这是非法的,但你需要检查谷歌的使用条款是否合法。大多数网站通常不允许自动抓取网页(商业和个人使用)。因此,您需要检查这一点,或者改用API。
'A function called translate
Public Function Translate(r As Range, ilang As String, olang As String) As String
    'Declaring all variables
    Dim ie As InternetExplorer
    Dim y As Integer
    Dim ys As String
    Dim urmsg As String
    Dim result As String

    y = 0
    Set ie = New InternetExplorer

    ie.Visible = True

    For Each cell In r
        ie.navigate "https://translate.google.com/#" & ilang & "/" & olang & "/" & cell.Value
        Do While ie.Busy = True Or ie.readyState <> 4: DoEvents: Loop

        y = y + 1
        result = ie.document.getElementById("result_box").innerText
        Sheets("Sheet1").Range("G" & y).Value = result
    Next cell

    urmsg = MsgBox(ys & " Translations Executed...", vbOK, "Prompt")
    ie.Quit
    Translate = " "
End Function