Oktober 20, 2020, 10:10:06

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Steuerung von Excel bei Runtime 2016

Begonnen von Jonny, Oktober 13, 2020, 14:38:52

⏪ vorheriges - nächstes ⏩

Jonny

Hallo,
ich steure aus meine Access Anwendung Excel-Zugriffe.
Aus der Vollversion gibt es keine Probleme.
Bei der Runtime 2016 kommen unerklärliche Meldungen bzw. Aktionen werden nicht ausgeführt.
So wird ein Blatt nicht kopiert und eingefügt. Fehlermeldung kommt auch nicht sondern es wird einfach nicht gemacht, Formeln werden nicht als Formeln eingefügt sondern einfach als Text.
Festgestellt haben wir das es ein Update gab. Nachdem wir die Runtime deinstalliert und neu installiert haben lief es dann wieder. Jetzt, nach ca. zwei Monate, gibt es wieder Probleme.
Hat jemand eine Idee, eventuell eine andere Runtime?
Gruß Johann

markus888

Zitat von: Jonny am Oktober 13, 2020, 14:38:52Fehlermeldung kommt auch nicht sondern es wird einfach nicht gemacht

Das dürfte an dem Code liegen den du hier nicht zeigst.

Eine Runtime verlangt sauberes Programmieren und vor allem ein sauberes Fehlerhandling.

Ohne deinen Code kann man nichts dazu sagen.
10 Jahre Access

Jonny

Danke für deine Antwort. Hier der Code:
    Dim Db As DAO.Database
    Dim Proj As DAO.Recordset
    Set Db = CurrentDb
    Dim Pfad As String, PfadDatei As String, SqlSel As String, Zeile As Long, SqlUpd As String, Änder As Integer, Mappe As String, Termi As Integer, Texte As Integer
    Dim Gruppe As Long, TermVorhanden As Integer, I As Integer, SpalteBu As String, SpaltenZeichen As String, SpaltenNr As Integer
    Dim ADatum As Date, AnfDatum As Date, TageMinus As Integer, ZwProjekt As String, Gruppe1 As Integer
    Dim Datei As String, ZwMon As String, ZwJahr As String, Zeile2 As Long, ZwExcelSpalte As String, ZwExcelZeile As String, ExAdress As String
    Dim DatumJahrAnfang As Date, Rück As Integer, Dateibenutzer As String
    ' zur Ermittlung der Splatennummer bei der Tabelle Projektzeitachse
    DatumJahrAnfang = "01.01.2020"
    ZwMon = Format(DLookup("AKw", "Parameter", "ID = 1"), "00")
    ZwJahr = Format(DLookup("AJahr", "Parameter", "ID = 1"), "0000")
    Datei = DLookup("PfadMeilensteine", "Parameter", "ID = 1")
    Datei = Datei & DLookup("DateiMeilensteine", "Parameter", "ID = 1") & ZwMon & ZwJahr & ".xlsx"
    Änder = Nz(DCount("ID", "Meilensteinerfassung", "Allgemein = True"), 0)
   
    Termi = Nz(DCount("ID", "ProjektTermine", "Änderung = True"), 0)
    Pfad = DLookup("PfadProjektplanung", "Parameter", "ID = 1")
    Pfad = Pfad & DLookup("DateiProjektplanung", "Parameter", "ID = 1")
    ZwMon = Format(DLookup("AKw", "Parameter", "ID = 1"), "00")
    ZwJahr = Format(DLookup("AJahr", "Parameter", "ID = 1"), "0000")
    Pfad = Pfad & ZwMon & ZwJahr & ".xlsx"

    If Änder = 0 And Termi = 0 Then
        MsgBox ("Keine Übertragung Bewegungsdaten notwendig")
        Exit Sub
    End If
   
    Dim xlSheet As Object 'Excel.Worksheet
    Dim objcell As Object
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If xlApp Is Nothing Then
        Set xlApp = CreateObject("Excel.Application")
    End If
Warten:
    If IsFileOpen(Datei) Then
        Dateibenutzer = xlApp.UserName
        Rück = MsgBox("Datei: " & Datei & " ist geöffnet nochmal versuchen?", vbYesNo + vbQuestion)
       
        If Rück = vbYes Then
            GoTo Warten
        Else
            MsgBox ("Übertragung abgebrochen")
            Exit Sub
        End If
    End If
   
