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

时间:2010-03-29 22:26:36

标签: excel vba forms ms-access access-vba

假设我在Microsoft Access表单上有一个嵌入式Excel电子表格。我称之为对象框架

ExcelFrame

我在名为

的表单上添加了一个文本框
txtA1

我在名为

的表单上添加了一个按钮
cmdInsert

我想在文本框中输入“Hello World”,单击按钮并将其显示在该电子表格的A1单元格中。我用什么VBA来实现这个目标?

由于

2 个答案:

答案 0 :(得分:2)

您可以自动化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类似。

答案 1 :(得分:0)

永远不会太晚,对吗?

请假设您已经创建了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。