2010-03-29 4 views
3

Предположим, у меня встроенная электронная таблица Excel в форме Microsoft Access. Я называю кадра-объекта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 

Редактировать: Пример был основан на внешний файл рабочей книги, которая связана в качестве источника для кадра-объекта формы.

Чтобы связать таблицу, выберите «Создать из файла» радио-кнопки, установите флажок «Link» флажок, а также просматривать, чтобы выбрать книгу. Так я и делал это с Access 2007. Насколько я помню, это было похоже на Access 2003.

+0

@ Hans .... каждый раз, когда я пытаюсь, я получаю ошибку времени выполнения, сообщающую мне, «не удалось найти. Проверьте написание имени файла и убедитесь ...» Но мои объекты в форме точно указаны в приведенном выше примере кода. Кажется, он останавливается всякий раз, когда он пытается открыть рамку excel, а затем ничего. Вам нужно щелкнуть обратно на вкладку vba, чтобы увидеть ошибку. спасибо hans – Justin

+0

@Hans ... oooohh я вижу. Я даже не использовал предварительно сохраненный файл excel в форме. Я просто использовал функцию> INSERT> OBJECT> EXCEL SPREADSHEET, чтобы поместить таблицу в форму. Таким образом, вышеупомянутый метод означает использование независимого сохраненного файла excel, а затем, когда я хочу добавить его в форму, я должен ввести INSERT? CREATEFROMFILE> выберите его? – Justin

+0

@Hans ... Я сохранил файл excel на своем рабочем столе, а затем ввел его в форму. Все равно получите ту же ошибку, но это потому, что strPath не получает ничего. Когда я нахожусь, он говорит, что strPath = "" – Justin

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" 

Обратите внимание, что этот код требует ссылки на MS Excel в VBA.

Смежные вопросы