使用Access VBA将多个csv组合到单个xslx中

我无法尝试将不同的CSV文件合并到一个单独的xslx工作簿文件中,作为MS Access中单独的工作表。 我查过的很多东西都是用于excel,但我需要能够在Access中使用它。 代码,我发现excel vba,我尝试在窗体中使用通常给我错误,大部分时间是“对象的方法_Global失败”,甚至当我参考excel库,以及添加Excel。 前缀到所有必要的对象,如工作簿和工作表。

编辑:

这是一个示例代码,我试图利用从csv到xslx的会话

Dim CSVfolder As String Dim XlsFolder As String Dim fname As String Dim wBook As Excel.Workbook CSVfolder = "C:\test\" XlsFolder = "C:\test\" fname = Dir(CSVfolder & "*.csv") Do While fname <> "" Set wBook = Excel.Workbooks.Open(CSVfolder & fname, Format:=6, Delimiter:=",") wBook.SaveAs XlsFolder & Replace(fname, ".csv", ""), FileFormatNum = 51 wBook.Close False fname = Dir Loop 

特别是错误被抓到SaveAs行,这次说对象'_Workbook'的方法'SaveAs'失败。

我想你想要使用Access vba将多个CSV文件合并成一个主Excel文件? 如果是这样的话,首先要制定一个计划,如何实现这一目标。

伪将是:

  1. search文件夹中的csv文件
  2. 打开csv文件并将表格/内容复制到主文件
  3. 保存主文件
  4. 做上面的步骤,直到没有更多的文件离开做

在代码中是:

 Private Sub Merge() 'Create Excel application instance Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") 'Setup workbooks Dim wB As Excel.Workbook Dim wBM As Excel.Workbook 'Csv files folder Dim CSVfolder As String CSVfolder = "C:\CsvFolder" 'Master Excel file path Dim mF As String mF = Application.CurrentProject.path & "\Master.xlsx" 'Where your master file is 'open the master file Set wBM = xlApp.Workbooks.Open(mF) 'search and open the client files Dim fname As String fname = Dir(CSVfolder & "\*.csv") Do While fname <> "" 'open the client file Set wB = xlApp.Workbooks.Open(CSVfolder & "\" & fname) 'copy the first sheet from client file to master file wB.Sheets(1).Copy After:=wBM.Sheets(wBM.Sheets.count) 'save master file wBM.Save 'close client file wB.Close False 'move to next client file fname = Dir() Loop xlApp.visible = True Set xlApp = Nothing End Sub 

请考虑在最终代码陷阱错误..希望这可以帮助。

如果你想在Access中使用,那很简单。 访问有什么叫做链接表。 这些表格不在Access中,而是保留在任何已存在的地方。 Access有一个链接,你会看到什么看起来像一个访问表。
执行此操作的命令是:

 DoCmd.TransferText acLinkDelim, , "tblTemp", "MyFile.csv", True 

你也想创build一个查询(我们称之为qryMaster),看起来像这样

 INSERT INTO tblMaster SELECT * FROM tblTemp 

这是代码

 Sub ImportCSV() Dim fname As String Dim CSVfolder As String CSVfolder = "C:\test\" fname = Dir(CSVfolder & "*.csv") Do While fname <> "" DoCmd.TransferText acLinkDelim, , "temp", fname, True CurrentDb.Execute ("qryMaster") Loop DoCmd.DeleteObject acTable, "tblTemp" End Sub 

在运行这个之前,你必须创buildtblmaster。 最简单的方法是手动导入1个文件。

您应该用正确的文件扩展名replace文件扩展名。 我没有查找它,但我假设51是一个* .xlsx文件。

  wBook.SaveAs XlsFolder & Replace(fname, ".csv", ".xlsx"), FileFormatNum = 51 

顺便说一下,你应该使用命名常量而不是幻数。