none
Daten in Excel bearbeiten.

    Frage

  • Hallo

    Ich möchte von Access aus Daten in Excel ändern. Dazu habe ich folgenden Testcode:

    Sub subModifyExcel()
        Dim strExcelName As String
        Dim xlWorkbook As Object
    
        strExcelName = "H:\Work\Einführung Access\TestExcel.xlsx"
        Set xlWorkbook = objExcel.Workbooks.Open(FileName:=strExcelName)
    
        With xlWorkbook
        .Activate
        
            With .Sheets("Sheet1")
                .Range("A1048576").End(-4162).Activate    'xlUp
                xlWorkbook.ActiveCell.FormulaR1C1 = "aaa"
                .Range("XFD1").End(-4159).Select 'xlToLeft
    
            End With
            .Save
            .Close
        End With
    End Sub

    Ich kriege es in keiner Weise hin, die Linie mit ActiveCell auszuführen. Ich erhalte immer die Fehlernummer 438 (Object doesn't Support this property or method).

    Wie kann ich das erreichen?


    Danke und Gruss Thomas

    Dienstag, 22. September 2015 07:15

Antworten

  • Hallo Alex

    Wahrscheinlich habe ich mein Anliegen nicht gut genug erklärt.

    Ich weiss, wie man in Excel Werte via VBA von Excel schreibt. Von dort kann ich auch problemlos auf die ActiveCell zugreifen. Aber von Access aus habe ich es nicht geschafft. Aber ich habe die Zelle jetzt in eine Variable gespeichert und so funktioniert es:

    Sub subModifyExcel()
        Dim strExcelName As String
        Dim xlWorkbook As Object
        Dim xlRange As Object
    
        strExcelName = "H:\Desktop\Work\Murer Einführung Access\TestExcel.xlsx"
        Set xlWorkbook = objExcel.Workbooks.Open(FileName:=strExcelName)
    
        With xlWorkbook
        .Activate
        
            With .Sheets("Sheet1")
                Debug.Print .Range("A1048576").End(-4162).Address   'xlUp
                Set xlRange = .Range("A1048576").End(-4162) 'xlUp
                xlRange.FormulaR1C1 = "aaa"
                .Range("XFD1").End(-4159).Select 'xlToLeft
    
            End With
            .Save
            .Close
        End With
    End Sub


    Danke und Gruss Thomas

    • Als Antwort markiert Alphawolfi Dienstag, 22. September 2015 09:51
    Dienstag, 22. September 2015 09:51
  • Hallo,
     
    Alphawolfi wrote:
     
    >     Set xlWorkbook = objExcel.Workbooks.Open(FileName:=strExcelName)
    > [...]
    >             xlWorkbook.ActiveCell.FormulaR1C1 = "aaa"
    > [...]
    > Ich kriege es in keiner Weise hin, die Linie mit ActiveCell auszuführen. Ich erhalte immer die Fehlernummer 438
    > (Object doesn't Support this property or method).
     
    Liegt daran, dass ActiveCell keine Methode des Workbooks sondern der
    Anwendung ist. Probier mal
     
    objExcel.ActiveCell.FormulaR1C1 = "aaa"
     
    Gruss - Peter
     
    --
     
    • Als Antwort markiert Alphawolfi Dienstag, 22. September 2015 12:33
    Dienstag, 22. September 2015 11:13
    Moderator

Alle Antworten

  • Hallo Thomas

    Hier ein kleines Beispiel wie man Werte und Formeln in Exce shreibt:

    Public Sub AddValues()
    
        Dim sh As Worksheet
        Dim rng As Range
        
        Set sh = Worksheets("Tabelle1")
        
        Dim i As Integer
        
        For i = 1 To 10
            Set rng = sh.Cells(i, 1)
            rng.Value = "BlaBla"
        Next
        
    End Sub

    Ich hoffe das Dier das weiterhilft.

    Gruss Alex

    Dienstag, 22. September 2015 08:15
  • Hallo Alex

    Wahrscheinlich habe ich mein Anliegen nicht gut genug erklärt.

    Ich weiss, wie man in Excel Werte via VBA von Excel schreibt. Von dort kann ich auch problemlos auf die ActiveCell zugreifen. Aber von Access aus habe ich es nicht geschafft. Aber ich habe die Zelle jetzt in eine Variable gespeichert und so funktioniert es:

    Sub subModifyExcel()
        Dim strExcelName As String
        Dim xlWorkbook As Object
        Dim xlRange As Object
    
        strExcelName = "H:\Desktop\Work\Murer Einführung Access\TestExcel.xlsx"
        Set xlWorkbook = objExcel.Workbooks.Open(FileName:=strExcelName)
    
        With xlWorkbook
        .Activate
        
            With .Sheets("Sheet1")
                Debug.Print .Range("A1048576").End(-4162).Address   'xlUp
                Set xlRange = .Range("A1048576").End(-4162) 'xlUp
                xlRange.FormulaR1C1 = "aaa"
                .Range("XFD1").End(-4159).Select 'xlToLeft
    
            End With
            .Save
            .Close
        End With
    End Sub


    Danke und Gruss Thomas

    • Als Antwort markiert Alphawolfi Dienstag, 22. September 2015 09:51
    Dienstag, 22. September 2015 09:51
  • Hallo,
     
    Alphawolfi wrote:
     
    >     Set xlWorkbook = objExcel.Workbooks.Open(FileName:=strExcelName)
    > [...]
    >             xlWorkbook.ActiveCell.FormulaR1C1 = "aaa"
    > [...]
    > Ich kriege es in keiner Weise hin, die Linie mit ActiveCell auszuführen. Ich erhalte immer die Fehlernummer 438
    > (Object doesn't Support this property or method).
     
    Liegt daran, dass ActiveCell keine Methode des Workbooks sondern der
    Anwendung ist. Probier mal
     
    objExcel.ActiveCell.FormulaR1C1 = "aaa"
     
    Gruss - Peter
     
    --
     
    • Als Antwort markiert Alphawolfi Dienstag, 22. September 2015 12:33
    Dienstag, 22. September 2015 11:13
    Moderator
  • Hallo Peter

    Klappt. Vielen Dank.


    Danke und Gruss Thomas

    Dienstag, 22. September 2015 12:33