我有以下代码,它从我的 MS Access(一个小型酒店预订数据库)表单中获取某些字段并填充所述 Excel 文件中定义的单元格。
Dim objXLApp As Object
Dim objXLBook As Object
Set objXLApp = CreateObject("Excel.Application")
Set objXLBook = objXLApp.Workbooks.Open("Y:\123files\File\Hotel Reservation.xls")
objXLApp.Application.Visible = True
objXLBook.ActiveSheet.Range("B2") = Me.GuestFirstName & " " & GuestLastName
objXLBook.ActiveSheet.Range("C2") = Me.PhoneNumber
objXLBook.ActiveSheet.Range("E2") = Me.cboCheckInDate
objXLBook.ActiveSheet.Range("F2") = Me.cboCheckOutDate
objXLBook.ActiveSheet.Range("H2") = Me.RoomType
objXLBook.ActiveSheet.Range("I2") = Me.RoomNumber
End Sub
我怎样才能继续将新访客填充到下一行的同一个 Excel 文件中?
答案1
或者,如果您(可能出于其他原因)确实想通过 VBA 执行此操作,则仅针对此处的确切问题提供一个简单的答案。 (老实说,我的建议是在 Access 中创建一个报告并完全转储 excel 文件),以下非常简单的 VBA 代码将执行您想要的操作...
Dim i as Integer
i = ObjXLBook.ActiveSheet.UsedRange.Rows.Count
ObjXLBook.ActiveSheet.Cells(i + 1, 2).Value = Me.GuestFirstName & " " & GuestLastName
ObjXLBook.ActiveSheet.Cells(i + 1, 3).Value = Me.PhoneNumber
答案2
你应该读http://office.microsoft.com/en-ca/access-help/import-export-and-link-data-between-access-and-excel-HP001095095.aspx,它将帮助您将 MS Access 数据与 MS Excel 电子表格链接起来,在这个简单的情况下不需要 VBA。
摘抄:
开始导出操作
显示步骤 1:确定要导出的数据
首先找到数据库以及数据库中包含要导出的数据的对象。您可以导出表、查询、表单或报告。例如,您可以导出存储在“客户”表中的客户数据,或导出整个“产品”目录报告。
注意 您不能导出数据访问页(数据访问页:为查看和使用来自 Internet 或 Intranet 的数据而设计的网页。其数据通常存储在 Access 数据库中。)、宏和模块。
显示步骤 2:决定从哪里开始导出操作
....
您可以从数据库窗口(数据库窗口:在 Access 2003 及更早版本中,打开数据库或项目时出现的窗口。它显示创建新数据库对象和打开现有对象的快捷方式。在更高版本中,它被导航窗格取代。)或在视图中打开时导出对象。下表描述了视图如何影响导出的内容。
注释 不能从设计视图或 SQL 视图导出数据。 对象 视图/窗口 导出的内容 表、查询、表单 数据库窗口 所有字段和记录 表、查询、表单 数据透视表和数据透视图视图 基础记录源中的所有字段和记录,无论这些字段是否实际包含在视图中。 表、查询、表单 数据表视图 如果只想导出部分数据,可以选择它,然后选择仅导出选定的数据。也可以选择导出整个数据表。 表单 表单视图 基础记录源中的所有字段和记录,无论这些字段是否实际包含在视图中。 报表 数据库窗口、打印预览和布局预览 组页眉和详细信息部分中的文本框中包含的所有数据,以及组页脚中包含带有 Sum 函数的表达式的任何文本框。 Access 使用 Excel 的大纲功能在 Excel 中设置报表的格式。有关如何将报表导出到 Excel 的详细信息,请参阅如何将报表输出到 Microsoft Excel。有关如何在 Excel 中处理报表的详细信息,请参阅 Excel 帮助中有关使用大纲的主题。
显示步骤 3:确定导出操作的目标文件
在导出操作期间,系统将提示您指定目标文件的名称。如果不存在具有您指定名称的文件,则会创建一个新文件。如果该文件存在,则会发生以下情况之一:
* If you are exporting a table or query and you don't select the Save Formatted check box during the export operation, the file will not be overwritten. A new worksheet will be added to the file with the same name as the object that is being exported. If a worksheet already exists with that name, Access will prompt you to either replace the contents of the corresponding worksheet, or specify a different name for the new sheet.
选中保存格式复选框会使工作表继承与数据表类似的格式设置,但会覆盖工作表的现有内容。
* If you are exporting a form or a report, the file will always be overwritten. All of its existing worksheets will be removed, and a new worksheet with the same name as the exported object will be created.
显示步骤 4:导出某些数据类型和控件之前应了解的事项
* Pictures and objects All graphical elements, such as a logo, background picture, and contents of OLE object fields that are part of the exported data will not be exported.
* Graph When you export a form or a report that contains a Microsoft Graph object, the graph object does not get exported. To resolve this situation, see How to export a graph from Access to Excel.
* Null values Sometimes, Null values get replaced with the data that should be in the adjacent column in the resulting worksheet. For more information on when and why this problem occurs, and how to resolve it, see Nulls replaced with next field's data when you export to Excel.
* Calculated values The expression that is used to calculate the values is not exported to Excel. Only the results of the expressions get exported.
* Date values Date values earlier than Jan 1, 1900 do not get exported — the corresponding cell in the worksheet will contain a Null value, instead. For more information about how to resolve this, see Exporting dates may result in nulls or cause "Numeric Field Overflow" errorExporting dates may result in nulls or cause "Numeric Field Overflow" error.
* Check boxes If you start the export operation from the Database window (Database window: In Access 2003 and earlier, the window that appears when a database or project is opened. It displays shortcuts for creating new database objects and opening existing objects. In later versions, it is replaced by the Navigation Pane.) or in Form view, check boxes on forms will not get exported. The corresponding column in the worksheet will display "#". To solve this situation, open the form in Datasheet view before exporting it. The corresponding column in the worksheet will contain TRUE or FALSE, depending on the selected status of the check box in the form.
* Subreports and subforms Subreports are exported, but subforms will be ignored.
显示步骤 5:开始导出操作
- 如果要导出的对象未打开,请在数据库窗口(数据库窗口:在 Access 2003 及更早版本中,打开数据库或项目时出现的窗口。它显示创建新数据库对象和打开现有对象的快捷方式。在更高版本中,它被导航窗格取代。)中单击对象的名称。如果仅保存数据表的一部分,请打开数据表并选择数据表的该部分,然后再继续。
- 在文件菜单上,单击导出。
在“保存类型”框中,单击“Microsoft Excel 5-7”或“Microsoft Excel 97-2003”。
注意:如果在“文件类型”框中没有看到 Microsoft Excel,则是因为注册表中所需驱动程序的路径无效。有关如何更正此问题的详细信息,请参阅找不到可安装的 ISAM 错误消息。
单击“保存位置”框右侧的箭头,然后选择要保存到的驱动器或文件夹。
- 在文件名框中,输入文件的名称(或使用建议的名称)。
- 选中保存格式复选框。
- 执行以下操作之一:* 如果您正在保存数据表,请单击“导出全部”以保存整个数据表,或者如果您在步骤 1 中选择了数据表的一部分,请单击“保存选择”。* 对于所有其他数据库对象,请单击“导出”。
显示步骤 6:查看 Excel 工作表
打开工作表并确保数据已完全导出。查找单元格上的错误指示符(绿色三角形)或错误值(以“#”开头的字符串,而不是数据)。有关故障排除错误指示符和错误值的更多信息,请参阅 Excel 帮助。
在检查工作表中的错误时,还要检查是否有空白或缺失的列以及空单元格。如果发现严重问题,请在源数据库中更正这些问题,然后重复导出操作。
有关详细的疑难解答信息,请参阅 Access 中的导出疑难解答。将 Access 数据导入 Excel 的其他方法
除了导出之外,您还可以使用以下技术将数据从 Access 导入 Excel。
* Cut or copy data from Access and paste it into an Excel worksheet. For more information about how to do this, see the section "Copy or move records or data from multiple fields in Microsoft Access to another application" in the topic Copy or move data.
* Export data by using code. You can write a macro or a Visual Basic for Applications (VBA) procedure to export data programmatically. For more information about how to do this, see Export data programmatically.
* Load Access data in an instance of Excel.
显示如何?
- 在数据库窗口(数据库窗口:在 Access 2003 及更早版本中,打开数据库或项目时出现的窗口。它显示创建新数据库对象和打开现有对象的快捷方式。在更高版本中,它被导航窗格取代。)中,单击要保存并加载到 Excel 中的数据表、表单或报告的名称。如果只加载数据表的一部分,请打开数据表,然后选择数据表的该部分,然后再继续。
在“工具”菜单上,指向“Office 链接”,然后单击“使用 Microsoft Excel 分析”。
- 将 Microsoft Access 数据导出为可扩展标记语言 (XML) 文件,然后可以将其导入 Excel。有关如何将 Access 数据导出为 XML 的更多信息,请参阅将 Access 数据导出为 XML。
....