Как открыть гиперссылку из ссылки на ячейку? - PullRequest
0 голосов
/ 04 июня 2019

Я попытался изменить приведенный ниже код, чтобы открываемая веб-страница принадлежала URL-адресу, вставленному в определенную ячейку; С5 из листа под названием «Главная страница». Это необходимо, так как URL будет часто меняться.

Ранее код был .navigate2 "www.example.com".

Теперь я вставил ".MainPage.Range("c5").Hyperlinks(1).Follow" в код в попытке открыть URL из указанной ячейки.

Однако это вернуло следующую ошибку:

Run-time'438'error - объект не поддерживает это свойство или метод.

Является ли это результатом того, что IE не может первоначально идентифицировать этот URL? Любые идеи о том, как сделать эту функцию соответствующим образом, приветствуются.

Public Sub GetData()
    Dim ie As Object, hTable As HTMLTable, clipboard As Object, ws1 As Worksheet, MainPage As Worksheet
    Set ws1 = ThisWorkbook.Worksheets("Margin Comparison")
    Set MainPage = ThisWorkbook.Worksheets("Run VBA")
    Set ie = CreateObject("InternetExplorer.Application")
    Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

    With ie
        .Visible = True
        MainPage.Range("c4").Hyperlinks(1).Follow

        With .document
            If .querySelectorAll(".offer-close").Length > 0 Then .querySelector(".offer-close").Click
            .querySelector(".tools-icon").Click
            If .querySelectorAll("[title='Change to decimal odds']").Length > 0 Then .querySelector("[title='Change to decimal odds']").Click
        End With
        While .Busy Or .readyState < 4: DoEvents: Wend
        Set hTable = .document.querySelector(".eventTable")
        clipboard.SetText hTable.outerHTML
        clipboard.PutInClipboard
        ws1.Range("A1").PasteSpecial
        Dim cutOff As Range
        Set cutOff = ws1.Columns(1).Find("QuickBet")
        If Not cutOff Is Nothing Then ws1.Rows("1:" & cutOff.Row).EntireRow.Delete
    .Quit

Ответы [ 3 ]

1 голос
/ 04 июня 2019

MainPage не является собственностью ie

.MainPage.Range("c5").Hyperlinks(1).Follow

должно быть

MainPage.Range("c5").Hyperlinks(1).Follow
0 голосов
/ 05 июня 2019

Какую версию Excel вы используете? Я попытался протестировать следующий код в Excel 2016, все работает хорошо, вы можете попробовать создать новый лист и снова протестировать следующий код: (В моем примере я создаю лист с именем «Главная страница», затем добавляю ссылку в ячейке С5)

Dim ie As Object, MainPage As Worksheet
Set MainPage = ThisWorkbook.Worksheets("Main Page")
MainPage.Range("c5").Hyperlinks(1).Follow

Кроме того, вы также можете сначала попытаться получить адрес гиперссылки, используя метод Navigate для перехода на веб-сайт. Код как ниже:

Dim ie As Object, MainPage As Worksheet

Set ie = CreateObject("InternetExplorer.Application")
Set MainPage = ThisWorkbook.Worksheets("Main Page")

ie.Visible = True
ie.Navigate MainPage.Range("c5").Hyperlinks(1).Address
0 голосов
/ 04 июня 2019

Это работает для меня:

Sub ytrewq()
    Sheets("Main page").Range("C5").Hyperlinks(1).Follow
End Sub

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...