MS Access 2003 - Access 表单上的嵌入式 Excel 电子表格

Posted

技术标签:

【中文标题】MS Access 2003 - Access 表单上的嵌入式 Excel 电子表格【英文标题】:MS Access 2003 - Embedded Excel Spreadsheet on Access form 【发布时间】:2010-03-29 22:26:36 【问题描述】:

假设我在 Microsoft Access 表单上嵌入了 Excel 电子表格。我称对象框架

ExcelFrame

我在表单上添加了一个名为

的文本框
txtA1

我在表单上添加了一个按钮

cmdInsert

我想在文本框中输入“Hello World”,单击按钮并让它出现在该电子表格的 A1 单元格中。我用什么 VBA 来完成这个?

谢谢

【问题讨论】:

【参考方案1】:

您可以自动化 Excel,将值写入工作表,然后更新对象框架。

Private Sub cmdInsert_Click()
    Dim strPath As String
    Dim oExcel As Object
    Dim oSheet As Object

    Set oExcel = CreateObject("Excel.Application")
    oExcel.Visible = True

    strPath = Me.ExcelFrame.SourceDoc
    'Debug.Print strPath '
    oExcel.Workbooks.Open strPath
    Set oSheet = oExcel.ActiveSheet
    'Debug.Print oSheet.Name '

    oSheet.Range("A1").Value = Me.txtA1
    oExcel.ActiveWorkbook.Save
    oExcel.Quit
    Set oSheet = Nothing
    Set oExcel = Nothing
    'acOLEUpdate action requires Enabled = True '
    'and Locked = False '
    Me.ExcelFrame.Enabled = True
    Me.ExcelFrame.Locked = False
    Me.ExcelFrame.Action = acOLEUpdate
    Me.txtA1.SetFocus
    Me.ExcelFrame.Enabled = False
    Me.ExcelFrame.Locked = True
End Sub

编辑:该示例基于一个外部工作簿文件,该文件被链接作为表单对象框架的源。

要链接工作表,请选择“从文件创建”单选按钮,选中“链接”复选框,然后浏览以选择工作簿。这就是我使用 Access 2007 的方式。我记得,它与 Access 2003 类似。

【讨论】:

@Hans....每次我尝试它时,我都会收到一个运行时错误,告诉我“找不到。检查文件名的拼写,并确保....”但是我的表单上的对象的名称与上述代码/示例中的名称完全相同。每当它试图打开 excel 框架时,它似乎就停止了,然后什么也没有。您必须单击返回 vba 选项卡才能看到错误。谢谢汉斯 @Hans...哦哦哦我明白了。我什至没有在表单上使用预先保存的 excel 文件。我只是使用 > INSERT > OBJECT > EXCEL SPREADSHEET 将电子表格放在表单上。所以上述方法意味着使用一个独立保存的 excel 文件,然后当我想将它添加到表单时我必须插入? CREATEFROMFILE > 选择它? @Hans...我将一个 excel 文件保存到我的桌面上,然后将其插入到表单中。仍然得到同样的错误,但这是因为 strPath 没有通过任何东西....当我单步执行它时说 strPath = "" @Hans....啊,我明白了。如何将电子表格添加到链接而不是嵌入的表单?我可以吗?无论如何,谢谢汉斯! @Justin 我编辑了描述将工作表与 A2007 链接的答案。如果这对您不起作用,请告诉我,我将使用 A2003 启动另一台机器。【参考方案2】:

什么时候都不晚,对吧?

假设您已经创建了 Excel 对象(如在 OP 中):

Dim wb As Excel.Workbook, ws As Excel.Worksheet
Set wb = Me.ExcelFrame.Object
Set ws = wb.Worksheets(1)
ws.range("a1")= "Hello world"

请注意,此代码需要在 VBA 中引用 MS Excel。

【讨论】:

以上是关于MS Access 2003 - Access 表单上的嵌入式 Excel 电子表格的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 2003 + 到 SQL Server 2005 的链接表 + Windows 身份验证 = 慢

计数 MS-ACCESS 2003 列中的图像

在 MS Access 2003 上出现错误 (3163)

MS Access 2003 - 格式化导致列表框问题

如何在 MS Access 2003 中删除具有唯一 ID 的重复条目?

MS Access 2003 - Access 表单上的嵌入式 Excel 电子表格