Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
已关闭工作簿的Excel VBA查询_Excel_Export To Excel_Vba - Fatal编程技术网

已关闭工作簿的Excel VBA查询

已关闭工作簿的Excel VBA查询,excel,export-to-excel,vba,Excel,Export To Excel,Vba,我一直在尝试调整excel VBA查询,以从关闭的工作簿中检索数据作为替代选项。我在网上找到了一个示例代码,并根据自己的需要对其进行了调整。在沮丧了几个小时后,我不太明白为什么它不起作用 当我尝试指定一个表时,出现错误Microsoft access数据库引擎找不到对象“CompanyInFo”。。。我尝试用定义的名称范围替换它,但仍然收到相同的错误 代码如下: Sub DataLookup() Dim str As String Dim Recset As ADODB.Recordset

我一直在尝试调整excel VBA查询,以从关闭的工作簿中检索数据作为替代选项。我在网上找到了一个示例代码,并根据自己的需要对其进行了调整。在沮丧了几个小时后,我不太明白为什么它不起作用

当我尝试指定一个表时,出现错误Microsoft access数据库引擎找不到对象“CompanyInFo”。。。我尝试用定义的名称范围替换它,但仍然收到相同的错误

代码如下:

 Sub DataLookup()

Dim str As String
Dim Recset As ADODB.Recordset
Dim query As String

Dim fileName As String
fileName = ActiveWorkbook.Sheets("DataValidation").Range("D18")

str = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
           "Data Source=" & fileName & ";" & _
           "Extended Properties=Excel 12.0"


query = "SELECT CompanyName FROM CompanyInFo"
    'Tried SELECT [CompanyName].[CompanyInFO] FROM [CompanyInFo]
    '      SELECT * From [CompanyInFo]
    ' Works SELECT * FROM [Cell Validation$] <--- Sheet

 'Error Prompts here 
Set Recset = New ADODB.Recordset
Recset.Open query, str



Cells.Clear
Range("A2").CopyFromRecordset Recset

Dim cell As Range, i As Long
With Range("A1").CurrentRegion
    For i = 0 To Recset.Fields.Count - 1
        .Cells(1, i + 1).Value = Recset.Fields(i).Name
    Next i
    .EntireColumn.AutoFit
End With
End Sub
表名为CompanyInFo,位于名为Cell Validation的表上。我想引用一个表,因为列表每天都会更新,有时会添加,有时删除。前面提到过,我确实尝试创建一个动态命名范围,但仍然收到相同的问题

我的想法: 1.我可能错过了一个推荐人? 2.我误用了th ADODB

感谢您的帮助和指导!
亚历克斯

我今天早上早些时候看过了。是因为缺少WHERE条款导致了这些问题吗?谢谢你的链接!否,因为您可以使用[Sheet1$]中的*而不使用where子句。我认为这里的问题在于您检索表的方式。您的表格在Excel中仅作为表格/命名区域存在。当你在查询电子表格时,你必须想象一下查询一个由行和列组成的网格,而不是作为对象分开的,比如表好的,我希望指向一个表并从中提取数据会很容易。我想我知道我想怎么做了。让我们看看!谢谢