Warten2:
    If IsFileOpen(Pfad) Then
        Dateibenutzer = xlApp.UserName
        Rück = MsgBox("Datei: " & Pfad & " ist geöffnet nochmal versuchen?", vbYesNo + vbQuestion)
       
        If Rück = vbYes Then
            GoTo Warten2
        Else
            MsgBox ("Übertragung abgebrochen")
            Exit Sub
        End If
    End If
   
    'On Error GoTo Fehler
    xlApp.Visible = True ' Testphase
    ' *** Wenn keine Termine gebucht werden müssen beenden
    If Termi = 0 Then
        Set xlBook = Nothing
        xlBook.Save ' Testphase
        xlBook.Close
        'xlApp.Application.Quit ' Testphase
        Set xlApp = Nothing
        MsgBox ("Übergabe erfolgte")
        Exit Sub
    End If
    Set xlBook = xlApp.Workbooks.Open(Datei)
   
    SqlSel = "SELECT ProjektTermine.ID, ProjektTermine.ProjektID, ProjektTermine.Gruppe1, ProjektTermine.MsNr, ProjektTermine.Phase, ProjektTermine.Plandatum, ProjektTermine.Relevant, ProjektTermine.Istdatum, ProjektTermine.ExcelAdrL1P, ProjektTermine.ExcelAdrL1I, ProjektTermine.ExcelAdrL2P, ProjektTermine.excelAdrL2I, ProjektTermine.ExcelAdrL1R, ProjektTermine.ExcelAdrL2R, ProjektTermine.Änderung, ProjektTermine.LosNr"

markus888

Zitat von: Jonny am Oktober 13, 2020, 18:16:30Set xlBook = Nothing
        xlBook.Save ' Testphase
        xlBook.Close



Der Code ist unvollständig.
Außerdem schau dir mal die drei Zeilen an.
Das ist doch Copy&Past Code, weil so viel
Unsinn schafft man sonst gar nicht.
10 Jahre Access

PhilS

Zitat von: Jonny am Oktober 13, 2020, 14:38:52So wird ein Blatt nicht kopiert und eingefügt. Fehlermeldung kommt auch nicht sondern es wird einfach nicht gemacht,
Der zitierte Code hat keinerlei Fehlerbehandlung ausser On Error Resume Next. - Damit ist keine Fehlermeldung zu erwarten.
An der betreffenden Stelle ist das On Error Resume Next sinnvoll, aber es sollte unmittelbar nach dem Block durch eine andere Fehlerbehandlung abgelöst werden. Fehlerbehandlung grundsätzlich ist in der Runtime unerlässlich.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

Jonny

Hallo erst einmal Danke für eure Meldungen. Normal habe ich nicht so einen Chaoscode.
Jetzt habe ich über on error und bekommen den Error 1004 bei diesen Code, siehe Kommentar Einzelschritt
            If Not IsNull(Proj!Plandatum) Then
                SpalteNr = 24
                I = 1
                While I < 400
                    If xlSheet.Cells(11, SpalteNr) = Proj!Plandatum Then
                        xlSheet.Cells(Zeile, SpalteNr).AddComment ' Einzelschritt hier 1004
                        xlSheet.Cells(Zeile, SpalteNr).Comment.Visible = False
                        xlSheet.Cells(Zeile, SpalteNr).Comment.Text ("Plan:" & Chr(10) & Proj!LosNr & "/" & Proj!Phase)
                        xlSheet.Cells(Zeile, SpalteNr) = "P"
                        If Proj!Gruppe1 > 1 And Proj!Gruppe1 < 6 Then xlSheet.Cells(Zeile + 1, SpalteNr) = Proj!MsNr
                        Proj!ExcelAdrL1P = "Z" & Zeile & "S" & SpalteNr
                        If Proj!Relevant = True Then
                            xlSheet.Cells(Zeile, SpalteNr) = "R"
                            Proj!exceladrl1r = "Z" & Zeile & "S" & SpalteNr
                        End If
                        I = 401
                    End If
                    I = I + 1
                    SpalteNr = SpalteNr + 1
                Wend
                Proj!ExcelAdrL1P = "Z" & Zeile & "S" & SpalteNr
            End If
Vielen Dank schon jetzt

Jonny

Hallo hat sich erledigt, waren Kommentare da und nochmal geht nicht.