2010-03-29 77 views
3

假設我在Microsoft Access表單上有嵌入式Excel電子表格。我所說的對象框MS Access 2003 - 訪問表單上的嵌入式Excel電子表格

ExcelFrame 

,我叫

txtA1 

在窗體上添加一個文本框,我添加一個名爲

cmdInsert 

我想輸入「表單上的按鈕Hello World「放入文本框中,單擊該按鈕並使其出現在該電子表格的A1單元格中。我用什麼VBA來實現這個目標?

感謝

回答

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類似。

+0

@Hans ....每當我嘗試它,我得到一個運行時錯誤,告訴我「無法找到。檢查文件名的拼寫,並確保....」但我的表單上的對象是在上面的代碼/示例中正是命名的。它似乎停止每當它試圖打開Excel框架,然後什麼也沒有。您必須單擊回到vba選項卡查看錯誤。謝謝hans – Justin 2010-03-30 11:35:21

+0

@Hans ... oooohh我明白了。我甚至沒有在表單上使用預先保存的excel文件。我只是使用> INSERT> OBJECT> EXCEL SPREADSHEET將電子表格放置在表單上。所以上面的方法意味着使用一個獨立的已保存的excel文件,然後當我想將它添加到一個窗體時,我必須INSERT? CREATEFROMFILE>選擇它? – Justin 2010-03-30 15:09:20

+0

@Hans ...我將一個excel文件保存到我的桌面上,然後將其插入到表單中。仍然得到相同的錯誤,但這是因爲strPath沒有通過任何東西....當我通過它說strPath =「」 – Justin 2010-03-30 15:14:52

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的引用。