【问题标题】:Import a query from Access into Excel based on an adjustable input根据可调整的输入将查询从 Access 导入 Excel
【发布时间】:2018-02-13 07:06:00
【问题描述】:

我想将一个查询从 Access 导入 Excel 电子表格。我希望代码可以在单元格 B9 的工作表 1 上进行调整,我可以键入出现在 Access 中的查询名称。所以每当我想导入一个新查询时,我只需要更改 B9 中的名称。我当前的 VBA 对查询的名称进行了硬编码,但我不确定如何更改它。这是我到目前为止导入列出的特定查询的内容。

Sub GetQuery()

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim i As Long
Dim wsh As Worksheet
Set dbs = DBEngine.OpenDatabase("C:\Desktop\DataProject\Database.accdb")
Set rst = dbs.OpenRecordset("Query One")
Set wsh = Worksheets("Sheet1")
For i = 0 To rst.Fields.Count - 1
    wsh.Cells(1, i + 1).Value = rst.Fields(i).Name
Next
wsh.Range("A1").Resize(ColumnSize:=rst.Fields.Count).Font.Bold = True
wsh.Range("A2").CopyFromRecordset rst
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing

结束子

任何帮助将不胜感激!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    好吧,不确定这是否真的有用,但也许您可以根据自己的需要进行调整:

    Option Explicit
    Dim ValueB9 As String
    
    Private Sub Worksheet_Calculate()
    
    If ThisWorkbook.Worksheets("Sheet1").Range("B9").Value = "" Or ThisWorkbook.Worksheets("Sheet1").Range("B9").Value = ValueB9 _
        Or Left(ThisWorkbook.Worksheets("Sheet1").Range("B9").Formula, 1) <> "=" Then
        Exit Sub
    Else
        On Error GoTo ErrorHandle:
        ValueB9 = ThisWorkbook.Worksheets("Sheet1").Range("B9").Value
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
        Dim i As Long
        Dim wsh As Worksheet
        Set dbs = DBEngine.OpenDatabase("C:\Desktop\DataProject\Database.accdb")
        Set rst = dbs.OpenRecordset(ValueB9)
        Set wsh = Worksheets("Sheet1")
        For i = 0 To rst.Fields.Count - 1
            wsh.Cells(1, i + 1).Value = rst.Fields(i).Name
        Next
        wsh.Range("A1").Resize(ColumnSize:=rst.Fields.Count).Font.Bold = True
        wsh.Range("A2").CopyFromRecordset rst
        rst.Close
        Set rst = Nothing
        dbs.Close
        Set dbs = Nothing
    
    End If
    
    Exit Sub
    
    ErrorHandle:
    If Err.Number = 3078 Then
        MsgBox "Query name is wrong"
    Else
        MsgBox Err.Description, vbCritical, "Error number " & Err.Number
    End If
    End Sub
    

    每次您在 Sheet1 的单元格 B9 中输入查询名称时,都会触发此代码。您必须像这样在单元格中输入名称:

    ="YOUR QUERY NAME"
    

    如果您不像公式那样键入它(例如,如果您只是键入查询的名称),它将不会触发。如果输入错误的查询名称,则会抛出错误。

    尝试使其适应您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2016-11-14
      • 2010-12-04
      • 1970-01-01
      相关资源
      最近更新 更多