You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac Excel(2016及以上)替代ADODB读取数据的方案

Mac Excel 2016+ 替代ADODB的数据处理方案

由于Mac Excel不支持ADODB组件,以下是两种原生可用的替代方案,实现你原脚本中提取customer和orderNo列的需求:

方案1:使用Excel原生VBA对象处理

直接操作工作表的ListObject(结构化表格)或Range对象,兼容性强,无需依赖外部组件。

代码示例(基于结构化表格)

Sub GetCustomerOrderData()
    Dim ws As Worksheet
    Dim tbl As ListObject
    Dim dataArr As Variant
    Dim resultArr As Variant
    Dim i As Long
    Dim custCol As Long, orderCol As Long
    
    ' 指向目标工作表
    Set ws = ThisWorkbook.Worksheets("OrderData")
    ' 获取工作表中的第一个结构化表格
    Set tbl = ws.ListObjects(1)
    
    ' 定位目标列的索引
    custCol = tbl.ListColumns("customer").Index
    orderCol = tbl.ListColumns("orderNo").Index
    
    ' 将表格数据读取到数组(提升处理速度)
    dataArr = tbl.DataBodyRange.Value
    ' 初始化结果数组
    ReDim resultArr(1 To UBound(dataArr, 1), 1 To 2)
    
    ' 遍历提取指定列数据
    For i = 1 To UBound(dataArr, 1)
        resultArr(i, 1) = dataArr(i, custCol)
        resultArr(i, 2) = dataArr(i, orderCol)
    Next i
    
    ' 将结果输出到新工作表
    Dim newWs As Worksheet
    Set newWs = ThisWorkbook.Worksheets.Add
    newWs.Range("A1:B1").Value = Array("customer", "orderNo")
    newWs.Range("A2").Resize(UBound(resultArr, 1), 2).Value = resultArr
End Sub

适用场景

  • 简单的列提取、基础筛选或数据遍历
  • 需要完全用VBA控制处理流程

方案2:使用Power Query(Get & Transform)

Mac Excel 2016及以上版本支持Power Query,可实现类似SQL的可视化数据处理,也能通过VBA自动化执行。

手动操作步骤

  1. 选中OrderData工作表中的数据区域/表格
  2. 点击「数据」选项卡 → 「从表格/范围」(普通区域选「从范围」)
  3. 在Power Query编辑器中,选中customer和orderNo列,右键选择「删除其他列」
  4. 点击「关闭并上载」,将结果加载到新工作表

VBA自动化示例

Sub PowerQueryExtractData()
    Dim qry As WorkbookQuery
    Dim conn As WorkbookConnection
    Dim mScript As String
    
    ' 定义Power Query的M语言脚本(实现列筛选)
    mScript = "let" & vbCrLf & _
              "    Source = Excel.CurrentWorkbook(){[Name=""OrderData""]}[Content]," & vbCrLf & _
              "    KeepTargetColumns = Table.SelectColumns(Source, {""customer"", ""orderNo""})" & vbCrLf & _
              "in" & vbCrLf & _
              "    KeepTargetColumns"
    
    ' 添加新查询
    Set qry = ThisWorkbook.Queries.Add(Name:="ExtractCustomerOrder", Formula:=mScript)
    
    ' 创建连接并加载结果
    Set conn = ThisWorkbook.Connections.Add2( _
        Name:="ExtractCustomerOrderConn", _
        Description:="Extract customer and order number data", _
        ConnectionString:="OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=ExtractCustomerOrder;Extended Properties="""""", _
        CommandText:="SELECT * FROM [ExtractCustomerOrder]", _
        ImportRelationships:=False)
    
    conn.OLEDBConnection.CommandType = xlCmdSql
    conn.Refresh
    
    ' 将结果输出到新工作表
    With ThisWorkbook.Worksheets.Add
        .Name = "QueryResult"
        .Range("A1").ListObject.QueryTable.Connection = conn.OLEDBConnection
        .Range("A1").ListObject.QueryTable.Refresh
    End With
End Sub

适用场景

  • 复杂的数据转换、筛选、聚合(如分组统计、多表合并)
  • 偏好类似SQL的声明式数据处理逻辑

内容的提问来源于stack exchange,提问作者EvaHHHH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:23:16