Я наконец заставил его работать и также смог решить Ошибка FROWN Power Query Error (список приведен ниже).
См. Синтаксис включения пути к файлу, используя back-ticks
. Также INNER JOIN заменяется на ",", а ON заменяется на WHERE предложение.
Перечисление шагов, которые я предпринял:
- Удалены все Power Queries в книге Excel.
- Установлены последние версии Office.
- 2016 Обновления 3 сентября со следующего сайта MS. Перезагрузил мою систему.
- Использовано Текстовый драйвер Microsoft Access . Вы также можете использовать ADO ACE.OLEDB.12 , но использовать тот же синтаксис для файлов CSV .
2-й И / ИЛИ 3-й пункт может иметьУстранена проблема, поскольку я не вижу, что она задокументирована на сайте MS (мои пробные версии и ошибки).
Для тех, кто может столкнуться с той же проблемой:
SQLСинтаксис запроса, как показано в приведенном ниже коде. Я также смог использовать этот же SYNTAX с ACE.OLEDB.12 Driver , и он работает быстро и хорошо в обоих случаях.
Option Explicit
Sub test()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim oCon As New ADODB.Connection
Dim oRs As New ADODB.Recordset
Dim strSql As String
Dim strCon As String
strCon = "Driver=Microsoft Access Text Driver (*.txt, *.csv);Dbq=" & ThisWorkbook.Path & ";Extensions=asc,csv,tab,txt;"
strSql = "SELECT n.*,a.[Address] "
strSql = strSql & " FROM `C:\Users\adam\Downloads`\Names.csv n"
strSql = strSql & ","
strSql = strSql & "`C:\Users\adam\Documents\TEST FOLDER`\Address.csv a"
strSql = strSql & " WHERE n.Name= a.Name"
oCon.Open strCon
Set oRs = Nothing
Set oRs = oCon.Execute(strSql)
' Sheet1.UsedRange.EntireRow.Delete
' Sheet1.Cells(1).CopyFromRecordset oRs
Dim oQT As QueryTable
On Error Resume Next
For Each oQT In Sheet1.QueryTables
oQT.Delete
Next oQT
Sheet1.ListObjects(1).Delete
On Error GoTo 0
Set oQT = Sheet1.ListObjects.Add(xlSrcQuery, oRs, Destination:=Sheet1.Cells(1, 1)).QueryTable
With oQT
.BackgroundQuery = False
.Refresh
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub