我正在尝试在名为“ AtwickShortfall”的excel电子表格中选择一个单元格值,如下所示:
StrSql = "SELECT AtwickShortfall FROM [" & Glob_WsheetNameTradeLogOpsActions & "$AtwickShortfall]"
显然不起作用;有人可以告诉我正确的语法吗?
AtwickShortfall单元格值是表单中其他值的总和;该电子表格中根本没有表格。
更新1
尝试了这种语法
StrSql = "SELECT [AtwickShortfall] FROM [" & Glob_WsheetNameTradeLogOpsActions & "$]"
我收到错误消息“ 没有为一个或多个必需参数提供值”
更新2
按照@Dick Kusleika的答案修改我的代码后,我现在有了这段代码
StrSql = "SELECT * FROM [AtwickShortfall]" ' & Glob_WsheetNameTradeLogOpsActions & "$AH34]"
Debug.Print (StrSql)
Set RecSet = ConnObj.Execute(StrSql)
If Not (RecSet Is Nothing) Then
With RecSet
If Not (.BOF) And Not (.EOF) Then
Debug.Print RecSet.Fields(0).Value
Else
'UdtKpi.HornInjMeterSum = 0
End If
End If
End With
End If
没有错误,但是Recodset为空(BOF为true); AtwickShortfall的值是一个当前为0的公式。我还尝试删除公式,并用0填充单元格,但结果相同:BOFF记录集为真
更新3
我找到了解决方案,但是请看下面的屏幕截图
单元格AtwickShortfall是我现在在AH列上添加值125的原因,为什么此代码有效?
StrSql = "SELECT Atw FROM [Operational_Actions$AH33:AH34]"
为什么将“ atw”识别为我给出的范围的标头? 如果我将以上查询更改为
StrSql = "SELECT Atw FROM [Operational_Actions$AH34:AH34]"
我得到一个epty记录集; excel对我如何工作没有意义;请注意,我尚未实现工作表数据,而是将其提供给我
答案 0 :(得分:1)
我认为,由于命名范围位于工作簿级别(而不是工作表级别),因此您无法指定它所在的工作表。指定工作表时,它正在寻找一个名为range的工作表级别。这对我有用。
Sub getcell()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\99991-dc01\99991\dkusleika\My Documents\testadonamedrange.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=NO"";"
Set rs = cn.Execute("select * from [AtwickShortfall]")
Debug.Print rs.Fields(0).Value
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub