VBA Ошибка 70: ​​Отказано во время автоматизации IE

голоса
1

Я пытался создать быструю подпрограмму в VBA через Excel 2010 для автоматизации ввода списка URL-адресов через bit.ly и копирование сокращенных ссылок обратно, чтобы заменить их первоначальную связь. НО я получаю ошибку 70: Разрешение отказано ошибки во время выполнения по пути. У меня было несколько курсов, и это НАИБОЛЕЕ работает, но я не сильно знаком с VBA и может использовать некоторую помощь в отладке этого, если это возможно (было бы огромная помощь). Вот код:

Option Explicit

Dim IE As Object

Sub AutoAbbrev()

Set IE = CreateObject(InternetExplorer.Application)
Dim holdURL As String
Dim row_number As Integer
IE.Visible = True

For row_number = 101 To 112

holdURL = 

If Range(b & row_number).Value =  Then GoTo Skip

IE.navigate http://www.bitly.com 'load bit.ly

Do While IE.readyState <> 4
    DoEvents
Loop

IE.document.all(shorten_url).Value = Range(b & row_number).Value
IE.document.all(shorten_btn).Click

Do While IE.document.all(shorten_url).Value = Range(b & row_number).Value Or IE.document.all(shorten_url).Value = 
    DoEvents
Loop

holdURL = IE.document.all(shorten_url).Value
IE.document.all(shorten_url).Value = 
Range(b & row_number).Value = holdURL

Skip:
Next row_number

End Sub

Private Sub Command1_Click()

AutoAbbrev
End Sub

Private Sub Form_Unload(Cancel As Integer)
Set IE = Nothing
If TypeName(IE) <> Nothing Then Unload IE
Set IE2 = Nothing
If TypeName(IE2) <> Nothing Then Unload IE2

End Sub

Ошибка в основном брошена на этой линии после того, как программа запуска через одну или несколько итераций:

Do While IE.document.all(shorten_url).Value = Range(b & row_number).Value Or IE.document.all(shorten_url).Value = 
        DoEvents
    Loop

Если какие-либо конкретные рекомендации могут быть предоставлены, чтобы помочь мне над этим горбом, я очень ценю это. Благодаря!

Задан 25/09/2013 в 05:08
источник пользователем
На других языках...                            


1 ответов

голоса
1

Automating Internet Explorer всегда должен быть последним средством, это медленно и зависит от структуры страницы остается неизменным. Это всегда лучше выбрать для API, если таковой имеется, в данном случае Bitly предоставляют API для shotening ссылки, вам просто нужно, чтобы получить идентификатор аутентификации и введите его в поле ниже:

Public Function Shorten(url As String) As String

    Const token As String = "YOUR AUTHENTICATION TOKEN"
    Static oRequest As Object

    If oRequest Is Nothing Then Set oRequest = CreateObject("winhttp.winhttprequest.5.1")

    With oRequest
        .Open "GET", "https://api-ssl.bitly.com/v3/shorten?access_token=" & token & "&longUrl=" & url & "&format=xml", False
        .send
        If Left(Split(.responsetext, "txt>")(1), 2) = "OK" Then Shorten = Split(Split(.responsetext, "url>")(1), "<")(0)
    End With

End Function

Затем вы можете использовать выше в качестве функции в рабочем листе

Ответил 25/09/2013 в 10:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more