查询命名的单个单元格范围vba

时间:2020-07-07 14:08:39

标签: vba

我正在尝试在名为“ 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

我找到了解决方案,但是请看下面的屏幕截图

enter image description here

单元格AtwickShortfall是我现在在AH列上添加值125的原因,为什么此代码有效?

StrSql = "SELECT Atw FROM [Operational_Actions$AH33:AH34]"

为什么将“ atw”识别为我给出的范围的标头? 如果我将以上查询更改为

StrSql = "SELECT Atw FROM [Operational_Actions$AH34:AH34]"

我得到一个epty记录集; excel对我如何工作没有意义;请注意,我尚未实现工作表数据,而是将其提供给我

1 个答案:

答案 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