Веб-сканирование с использованием Excel VBA на Mac - PullRequest
0 голосов
/ 03 августа 2020

Я знаю, что есть несколько похожих вопросов, но мне кажется, что ни одно из предыдущих решений не помогло. Я пробовал существующие макросы, веб-запросы, все, что угодно, но пока все они терпели неудачу. в табличную форму с помощью VBA. Мой компьютер - macOS 10.14.16 Mojave, а моя версия Excel - версия 16.39.

Я знаю, что объекты InternetExplorer не будут работать с моей ОС. Я также не могу создавать веб-запросы, несмотря на следующие шаги к тройнику.

Может ли кто-нибудь помочь мне найти способ доступа к источнику для веб-сайта? Большое спасибо.

1 Ответ

0 голосов
/ 03 августа 2020

Мне удалось получить эти данные только сейчас без особых проблем с помощью Excel на Windows.

  • Из меню: Данные / из Интернета
  • Введите URL-адрес, который вы предоставлено выше
  • Выберите «Table1» из списка навигатора
  • Нажмите «Загрузить» в нижней части диалогового окна

Если это решение не работает для вас Не могли бы вы помочь нам понять ваши ограничения?

Используя «Макрос записи» для этих шагов, я получаю следующий макрос:

Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveWorkbook.Queries.Add Name:="Table 1", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Web.Page(Web.Contents(""https://www.x-rates.com/table/?from=USD&amount=1""))," & Chr(13) & "" & Chr(10) & "    Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(Data1,{{""US Dollar"", type text}, {""1.00 USD"", type number}, {""inv. 1.00 USD"", type number}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 1"";Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Table 1]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_1"
        .Refresh BackgroundQuery:=False
    End With
End Sub
...