Office: (Office 2019) Übergabe von Variablen

Helfe beim Thema Übergabe von Variablen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo folgende Probleme habe ich: Ich habe eine Access Datenbankmit verschiedenen Tabellen. In einer Tabelle Systemvariablen sind mehrere Felder mit... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Bulli1308, 2. Juli 2025 um 13:57 Uhr.

  1. Bulli1308 Neuer User

    Übergabe von Variablen


    Hallo folgende Probleme habe ich:
    Ich habe eine Access Datenbankmit verschiedenen Tabellen. In einer Tabelle Systemvariablen sind mehrere Felder mit Werte. z.B. Gebühr, Zuschlag, Pfad, u.a. Diese Werte verändern sich spätestens jährlich. Und der Anwender soll die Werte dort einmal eintragen und dann sollen die Werte als Standartewerte ich den entsprechenden Feldern von Grunddaten sein.

    Dann habe ich eine Tabelle und ein Formular Grunddaten. Wenn ich das Formular Grunddaten öffne, sollen die Werte aus Systemvariablen in den aktuellen Datensatz aus Grunddaten in die entsprechenden Felder geschrieben werden. z.B. Gebühr Zuschlag.

    Ein weiteres Formular frmDrucken soll den Wert (Pfad) aus der Tabelle Systemvariablem übrnehmen und dann an dieser Stelle in der Sub übernehmen: z.B. als Variable filePath

    Dim stAppName As String
    stAppName = "winword.exe & filePath & \42Aktenvorblatt.dotm"
    Call Shell(stAppName, 1)

    Von diesen Aufrufen gibt es ca. 20 Stück für jedes .dotm halt. Und wenn sich der Dokumentenpfad ändert, ist es sehr fehleranfällig diese Pfade im Formular händisch anzufassen. Darum der Weg über der gespeicherten Pfad.

    Die Variable habe ich in einem Modul erzeugt.

    Public Sub GetFilePath()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim filePath As String ' als Public filePath As String kommt fehlermeldung
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Systemvariablen")
    If Not rs.EOF Then
    filePath = rs!SysVarDokumentenpfad

    End If

    rs.Close
    Set rs = Nothing
    Set db = Nothing

    End Sub

    Im Modul ist die Variable filePath vorhanden (habe ich durch eine MSG-Box getestet, die ich hier im Text nicht drin habe), aber ich bekomme die Variable nicht ins frmDrucken.

    Meine Idee wäre auch die anderen Werte als Variablen zu definieren und dann als Standardwerte in Tabelle und Formular Grunddaten einzusetzen.

    Ich hoffe ich habe mich verständlich genug ausgedrückt. Sonst bitte schimpfen und weitere Angaben anfordern.
    Danke für eure Hilfe.
     
  2. Doming
    Doming Erfahrener User
    Moin Bulli,
    Code:
    Option Compare Database
    Option Explicit
    Public filePath As String
    
    Public Sub GetFilePath()
     Dim db As DAO.Database
     Dim rs As DAO.Recordset
        Set db = CurrentDb
        Set rs = db.OpenRecordset("Systemvariablen")
        If Not rs.EOF Then
            filePath = rs!SysVarDokumentenpfad
        End If
        rs.Close
        Set rs = Nothing
        Set db = Nothing
    End Sub
    In diesem Fall verfällt die Variable filePath sobald Du die Sub verlässt.
    Entweder als Public deklarieren, also vor den Subs oder Du übergibst sie beim Aufruf des Formulars
    DoCmd.OpenForm "frmDrucken", OpenArgs := filePath

    Gruß
    Doming
     
  3. Bulli1308 Neuer User
    Zunächst einmal vielen Dank und die superschnelle Antwort.
    Wenn ich dich richtig verstanden muss ich deine Code in ein Modul kopieren und dann steht die Variable filepath zur Verfügung? Sorry scheint nicht so zu sein.

    Wenn ich dich das auch fragen darf: Wie müßte ich das im frmDrucken an der Stelle einbinden. Steh da echt auf dem Holzweg.
    Private Sub Befehl28_Click()
    On Error GoTo Err_Befehl28_Click
    Dim stAppName As String
    stAppName = "winword.exe U:\56\Dokumente\42Aktenvorblatt.dotm"
    Call Shell(stAppName, 1)
    Exit_Befehl28_Click:
    Exit Sub
    Err_Befehl28_Click:
    MsgBox Err.Description
    Resume Exit_Befehl28_Click
    End Sub

    Für U:\56\Dokumente soll die Variable stehen
    etwa so:
    stAppName = "winword.exe" & filePath & "\42Aktenvorblatt.dotm"

    Und wo gehört die Übernahme hin, damit sie für das ganze frm gilt.
    DoCmd.OpenForm "frmDrucken", OpenArgs := filePath
    WIe und wo muss ich die Variable im frm übernehmen. Habe sie im Mom mal ganz nach oben gepackt
    Private Sub Form_Open(Cancel As Integer)
    DoCmd.OpenForm "frmDrucken", OpenArgs:=filePath
    End Sub

    Schon mal Danke im Voraus.
     
  4. Doming
    Doming Erfahrener User

    Übergabe von Variablen

    Moin Bulli,

    Du rufst in Deinem GetFilePath die Abfrage (oder Tabelle?) Systemvariablen auf, wodurch unterscheiden sich darin die Felder? Es gibt doch (hoffentlich) ein ID-Feld?
    Dann rufst Du mit Deinem Call Shell... Word auf, dann kannst Du doch auch von dort aus drucken?
    Und wenn ich Dich richtig verstehe, hast Du 20 Buttons, die sich nur dadurch unterscheiden, dass sie verschiedene Dokumente aufrufen? Dann würde ich die Aufruferei mit Unterprozeduren lösen, das erspart einiges an Tipparbeit.
    Gib mal bitte ein paar mehr Infos raus. Oder eine kleine Demo-Datenbank mit einigen wenigen anonymen Daten.

    Und bitte benutze in Deinen Benamsungen keine Sonderzeichen, also lieber „Gebuehr ” als „Gebühr”.

    Gruß
    Doming
     
  5. Bulli1308 Neuer User
    Wow, Danke für deine Antwort. Ich werde dir mal eine TestDB machen. Wo soll ich die hinschicken? Bekomme aber keinen Schreck. Ich mußte aus einer vorgegebenen DB was neues erstellen und bin deshalb an einige Sachen gebunden wie z.B. Aussehen Formualre (speziell Grunddaten), Felder usw. Ich habe z.B. auch erst einmal zwischen Frontend und Backend geteilt. War mal alles in einer DB. Und das alles muss im laufenden Betrieb geschehen. Ich weiß das ist Mist, aber ist nun mal so.
    Ich finde es mega gut, das du dir das mal ansehen möchtest. Wir können dann auch gerne per E-Mail auf Einzelheiten eingehen.
     
  6. Bulli1308 Neuer User
    Ic würde dir dann einen Google Drive link schicken.
     
  7. Doming
    Doming Erfahrener User
    Hallo,
    am besten hier hochladen
     
  8. Bulli1308 Neuer User

    Übergabe von Variablen

    Ok ich versuchs mal. In den Dateien sind spezielle Pfade hinterlegt:
    für die MDB U:\\56\Versicherungsamt\OWig\
    In der Owig sind die Tabellen zur Owig-Data verknüpft

    für die WordVorlage
    für die MDB U:\\56\Versicherungsamt\OWig\Dokumente
    die PDF ist eine .dotm

    bei weiteren Fragen gerne melden.
     
  9. Doming
    Doming Erfahrener User
    Moin Bulli,

    nun gut, da gibt es einiges, was ich anders machen würde, aber der Code ist ja noch überschaubar.
    Da die Button ja eigentlich alle den gleichen Befehl ausführen, würde ich das so lösen:
    Code:
    Private Sub Aufruf(Dok As String)
    On Error GoTo Fehler
     Dim str As String, Pfad As String
    
    'Pfad aufrufen    
        Pfad = Nz(DLookup("SysVarDokumentenpfad", "Systemvariablen", "SysVarNummer = 1"), "")
    
    'Falls kein Pfad gefunden wird, melden
        If Pfad = "" Then
            MsgBox "Es wurde keine Pfadangabe gefunden", vbCritical, "Datenfehler"
            Exit Sub
        End If
       
    'String zusammenstellen
        str = "winword.exe " & Pfad & "\" & Dok
    'Aufrufen
        Call Shell(str, 1)
    
    Ende:
        Exit Sub
    Fehler:
        MsgBox Err.Number & Err.Description
        Resume Ende
    End Sub
    
    Private Sub Befehl01_Click()
        Aufruf "01VermerkEinleitung.dotm"
    End Sub
    
    Private Sub Befehl02_Click()
        Aufruf "02Anhörung.dotm"
    End Sub
    
    Private Sub Befehl03_Click()
        Aufruf "03AnschreibenVersicherung.dotm"
    End Sub
    usw.
    
    Der Tabelle Systemvariablen würde ich in tblSystemvariablen umbenennen.
    Außerdem wäre vielleicht eine weitere Tabelle tblDokumente denkbar, in der man die einzelnen Dokumentennamen auflistet (falls sich deren Namen mal ändert), bei den Befehlen dann mit Dlookup nur die ID des Dokumentes aufrufen.

    Gruß
    Doming
     
  10. Doming
    Doming Erfahrener User
    Hm, okay, konnte den alten Beitrag nicht mehr ändern, deswegen hier die bessere Variante:

    zuerst eine neue Tabelle mit den Dokumentnamen anlegen, denn es ist ungeschickt, die Namen im VBA-Code zu hinterlegen, wenn nicht klar ist, dass sie immer den selben Namen haben.
    Übergabe von Variablen upload_2025-7-4_6-59-35.png

    Übergabe von Variablen upload_2025-7-4_7-0-7.png

    Dann den Code in dieser Art ändern:
    Code:
    Private Sub Aufruf(Dok As Long)
    On Error GoTo Fehler
     Dim str As String, Pfad As String, Dokument As String
    
    'Pfad aufrufen
        Pfad = Nz(DLookup("SysVarDokumentenpfad", "Systemvariablen", "SysVarNummer = 1"), "")
    
        If Pfad = "" Then
            MsgBox "Es wurde keine Pfadangabe gefunden", vbCritical, "Datenfehler"
            Exit Sub
        End If
     
    'Dokument aufrufen
        Dokument = Nz(DLookup(Dok, "tblDokumente", "dID = " & Dok), "")
    
        If Dokument = "" Then
            MsgBox "Es wurde kein Dokument mit der ID " & Dok & " gefunden", vbCritical, "Datenfehler"
            Exit Sub
        End If
    
    'String zusammenstellen
        str = "winword.exe " & Pfad & "\" & Dok
    'Aufrufen
        Call Shell(str, 1)
    
    Ende:
        Exit Sub
    Fehler:
        MsgBox Err.Number & Err.Description
        Resume Ende
    End Sub
    
    Private Sub Befehl01_Click()
        Aufruf 1
    End Sub
    
    Private Sub Befehl02_Click()
        Aufruf 2
    End Sub
    
    Private Sub Befehl03_Click()
        Aufruf 3
    End Sub
    .
    .
    .
    Man könnte die Dokumente natürlich auch mit Pfad ablegen, dadurch ließe sich der Pfadaufruf sparen. Aber das überlasse ich Deiner Kreativität.

    Gruß
    Doming
     
  11. Bulli1308 Neuer User
    Vielen Dank, habe es gerade mal überflogen und werde es nachher mal testen, einbauen. Hast du vielleicht auch eine Möglichkeit, die Felder in der Tabelle Systemvariablen z..B. Auslagen, als Standardwert für das Formular Bußgeld und Kasse zu verwenden das beim Schließen des Formulars die Werte in die Tabelle Grunddaten geschrieben werden. Das wäre die Krönung.
    Danke. Danke. Eine Superhilfe.
     
  12. Doming
    Doming Erfahrener User
    Hm, das sind ja ganz neue Ansätze...
    Wie sehr hast Du Dir das Access-Tutorial: Lernen Sie Microsoft Access Datenbanken zu erstellen! mal durchgelesen?
    Was passiert denn, wenn Paul Bachmann das zweite Mal eine OWig begeht? Jedes Mal einen neuen Datensatz anlegen, mit Name und persönlichen Daten? Vielleicht noch eine Adresstabelle, wenn sich Anschrift zwischenzeitig ändert.

    Ich habe Deine DB mal angesehen und ich würde das Datenmodell so aufziehen:
    (ich hoffe Du weißt wofür das Beziehungsfenster der Datenbank da ist?)
    Übergabe von Variablen upload_2025-7-4_14-1-51.png
    Ich habe Deine Tabellen umstrukturiert, es gab zu viele redundante Daten. So ganz zufrieden bin ich damit noch nicht, aber vielleicht erklärt das Bild genug, sonst frag nochmal nach.
    • tblVersunternehmen - hier stehen die globalen Daten des Versicherungsunternehmens
    • tblSachbearbeiter - die Tabelle ist von Dir, persönliche Daten des Sachbearbeiters
    • tblSachbZeit - sollte der Sachbearbeiter mal wechseln, kann hier eingetragen werden, ab wann der Nachfolger dran ist.
    • tblKunde - die persönlichen Daten des Versicherungsnehmers
    • tblVersicherung - hier geht es um den Vertrag, die Bezeichnung, Nummer, vielleicht sollte man noch Anfangs- und Schlussdatum eingeben
    • tblVorgang - Hier scheint Dein Hauptaugenmerk zu liegen. AZ-Nr für die Mahnung
    • tblBemerkung - Dort kommen die verschiedenen Bemerkungen hinein, gerad dann wichtig, wenn über einen größeren Zeitraum mehrere Anschreiben nötig sind.
    Die Tabelle Systemvariablen habe ich entfernt, stattdessen gibt es eine Tabelle mit den Gebührarten. Jede Art bekommt einen eigenen Eintrag. Dann gibt es die Tabelle Gebuehrbetrag, da sich sicherlich die Höhe der Beträge mit der Zeit ändert.

    Sobald Du einen Mahnvorgang startest (tblVorgang), kann man mit DMax die aktuellen Gebühren abfragen.
    Auch Deine Tabelle Häufigkeit ist obsolet, die Häufigkeit der Mahnungen kann man mit Abfragen aus der obigen Tabellenstruktur herauslesen.

    So, ich lasse Dich jetzt mal mit meinen Ausführungen alleine. Versuche mal, da durchzusteigen Übergabe von Variablen *;)* Danach bin ich für Fragen offen. Auf jeden Fall lege ich Dir das oben erwähnte Access-Tutorial ans Herz, Datenbankprogrammierung ist nicht selbsterklärend.
    Und Namen für Variablen und Steuerelementen immer ohne Sonderzeichen äöüß/, und statt des Bindestrichs - lieber den Unterstrich _ verwenden. Die Begriffe Name, Datum und einige andere auch nicht (für sich allein stehend) verwenden, denn das sind für Code reservierte Wörte. Wenn nachher Fehler auftreten sucht man sich deswegen dumm und dämlich.

    Gruß
    Doming
     
  13. Bulli1308 Neuer User

    Übergabe von Variablen

    Danke. Gute und tolle Überlegungen. Werde ich mir mal in Ruhe ansehen. das sieht nach einer größeren Umstellung aus. Aber da mich ich mich dann noch intensiv mit beschäftigen.
    Ich finde es toll, das du dir die DB angesehen hast und dir so viele gute Gedanken dazu gemacht hast.

    Den ersten Teil habe ich schon mal umgesetzt. scheitere aber im Moment noch an einer Sache:
    Private Sub Befehl01_Click()
    Aufruf 1
    End Sub
    Wenn ich dann den Button aufrufe, stellt er korrekt den Pfad zusammen, öffnet auch Word, sagt aber dann: Leider konnte 'U:\Versich.....\1' nicht gefunden werden. Ist es möglich, dass der Pfad....?
    Wo habe ich denn jetzt da meinen Fehler. Der kann ja eigentlich nicht so weit weg sein, oder?
     
  14. Bulli1308 Neuer User
    Noch ein Hinweis zu deinen guten Ideen und Ansätzen und die von mir ähnlich gedacht sind. Ja leider wird jedesmal, d.h. nochmalige Owig, ein neuer Datensatz mit neuem Aktenzeichen angelegt. und aus dem alten Datensatz die Bemerkungen in den neuen Datensatz unter Bemerkungen eingefügt. Ist in meinen Augen, ich komme auch aus der Verwaltung, falsch. Ist aber so gewollt. Die Kollegin geht in 2 Jahren in den Ruhestand und will keine großen Änderungen. Deswegen muss ich aus dem gegeben das beste machen. Das das Formular Grunddaten z.B. so aussieht ist dem geschuldet. Ich bin schon mal froh, das ich sie soweit wie ich jetzt bin gebracht habe....
     
  15. Doming
    Doming Erfahrener User
    Dann guck nochmal nach meinem fehlerhaften Code, dann wirst Du sehen, dass es
    str = "winword.exe " & Pfad & "\" & Dokument
    heißen muss.
     
