Excel VBA错误 - 运行时错误70:权限被拒绝

时间:2017-10-26 21:48:47

标签: excel vba excel-vba

我需要帮助处理为我编写的代码。代码如下。我工作的时间大概是70%,但每次约20行它会抛出

  

运行时错误70:拒绝权限

导致这种情况的原因是什么?有什么问题吗?另外,如何更改代码以跳过此类错误(或类似错误),然后转到下一行。

调试器抛出一行:If btn.ID = "gs_hdr_tsb" Then

完整的脚本如下。

Dim ie As Object
Private Sub CommandButton1_Click()
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate TextBox1.Text
    Do
    DoEvents
    Loop Until ie.readystate = 4
    Application.Wait (Now + TimeValue("00:00:02"))
End Sub

Private Sub CommandButton2_Click()
    Dim i As Long
    Dim prfl As String
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Dim INPTTG, btn As Object
    Dim Profile_link As String
    Dim H3tg As Object
    Dim iedata As Object
    If iedata Is Nothing Then
        Set iedata = CreateObject("InternetExplorer.Application")
    End If
    iedata.Visible = True
    For i = TextBox2.Text To TextBox3.Text
        prfl = ws.Range("E" & i).Value
        For Each INPTTG In ie.document.getelementsbytagname("input")
            If INPTTG.classname = "gs_in_txt" Then
                INPTTG.Value = ""
                INPTTG.Value = prfl
                Exit For
            End If
        Next INPTTG
        'button
        Application.Wait (Now + TimeValue("00:00:02"))
        For Each btn In ie.document.getelementsbytagname("button")
            If btn.ID = "gs_hdr_tsb" Then
                btn.Click
                Do
                DoEvents
                Loop Until ie.readystate = 4
                Application.Wait (Now + TimeValue("00:00:02"))
            End If
        Next btn
        'prfl
        For Each H3tg In ie.document.getelementsbytagname("h3")
            If H3tg.classname = "gsc_oai_name" And VBA.Trim(H3tg.innertext) = prfl Then
                Call GetData(H3tg.getelementsbytagname("a").Item(0).href, iedata, i)
                Exit For
            End If
        Next H3tg
        TextBox2.Text = i
    Next i
    MsgBox "Completed"
    iedata.Quit
    Set iedata = Nothing
    Application.DisplayAlerts = False
    ThisWorkbook.Save


End Sub

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

试试这个。

function rand_not_zero($arr) {
    $rand_key = array_rand($arr);
    $result = $arr[$rand_key];
    if (!$result)
        $result = rand_not_zero($arr);

    return $result;
}

$array = array($a, $b, $c, $d, $e);
echo rand_not_zero($array);

答案 1 :(得分:0)

关于此VB错误,StackOverflow上有多个答案。每个答案或情况在现实中都是唯一的-尽管每个现有答案都指出了不同的潜在根本原因(文件权限,文件夹权限,名称重用,范围等)。

我建议双击表示功能/代码的一侧以缩小根源,以标记断点(看起来像一个红点)(或者,您可以右键单击代码行) -选择Breakpoint,然后选择F8)。

接下来,运行您的代码,它将在您的断点处停止。然后,您可以单步执行/移入/移出代码,并从根本上找到负责引发错误代码的代码行。 (进入Shift+F8,进入Debug(进入{{1}}顶部菜单以查看更多选项))

确定了负责的代码行后,您就可以开始进一步查找了。

在我的情况下,我使用的是受保护的变量名称“ Date”(查找variable names)。将其重命名为其他名称后,问题已解决。