通过图表名称将多个工作表从Excel文件导入到多个表中

你好,谢谢你的帮助。 我正在把一个看似简单的Access数据pipe理解决scheme放在我们这里的办公室里使用,而且我很麻烦,因为我的vba背景最好是最less的。

我在这里有两个相关但是断开连接的Access 2007应用程序,我需要一个系统让用户轻松导入和导出这些信息。 我已经有一个脚本工作现在将所有的表格从应用程序导出到一个单独的excel文件,每个表格作为一个不同的工作表,问题是,当我去导入它似乎只能find第一张导入。

我希望find的是一种迭代每个工作表的方法,获取工作表名称,然后根据工作表名称将这些数据合并到表中。

澄清:

  • 应用程序A的多个副本被发送到各个部门
  • 应用程序A:用户在表格中input信息
  • 应用程序A:用户按命令运行导出macros
  • 每个表格都创buildExcel文件作为具有匹配名称的工作表(例如tblCourse,tblStudent,tblFaculty等)
  • 应用程序B的用户可以收到excel电子表格
  • 应用程序B:用户按命令运行导入脚本(这是我正在寻找的解决scheme)
    • 提示用户input文件位置
    • 导入脚本打开Excel工作簿
    • 脚本遍历每个工作表,读取名称,并将数据导入到匹配名称的表中

预先感谢您提供的任何帮助,非常感谢。

编辑

工作脚本(非常感谢grahamj42的帮助):

Private Sub Command101_Click() 'Dim excelapp As New Excel.Application Dim excelApp As Object Set excelApp = CreateObject("Excel.Application") 'Dim excelbook As New Excel.Workbook Dim excelbook As Object Set excelbook = excelApp.Workbooks.Add 'Dim excelsheet As New Excel.Worksheet 'Dim excelsheet As Object 'Set excelsheet = excelbook.Sheets Dim intNoOfSheets As Integer, intCounter As Integer Dim strFilePath As String, strLastDataColumn As String Dim strLastDataRow As String, strLastDataCell As String strFilePath = "C:\Users\UserName\Documents\Export\DatabaseExport03-28-2013.xlsx" Set excelbook = excelApp.Workbooks.Open(strFilePath) intNoOfSheets = excelbook.worksheets.Count Dim CurrSheetName As String For intCounter = 1 To intNoOfSheets excelbook.worksheets(intCounter).Activate DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, ActiveSheet.Name, _ strFilePath, True, _ excelbook.Worksheets(intCounter).Name & "!" & _ Replace(excelbook.Worksheets(intCounter).UsedRange.Address, "$", "") Next excelbook.Close excelApp.Quit Set excelApp = Nothing End Sub 

请注意,在DoCmd.TransferSpreadsheet命令中,HasFieldNames属性在此设置为“True”,因为我的电子表格将字段名称导出为列标题。

在不select任何内容的情况下使用select将在保存时引用工作表中的选定单元格。 虽然我没有看到,在你的情况下,为什么这应该是在表外,你可以做得更好,没有使用Worksheet.UsedRangeselect任何东西:

 For intCounter = 1 To intNoOfSheets DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, Activesheet.Name, _ strFilePath, True, _ excelbook.Worksheets(intCounter).Name & "!" & _ Replace(excelbook.Worksheets(intcounter).UsedRange.Address, "$", "") Next