Thema:

Übergabe von Variablen

Die Seite wird geladen...
  1. Übergabe von Variablen - Similar Threads - Übergabe Variablen

  2. Formulare - Übergabe von Primär- und Fremdschlüssel mit VBA o. ä.

    in Microsoft Access Hilfe
    Formulare - Übergabe von Primär- und Fremdschlüssel mit VBA o. ä.: Hallo zusammen, ich benötige Hilfe bei Formularen und VBA. Ich habe ein Hauptformular mit drei Unterformularen. Im Kopfbereich des Hauptformulars befinden sich mehrere Befehlsschaltflächen,...
  3. 255 Zeichen bei Übergabe von TextBox an Zelle

    in Microsoft Excel Hilfe
    255 Zeichen bei Übergabe von TextBox an Zelle: Hallo Forum, Ich nutze eine TextBox für die Eingabe von Notizen. Nun können diese durchaus sehr lang ausfallen und ich habe festgestellt, das nach 255 Zeichen Schluss ist und ich bei der Übergabe...
  4. Keine Werte bei Übergabe eines Bereichs innerhalb einer Funktion

    in Microsoft Excel Hilfe
    Keine Werte bei Übergabe eines Bereichs innerhalb einer Funktion: Hallo, ich habe eine Funktion in VBA geschrieben, in der ich zwei Bereich aus einem Tabellenblatt, nach bestimmten Kriterien durchsuchen will. Nachdem ich nie einen Rückgabewerte bekomme, habe...
  5. MS Teams Meeting Raum Organisator erkrankt übergäbe der Rechte

    in Microsoft Teams Hilfe
    MS Teams Meeting Raum Organisator erkrankt übergäbe der Rechte: Hallo, Organisator eines Raumes in MS Teams erkrankt. Wie kann ich die Rechte an den Raum auf einen anderen übertragen? Bzw. kann ich im Vorfeld also beim Erstellen des Meetingraums bereits einen...
  6. übergabe an Word mit Textmarken

    in Microsoft Access Hilfe
    übergabe an Word mit Textmarken: Hallo Leute, vermutlich ist mein Problem banal, aber wenn man keine Ahnung hat ... mein VBA funktioniert mittlerweile so das sich Word öffnet und die Textmarken auch befüllt, aber nicht mit...
  7. Probleme bei der übergabe von Daten an ein Unterformular

    in Microsoft Access Hilfe
    Probleme bei der übergabe von Daten an ein Unterformular: Hallo, möchte gerne Daten an ein Unterformular übertragen, das weitere daten enthält. Hab schon total viel hin und her probiert. Aber ich bekomme es nicht hin, desweiteren habe ich auch probleme...
  8. Unterschied Public zu Parameter Übergabe ByRef / ByVal

    in Microsoft Excel Hilfe
    Unterschied Public zu Parameter Übergabe ByRef / ByVal: Hallo! Ich hätte einmal gern gewusst, was der genaue Unterschied bei einer Parameter Übergabe im Hintergrund ist. Ich kann eine Variable via Public überall verfügbar machen, genauso wie diese...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden