Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datenexport in Outlook Kalender und Datensuche per VBA

Begonnen von Andreas Irmer, Dezember 21, 2022, 22:18:45

⏪ vorheriges - nächstes ⏩

Andreas Irmer

Hallo zusammen,

einige werden mich vielleicht von anderen Threads hier kennen. Ich baue für meine Firma eine Datenbank zur Überwachung der Terminauslastung in der Werkstatt.

Die Datenstruktur sieht so aus:
Sie dürfen in diesem Board keine Dateianhänge sehen.

Ich kann alle Daten entsprechend erfassen. Die Aufträge werden in der Tabelle Aufträge gespeichert. Die Termine werden in der Tabelle Termine gespeichert. Die Kundendaten kann ich direkt aus unserer Wawi in die Tabelle Kunden_DB schreiben. (Die Feldnamen dort sind durch die Wawi festgeschrieben und können nicht geändert werden.)

Jetzt habe ich zwei Themen, mit denen ich aktuell hänge:

1. Export der Termine in einen Outlook Kalender.
Ich möchte dafür diesen Code verwenden:
Public Sub TermineExportieren()
    Dim objAppointment As Outlook.AppointmentItem
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim objUserProperty As Outlook.UserProperty
    Dim lngTerminID As Long
    Set db = CurrentDb
    Set rst = db.OpenRecordset("Abfrage_Outlook", dbOpenDynaset)
    Do While Not rst.EOF
        Set objAppointment = GetAppointmentFolder.Items.Find("[TerminID] = " & rst!OL_TerminID)
        If objAppointment Is Nothing Then
            Set objAppointment = GetAppointmentFolder.Items.Add
            With objAppointment
                .Subject = rst!Kd_Nr & ", " & rst!Kd_Name & ", " & rst!AB_Nr & ", " & rst!Telefon & ", " & rst!Mail
                .Start = rst!Dat_Datum & " " & rst!Dat_Beginn
                .End = rst!Dat_Datum & " " & rst!Dat_Ende
                .UserProperties("Kd-Nr") = rst!Kd_Nr
                .UserProperties("Kd-Name") = rst!Kd_Name
                .UserProperties("AB-Nr") = rst!AB_Nr
                .UserProperties("Auftragsbeschreibung") = rst!Auftragsbeschreibung
                .UserProperties("AW") = rst!angesetzteAW
                .UserProperties("Monteur") = rst!Vorname
                .Ganztägig = rst!Ganztag
                .Kategorien = rst!Taetigkeit
                .UserProperties("Notizen") = rst!Notizen
                Set objUserProperty = .UserProperties.Add("TerminID", olText)
                objUserProperty.Value = rst!TerminID
                .Save
            End With
        Else
            With objAppointment
                If Not (rst!GeaendertAm = .LastModificationTime) Then
                    .Subject = rst!Kd_Nr & ", " & rst!Kd_Name & ", " & rst!AB_Nr & ", " & rst!Telefon & ", " & rst!Mail
                    .Start = rst!Datum & " " & rst!Beginn
                    .End = rst!Datum & " " & rst!Ende
                    .UserProperties("Kd-Nr") = rst!Kd_Nr
                    .UserProperties("Kd-Name") = rst!Kd_Name
                    .UserProperties("AB-Nr") = rst!AB_Nr
                    .UserProperties("Auftragsbeschreibung") = rst!Auftragsbeschreibung
                    .UserProperties("AW") = rst!angesetzteAW
                    .UserProperties("Monteur") = rst!Vorname
                    .Ganztägig = rst!Ganztag
                    .Kategorien = rst!Taetigkeit
                    .UserProperties("Notizen") = rst!Notizen
                    .Save
                End If
            End With
        End If
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Sub

In Outlook habe ich die benutzerdefinierten Felder angelegt aber beim Ausführen von TermineExportieren bemängelt das System: Die Bedingung kann nicht analysiert werden. Fehler bei "".
Sie dürfen in diesem Board keine Dateianhänge sehen.

Wenn ich dann debuggen lasse, komme ich dann zu:
Sie dürfen in diesem Board keine Dateianhänge sehen. 

Was mache ich falsch?

2. Ich möchte eine Möglichkeit haben den passenden Auftrag zu suchen
Dazu möchte ich per VBA über eine Schaltfläche im Eingabeformular eine Suche anbieten, die zumindest eine Eingabe für das Feld Auftraege.AB_Nr bieten soll. Besser wäre jedoch, wenn man auch nach Kundennummer, Kundennamen und evtl auch nach Teilen der Auftragsbeschreibung suchen könnte.
Hier stehe ich leider vollkommen auf dem Schlauch wie ich das angehe. 

Ich würde mich sehr freuen, wenn ich hier Lösungen bekommen könnte.

Wenn ihr Tipps habt, wo ich weiter Lern-Anleitungen finden kann, auch gerne Links senden.

Vielen Dank und allen hier im Forum schon mal schöne Weihnachten und einen gesunden Start in das kommende Jahr.
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

markusxy

#1
Was ist GetAppointmentFolder und warum verwendest du keine Referenz auf den Ordner im Code?
Wozu dienen die ganzen Felder in Outlook - verwendest du innerhalb von Outlook ein eigenes Formular, dass die Felder anzeigt und auch die mobilen Endgeräte nutzen können - sprich ist das ganze irgendwie durchdacht?
Die Suche via OL_TerminID halte ich für unbrauchbar.
Wenn von Access Richtung Outlook synchronisiert wird, dann solltest du in Access die ID speichern die Outlook verwendet - sprich die EntryID. Da bietet Outlook dann entsprechende Methoden für maximal effizienten Zugriff.

Die ID aus Access brauchst du nur, wenn von Outlook Richtung Access zusätzlich synchronisert werden soll.

Ob Find grundsätzlich funktioniert hast du hoffentlich in der Dokumentation geprüft.

Andreas Irmer

Guten Morgen,
Danke für das Feedback. Ich habe früher einiges mit Access gemacht und fuchse mich gerade wieder ein Stück weit hinein. Bei VBA bin ich ein absoluter Anfänger und nutze bestehende Codes, die ich entsprechend anpassen möchte.

Danke auch für die berechtigte Frage.
Zitat von: markusxy am Dezember 22, 2022, 08:01:52Was ist GetAppointmentFolder
Public Property Get GetAppointmentFolder() As Outlook.MAPIFolder
    Set objRecipient = GetMAPINamespace.CreateRecipient("Test1")
    If mAppointmentFolder Is Nothing Then
        Set mAppointmentFolder = GetMAPINamespace.GetSharedDefaultFolder(objRecipient, olFolderCalendar)
    End If
    Set GetAppointmentFolder = mAppointmentFolder
End Property
Darüber will ich nicht auf meinen Standardkalender sondern auf einen extra festgelegten Kalender zugreifen. Eigentlich müsste ich eine Lösung haben, mit der ich auf mehrere Kalender je nach Mitarbeiter zugreifen kann.

Zitat von: markusxy am Dezember 22, 2022, 08:01:52warum verwendest du keine Referenz auf den Ordner im Code?
Weil ich es bisher ncht besser kann!

Zitat von: markusxy am Dezember 22, 2022, 08:01:52Wozu dienen die ganzen Felder in Outlook - verwendest du innerhalb von Outlook ein eigenes Formular, dass die Felder anzeigt und auch die mobilen Endgeräte nutzen können - sprich ist das ganze irgendwie durchdacht?

Genau das ist der Hintergrund. Ich möchte die Daten kontrolliert in Outlook anzeigen und auch auf mobilen Geräten nutzen. Allerdings würde es auch reichen, wenn ich den Betreff mit einzelnen Informationen fülle und den Rest formatiert in den Body schreibe.

Es soll allerdings auch so sein, dass die Mitarbeiter die Daten im Kalender nicht bearbeiten können sollen.

EntryID macht natürlich Sinn. Die vergibt Outlook, wenn ich die Dokumentation richtig verstanden habe, sobald ein Eintrag gespeichert wird.

Zitat von: markusxy am Dezember 22, 2022, 08:01:52Ob Find grundsätzlich funktioniert hast du hoffentlich in der Dokumentation geprüft.

