Frage

Lassen Sie sich sagen, ich habe eine eingebettete Excel-Tabelle auf einem Formular Microsoft Access. Ich nenne den Objektrahmen

ExcelFrame

und ich fügen Sie ein Textfeld auf dem Formular namens

txtA1

und ich fügen Sie eine Taste auf der genannten Form

cmdInsert

Ich will „Hallo Welt“ in das Textfeld einzugeben, klicken Sie auf die Schaltfläche und habe es in der Zelle A1 erscheint auf dieser Tabelle. Was VBA kann ich dies zu erreichen, verwenden?

Danke

War es hilfreich?

Lösung

Sie können Excel automatisieren, schreiben Sie Ihren Wert in das Arbeitsblatt, dann aktualisieren, um den Objektrahmen.

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

Bearbeiten : Das Beispiel wurde auf einer externen Arbeitsmappe Datei basiert, die ist verbunden als Quelle für den Objektrahmen des Formulars.

ein Arbeitsblatt zu verknüpfen, wählen Sie die " Aus Datei erstellen " Radio-Button, überprüfen Sie die " Link " Kontrollkästchen und durchsuchen Sie die Arbeitsmappe auszuwählen. Das ist die Art, wie ich es tat mit Access 2007. Soweit ich mich erinnere, war es ähnlich mit Access 2003.

Andere Tipps

Es ist nie zu spät, nicht wahr?

Geben Sie, dass Sie bereits das Excel-Objekt erstellt haben (wie im 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"

Beachten Sie, dass dieser Code erfordert einen Verweis auf MS Excel in VBA.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top