如何使用ADO将记录从对Excel WEEKLY的访问中拉出

我正在尝试创建一个宏,该宏将每周从对Excel文件的访问中导出新记录。目前,我的代码已将其添加到Excel文件中,但是如何才能仅更新文件中已有的工作表呢?

Const ConStraccess As String = "xxxx;"

Sub CopyDataFomDatabase()

    Dim BrokerConn As ADODB.Connection
    Dim BrokerData As ADODB.Recordset
    Dim BrokerField As ADODB.Field

    Set BrokerConn = New ADODB.Connection
    Set BrokerData = New ADODB.Recordset

    BrokerConn.ConnectionString = ConStraccess
    BrokerConn.Open

    On Error GoTo CloseConnection

    With BrokerData
        .activeConnection = BrokerConn
        .Source = "SELECT * FROM xxxxx;"
        .LockType = adLockReadOnly
        .CursorType = adOpenForwardOnly
        .Open
    End With

    On Error GoTo CloseRecordset

    Worksheets.Add

    For Each BrokerField In BrokerData.Fields
        activeCell.Value = BrokerField.Name
        activeCell.Offset(0,1).Select
    Next BrokerField

    Range("A1").Select
    Range("A2").CopyFromRecordset BrokerData
    Range("A1").CurrentRegion.EntireColumn.AutoFit

CloseRecordset:
    BrokerData.Close

CloseConnection:
    BrokerConn.Close
speedisk 回答:如何使用ADO将记录从对Excel WEEKLY的访问中拉出

如果您已经知道工作表的名称,则只需在下面的代码中指定名称即可代替Sheet1。如果不存在,它将创建它。如果将其保留为空,则将在运行此代码的工作簿中选择活动的工作表。

注意:我假设它将在保存结果的工作簿上运行。如果不是这种情况,则必须将ThisWorkbook替换为ActiveWorkbook

Const ConStrAccess As String = "xxxx;"

Const sheetName As String = "Sheet1"

Sub CopyDataFomDatabase()

    Dim BrokerConn As ADODB.Connection
    Dim BrokerData As ADODB.Recordset
    Dim BrokerField As ADODB.Field

    Set BrokerConn = New ADODB.Connection
    Set BrokerData = New ADODB.Recordset

    BrokerConn.ConnectionString = ConStrAccess
    BrokerConn.Open

    On Error GoTo CloseConnection

    With BrokerData
        .ActiveConnection = BrokerConn
        .Source = "SELECT * FROM xxxxx;"
        .LockType = adLockReadOnly
        .CursorType = adOpenForwardOnly
        .Open
    End With

    On Error GoTo CloseRecordset

    Dim selectedWorksheet As Worksheet

    'If no name is given it will select the active one
    If sheetName = vbNullString Then
        Set selectedWorksheet = ThisWorkbook.ActiveSheet

    'If the sheet with this name does not exist,it will be created and activated
    'For checking if it exists: https://stackoverflow.com/a/44130825/
    ElseIf WorksheetFunction.IsErr(Evaluate("'" & sheetName & "'!A1"))    Then        
        Set selectedWorksheet = ThisWorkbook.Sheets.Add()
        selectedWorksheet.Name = sheetName
        selectedWorksheet.Activate

    'Simply actives the sheet   
    Else
        Set selectedWorksheet = ThisWorkbook.Worksheets(sheetName)
        selectedWorksheet.Activate

    End If

    For Each BrokerField In BrokerData.Fields
        ActiveCell.Value = BrokerField.Name
        ActiveCell.Offset(0,1).Select
    Next BrokerField

    Range("A1").Select
    Range("A2").CopyFromRecordset BrokerData
    Range("A1").CurrentRegion.EntireColumn.AutoFit

CloseRecordset:
    BrokerData.Close

CloseConnection:
    BrokerConn.Close
本文链接:https://www.f2er.com/2924727.html

大家都在问