Ich habe diesen Code vor einigen Wochen schon mal genutzt und konnte damit Einträge lesen und schreiben. Bei einem Blick in die Dokumentation habe ich jetzt allerdings kein Find finden können.

Meine Idee ist jetzt: Wenn mein Feld OL_TerminID leer ist, kann ich davon ausgehen, dass der Eintrag noch nicht im Outlook steht und der Eintrag soll geschrieben werden. Dann wird die EntryID in das Feld OL_TerminID geschrieben.

Ist also später ein Inhalt in OL_TerminID muss ich den Eintrag in Outlook überschreiben.

Ich habe jetzt mal versucht das Thema so umzusetzen.

Public Sub TermineExportieren()
    Dim objAppointment As Outlook.AppointmentItem
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim objUserProperty As Outlook.UserProperty
    Dim lngTerminID As Long
    Set db = CurrentDb
   
    ' Abfrage Outlook filter mir nur zukünftige Daten aus der Tabelle Termine
   
    Set rst = db.OpenRecordset("Abfrage_Outlook", dbOpenDynaset)
    Do While Not rst.EOF
       
        ' Wenn Ol_TerminID leer ist, wird der Termin noch nicht in Outlook sein
        ' Termin also hinzufügen
       
        If rst!OL_TerminID Is Nothing Then
            Set objAppointment = GetAppointmentFolder.Items.Add
            With objAppointment
                .Subject = rst!Kd_Nr & ", " & rst!Kd_Name & ", " & rst!AB_Nr & ", " & rst!Telefon & ", " & rst!Mail
                .Start = rst!Dat_Datum & " " & rst!Dat_Beginn
                .End = rst!Dat_Datum & " " & rst!Dat_Ende
                .UserProperties("Kd-Nr") = rst!Kd_Nr
                .UserProperties("Kd-Name") = rst!Kd_Name
                .UserProperties("AB-Nr") = rst!AB_Nr
                .UserProperties("Auftragsbeschreibung") = rst!Auftragsbeschreibung
                .UserProperties("AW") = rst!angesetzteAW
                .UserProperties("Monteur") = rst!Vorname
                .Ganztägig = rst!Ganztag
                .Kategorien = rst!Taetigkeit
                .UserProperties("Notizen") = rst!Notizen
               
                ' jetzt die EntryId in OL_TerminID schreiben
               
                rst!OL_TerminID = .EntryID
               
                ' und für spätere Schreibvorgäönge erfassen, wann das letzte Änderungsdatum in Outlook war
                ' GeandertAm wird aktuell in der Tabelle bei Änderungen noch nicht gepflegt - Hausaufgabe
               
                rst!GeaendertAm = .LastModificationTime
                .Save
            End With
        Else
           
            ' über die EntryID auf den roichtigen Termin zugreifen
           
            Set objAppointment = GetAppointmentFolder.GetItemFromID("[EntryID] =" & rst!OL_TerminID)
            With objAppointment
           
                ' nur wenn LastModificationTime kleiner als geändert am, soll geschrieben werden

                If rst!GeaendertAm > .LastModificationTime Then
                    .Subject = rst!Kd_Nr & ", " & rst!Kd_Name & ", " & rst!AB_Nr & ", " & rst!Telefon & ", " & rst!Mail
                    .Start = rst!Dat_Datum & " " & rst!Dat_Beginn
                    .End = rst!Dat_Datum & " " & rst!Dat_Ende
                    .UserProperties("Kd-Nr") = rst!Kd_Nr
                    .UserProperties("Kd-Name") = rst!Kd_Name
                    .UserProperties("AB-Nr") = rst!AB_Nr
                    .UserProperties("Auftragsbeschreibung") = rst!Auftragsbeschreibung
                    .UserProperties("AW") = rst!angesetzteAW
                    .UserProperties("Monteur") = rst!Vorname
                    .Ganztägig = rst!Ganztag
                    .Kategorien = rst!Taetigkeit
                    .UserProperties("Notizen") = rst!Notizen
                    rst!GeandertAm = .LastModificationTime
                    .Save
                End If
            End With
        End If
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Sub


Über diese Zeile:
Set objAppointment = GetAppointmentFolder.GetItemFromID("[EntryID] =" & rst!OL_TerminID)

komme ich aber leider nicht weiter.

Angefangen habe ich mit
Set objAppointment = GetAppointmentFolder.GetItemFromID(rst!OL_TerminID)

und probiert habe ich auch
Set objAppointment = GetAppointmentFolder.GetItemFromID("rst!OL_TerminID")

Wer kann mir da meinen Fehler erklären?
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

MzKlMu

Hallo,
mit der Outlook Sache kann ich leider nichts helfen, ich habe da keine Ahnung davon.
Gruß Klaus

Andreas Irmer

Zitat von: MzKlMu am Dezember 22, 2022, 10:51:49mit der Outlook Sache kann ich leider nichts helfen, ich habe da keine Ahnung davon.

Aber vielleicht mit meiner 2. Frage aus dem ersten Beitrag
Zitat von: Andreas Irmer am Dezember 21, 2022, 22:18:452. Ich möchte eine Möglichkeit haben den passenden Auftrag zu suchen
Dazu möchte ich per VBA über eine Schaltfläche im Eingabeformular eine Suche anbieten, die zumindest eine Eingabe für das Feld Auftraege.AB_Nr bieten soll. Besser wäre jedoch, wenn man auch nach Kundennummer, Kundennamen und evtl auch nach Teilen der Auftragsbeschreibung suchen könnte.
Hier stehe ich leider vollkommen auf dem Schlauch wie ich das angehe. 

Danke
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

markusxy

Zitat von: Andreas Irmer am Dezember 22, 2022, 10:38:10Über diese Zeile:
Set objAppointment = GetAppointmentFolder.GetItemFromID("[EntryID] =" & rst!OL_TerminID)

komme ich aber leider nicht weiter.

Das Problem ist doch dass du konzeptlos irgend etwas zusammenschreibst.
GetItemFromID ist eine Funktion von NameSpace du wendest sie auf einen Folder an.
Dann schreibst du EntryID rein, obwohl da nur der Schlüssel rein gehört und zusätzlich noch die StoreID - wenn  man das nicht kennt muss man natürlich rausfinden was das ist.
So kann man doch nicht arbeiten.  :o
Ich würde dir empfehlen erstmal ein Buch zu kaufen und dich mal systematisch in die Grundlagen einzuarbeiten.
Da geht es erstmal um die Arbeit mit Objekten.
Outlook ist natürlich etwas speziell, aber bei dir fehlt einfach noch zu viel um das hier im Forum zu kompensieren.
Die meisten User neigen ja dazu im Web nach Lösungen zu suchen.
Dadurch lernt man aber keine Grundlagen. Ohne Grundlagen ist das reine Zeitverschwendung.
Du solltest dir also überlegen, wie du weiter arbeiten willst - Zeit verschwenden mit fragwürdigen Codes dessen Qualität du gar nicht beurteilen kannst, oder systematisches Vorgehen.



Andreas Irmer

 ??? Entschuldige mal, habe ich hier irgend jemanden beleidigt. Ich habe meine Spezialgebiete und sicher jeder hier auch seine aber Deinen Post finde ich jetzt doch ziemlich daneben.

Ich suche jetzt mehrere Jahre nach einer Software, die das kann, was wir brauchen. Wir finden keine. Also nutze ich meine zugegeben sehr alten Kenntnisse und versuche etwas selbst zu bauen. (Ich stamme noch aus Pascal Zeiten)

Ich bin hier im Forum von anderen Mitgliedern und Moderatoren bisher hervorragend unterstützt worden.

In den vergangenen Wochen habe ich x Stunden in Microsoft Hilfeseiten verbracht und komme leider damit nicht wirklich klar, weil da viele Aussagen einfach nicht zusammen passen.

Ich möchte hier kein Programmierer werden sondern nur eine Applikation ans laufen bringen. Aus dem Grund finde ich Deine Kommentare weder berechtigt noch irgendwie zielführend.
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

ebs17

