将Access 2010结果表传输到Excel文件中的现有内容之后

我需要想出一个更新的VBA脚本,将当前内容之后的Access 2010请求的结果传输到现有的Excel文件中。

这是前面的脚本,与Access 97一起工作。

Private Sub CmdTransfert_Click() On Error GoTo Err_CmdTransfert_Click Dim Requete As QueryTable Dim appXL As Excel.Application Dim Classeur As Excel.Workbook Dim Cellule As Excel.Range Dim Plage As Excel.Range ' Bills that needs to be transfered DoCmd.OpenQuery "Liste_factures_numero" ' Select answers SendKeys "^a", True ' Copy SendKeys "^c", True ' Opening Excel Set appXL = CreateObject("Excel.Application") appXL.Visible = True 'Only XL 97 supports UserControl Property On Error Resume Next appXL.UserControl = True Set Classeur = appXL.Workbooks.Open("C:\Users\me\Desktop\copiedetravailvlvaccdb\reglements.xlsx") Set Cellule = Classeur.Worksheets(1).Cells(Classeur.Worksheets(1).Range("a1").CurrentRegion.Rows.Count + 1, 1) Cellule.Select ' Paste SendKeys "^v", True ' Cellule.PasteSpecial xlPasteValues ' Deleting titles Cellule.EntireRow.Delete 'Fixing date format Set Plage = Selection For Each Cellule In Plage If Cellule.Column = 2 Then If Cellule.Value <> "" Then Cellule.Value = CDate(Cellule.Value) End If End If Next ' Mise au format normal Range("A3:D3").Copy Plage.PasteSpecial Paste:=xlFormats Excel.Application.CutCopyMode = False ' Closing request DoCmd.Close acQuery, "Liste_factures_numero", acSaveNo Exit_CmdTransfert_Click: Exit Sub Err_CmdTransfert_Click: MsgBox Err.Description Resume Exit_CmdTransfert_Click End Sub 

我曾尝试在Sendkeys指令周围添加睡眠命令,但没有奏效。 结果没有被选中,因此没有被复制也没有被粘贴。

作为最后的手段,我尝试使用DoCmd.TransferSpreadsheet创build一个新的脚本,但我不知道如何添加新的内容。

 DoCmd.TransferSpreadsheet acExport, , "Liste_factures_numero", "C:\Users\me\Desktop\copiedetravailvlvaccdb\reglements.xlsx", True 

不过,正如所料,它会覆盖内容。 这是我第一次用VBA。

你可以改变这个:

 DoCmd.OpenQuery "Liste_factures_numero" ' Select answers SendKeys "^a", True ' Copy SendKeys "^c", True 

对此:

 DoCmd.OpenQuery "Liste_factures_numero" DoCmd.RunCommand acCmdSelectAllRecords DoCmd.RunCommand acCmdCopy 

和这个:

 ' Paste SendKeys "^v", True 

对此:

 Cellule.PasteSpecial Paste:=xlPasteValues 

此外,我必须补充说,这是通过macros实现从Access到Excel的复制粘贴的另一种方法:

  1. build立连接到Access文件;
  2. 从查询中获取数据到logging集;
  3. 将数据粘贴到Excel表格上;
  4. 在粘贴的单元格上使用格式(字体,大小等)。

就像这样,根据需要更改工作表/列A

 Dim r As Range Set r = ThisWorkbook.Worksheets(1).Range("A1").End(xlDown).Offset(1, 0) DoCmd.TransferSpreadsheet acExport, , "Liste_factures_numero" _ , ThisWorkbook.FullName & Chr(35) & "Sheet1", True, r.Address