MS Access 2003 — встроенная электронная таблица Excel в форме Access
-
23-09-2019 - |
Вопрос
Допустим, у меня есть встроенная электронная таблица Excel в форме Microsoft Access.Я вызываю рамку объекта
ExcelFrame
и я добавляю текстовое поле в форму под названием
txtA1
и я добавляю кнопку в форму под названием
cmdInsert
Я хочу ввести «Hello World» в текстовое поле, нажать кнопку, и она появится в ячейке A1 в этой электронной таблице.Какой VBA мне использовать для этого?
Спасибо
Решение
Вы можете автоматизировать 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 было похоже.
Другие советы
Никогда не поздно, правда?
Укажите, что вы уже создали объект 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.