ZitatPublic Property Get GetAppointmentFolder() As Outlook.MAPIFolder
    Set objRecipient = GetMAPINamespace.CreateRecipient("Test1")
    If mAppointmentFolder Is Nothing Then
        Set mAppointmentFolder = GetMAPINamespace.GetSharedDefaultFolder(objRecipient, olFolderCalendar)
    End If
    Set GetAppointmentFolder = mAppointmentFolder
End Property
Darüber will ich nicht auf meinen Standardkalender sondern auf einen extra festgelegten Kalender zugreifen. Eigentlich müsste ich eine Lösung haben, mit der ich auf mehrere Kalender je nach Mitarbeiter zugreifen kann.
Dann benötigst Du zusätzlich zur Get-Prozedur eine Let-Prozedur, wo Du von außen den Ordner auf den gewünschten setzt, dies sicher mit einem Argument, wo der Recipient übergeben wird.
Mit freundlichem Glück Auf!

Eberhard

Andreas Irmer

Hallo Eberhard,

vielen Dank für den Hinweis.

Habe ich mir das so vorzustellen?

Private objName As Outlook.Recipient

Public Property Let Userfestlegen(UserName As String)
    Set objName = UserName
End Property

Public Property Get GetAppointmentFolder() As Outlook.MAPIFolder
    Set objRecipient = GetMAPINamespace.CreateRecipient(objName)
    If mAppointmentFolder Is Nothing Then
        Set mAppointmentFolder = GetMAPINamespace.GetSharedDefaultFolder(objRecipient, olFolderCalendar)
    End If
    Set GetAppointmentFolder = mAppointmentFolder
End Property


Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

markusxy

Zitat von: Andreas Irmer am Dezember 22, 2022, 19:38:25??? Entschuldige mal, habe ich hier irgend jemanden beleidigt. Ich habe meine Spezialgebiete und sicher jeder hier auch seine aber Deinen Post finde ich jetzt doch ziemlich daneben.

Was findest du am Post daneben?
Du meinst Grundlagen verstehen und effizientes Arbeiten ist daneben?

Zitat von: Andreas Irmer am Dezember 22, 2022, 19:38:25Also nutze ich meine zugegeben sehr alten Kenntnisse

So was wie alte Kenntnisse gibt es nicht.
Habe selbst erst vor 5 Jahren mit Delphi und Assembler begonnen - du würdest das jetzt alte Kenntnisse nennen.
Jetzt arbeite ich mehr mit C# und das ist wirklich ein Traum von einer Entwicklersprache.
Aber he, ich verstehe dann absolut nicht, warum du dich so anstellst.
Von wem mit Basiskenntnissen würde ich schon erwarten, dass er in der Lage ist Methoden auf die richtigen Klassen anzuwenden und nicht einfach irgend was zusammzuschreiben - wie kannst du denn das erklären - statt dein eigenes Tun zu hinterfragen spielst du hier den Beleidigten.
Wenn ich das Gefühl habe, dass wer zu konzeptlos unterwegs ist um die Gesamtaufgabe zu lösen dann schreibe ich das auch - auch auf das Risiko hin, dass wer so reagiert wie du.

Andreas Irmer

Hallo Markus,

ich habe leider keine Benachrichtigung erhalten und konnte daher nicht vorher antworten.

Nein, ich finde es nicht daneben, Grundlagen zu verstehen und anwenden zu können.

Welche Kenntnisse alt und welche neu oder aktuell sind, hängt immer vom Fall ab. Bei meiner Programmierung haben wir noch nicht an Objekte, Methoden, Klassen o.ä. gedacht.

Wenn Du zum Beispiel geschrieben hättest: Dieses Buch kann ich Dir empfehlen. Wäre es mir eine echte Hilfe gewesen. Zu Schreiben: kauf Dir ein Buch, hilft mir wenig.

Natürlich hinterfrage ich mein Tun und ich habe auch ein Konzept für mein Projekt. Außerdem habe ich hier auch mein eisernes Prinzip hinterlget: Ich lerne jeden Tag etwas dazu, ob ich will oder nicht.

Neue Termine kann ich in Outlook schreiben.

