gpt4 book ai didi

excel - 按工作表名称将多个工作表从excel文件导入多个表

转载 作者:行者123 更新时间:2023-12-04 19:48:42 26 4
gpt4 key购买 nike

您好,感谢您的帮助。我正在整理一个看似简单的 Access 数据管理解决方案,供我们这里的办公室使用,但我遇到了麻烦,因为我在 vba 方面的背景充其量是最少的。

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

我希望找到一种方法来遍历每个工作表,获取工作表名称,然后根据工作表名称将该数据合并到表中。

澄清一下:

  • 应用程序 A 的多个副本被发送到各个部门
  • 应用程序 A:用户将信息输入表格
  • App A:用户按下命令运行导出宏
  • Excel 文件是用每个表创建的,作为具有匹配名称(例如 tblCourse、tblStudent、tblFaculty 等)的工作表
  • 应用程序 B 的用户收到 excel 电子表格
  • App B:用户按下命令运行导入脚本(这是我正在寻找的解决方案)
    • 提示用户输入文件位置
    • 导入脚本打开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”,因为我的电子表格将字段名称作为列标题导出。

最佳答案

您在未选择任何内容的情况下使用 Selection 将引用保存时工作表中的选定单元格。虽然我不明白,在你的情况下,为什么这应该在表格之外,你可以这样做更好,而无需使用 Worksheet.UsedRange 选择任何内容:

For intCounter = 1 To intNoOfSheets

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

Next

关于excel - 按工作表名称将多个工作表从excel文件导入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com