MS Access 2003 — встроенная электронная таблица Excel в форме Access

StackOverflow https://stackoverflow.com/questions/2541665

Вопрос

Допустим, у меня есть встроенная электронная таблица 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top