Mein Problem ist schlichtweg, dass ich nicht weiß, wie ich einen bestehenden Datensatz in den Terminen über die EntryID aufrufen kann.

Diverse Outlook Suchen sind dem Post vorangegangen:
Outlook Appointment Suche
Outlook Appointment Suche EntryID
VBA Element Appointment EntryID finden
VBA Element EntryID finden
usw usf.

Ich wünsche allen Lesern und Leserinnen frohe Weihnachten.
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

markusxy

Zitat von: Andreas Irmer am Dezember 24, 2022, 21:48:36Mein Problem ist schlichtweg, dass ich nicht weiß, wie ich einen bestehenden Datensatz in den Terminen über die EntryID aufrufen kann.

Der Aufruf ist simpel:

Application.Session.GetItemFromID(EntryID, optional StoreID)

Man benötigt also keinen Zugriff auf den Ordner um das Objekt aufzurufen.
Ob die StoreID in dem Kontext zwingend ist, müsste man testen.
Ansonsten ist die StoreID eine Property von MAPIFolder.



Andreas Irmer

Hallo Markus,

ich habe das mal versucht umzusetzen:
Public Sub Termine_schreiben()

    Dim objAppointment As Outlook.AppointmentItem
    Dim LstAppointment As Object
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim Tab_Termine As DAO.Recordset
    Dim objUserProperty As Outlook.UserProperty
    Dim lngTerminID As Long
    Dim Anzahl As Integer
    Dim i As Integer
    Dim Filter As String
    Dim ObjTerminvorhanden As Object
       
    Set db = CurrentDb
    Set rst = db.OpenRecordset("Abfrage_Outlook", dbOpenDynaset)
   
    ' Neben der Abfrage auch noch die Tabell Tab_Termine öffnen, um Daten schreiben zu können. Einträge in Abfrage funktionieren nicht.
   
    Set Tab_Termine = db.OpenRecordset("Termine", dbOpenDynaset)
    Set LstAppointment = GetAppointmentFolder.Items

    LstAppointment = GetOutlook.GetMAPINamespace("000000002508FC661316F84AA146DC9302F5D4A407001D9E3E02C2C81F43BAF86BDC8A4143DF00000000010D00001D9E3E02C2C81F43BAF86BDC8A4143DF00005F48E3930000")
    Debug.Print LstAppointment.UserProperties("Auftrbeschr")
    Set rst = Nothing
    Set db = Nothing
    Set LstAppointment = Nothing
End Sub

Allerdings erhalte ich in der Zeile LstAppointment = ... bekomme ich einen Laufzeitfehler '438' Objekt unterstützt diese Eigenschaft oder Methode nicht
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

PhilS

Zitat von: Andreas Irmer am Dezember 27, 2022, 20:46:33Allerdings erhalte ich in der Zeile LstAppointment = ... bekomme ich einen Laufzeitfehler '438' Objekt unterstützt diese Eigenschaft oder Methode nicht
1.) Zuweisungen zu Objektvariablen erfordern in VBA immer das Set Schlüsselwort.
2.) Du verwendest die Funktion GetItemFromID, die ja zentraler Punkt der Diskussion hier war, in deinem Code gar nicht.
3.) GetMAPINamespace ist dein eigenes Property, das du in dem anderen Thread in deinem Code zeigst? Dann ist es keine Methode des Outlook.Application-Objektes, das du mit deiner GetOutlook-Property erstellst.

Wenn du die o.a. Punkte berücksichtigst, könnte dein Code so aussehen:
Set LstAppointment = GetMAPINamespace.GetItemFromID("000000002508FC66.....

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Andreas Irmer

Zitat von: PhilS am Dezember 28, 2022, 09:36:56Du verwendest die Funktion GetItemFromID, die ja zentraler Punkt der Diskussion hier war, in deinem Code gar nicht.
Das ist auffallend richtig! Peinlich, peinlich.

Ich werde Deinen Vorschlag testen.

Auch Dein Vorschlag in meinem anderen Thread nehme ich mir zu Herzen und schließe das Thema hier ab.

Danke auf jeden Fall.
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar