Office: (Office 2016) Datenblatt nach Word

Helfe beim Thema Datenblatt nach Word in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Mittlerweile hab ich´s rausgefunden. Aber noch eine Frage: Wenn in einem Feld der Abfrage eine Berechnung stattgefunden hat, wie kann ich die in VBA... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Loisl, 12. Dezember 2020.

  1. Datenblatt nach Word


    Mittlerweile hab ich´s rausgefunden.
    Aber noch eine Frage: Wenn in einem Feld der Abfrage eine Berechnung stattgefunden hat, wie kann ich die in VBA abfragen? Der Wert wird angezeigt aber es kommt die Fehlermeldung: Das angeforderte Element ist nicht in der Sammlung vorhanden.
    Muss ich dann nochmal alles neu in VBA berechnen?
     
  2. Hallo,

    kannst du mal zeigen (im Code und nicht als Bild!) was du da eigentlich machst und wo bzw. in welcher Zeile der Fehler entsteht?

    Gruß Ulrich
     
  3. Hallo Ulrich,
    also der Code-schnipsel sieht so aus:
    .Cell(i, 6) = Format(Gesamtnetto, "#,##0.00 €") 'Hier kommt der Fehler
    .Cell(Row:=i, Column:=4).Merge MergeTo:=.Cell(Row:=i, Column:=5)
    .Cell(i, 4) = "Gesamtnetto:"
    .Rows.Add
    i = i + 1

    Gesamtnetto kommt in der Abfrage vor.
    Ich habe es auch schon mit dem Verweis auf ein Textfeld (ebenfalls berechnet)
    versucht (Me.Gesamtnetto), aber da kommt der gleiche Fehler
     
  4. Datenblatt nach Word

    Hallo Loisl,

    diese Infos reichen leider nicht aus, hier sitzt doch keiner vor deinem Rechner! Andere würden sagen: ein bißchen mehr Butter bei die Fische darfs schon sein.

    .Cells ist auch nicht Teil des Access Objektmodells, sondern gehört sicherlich zu Word. Wird das richtig referenziert?
    Ohne Code und dem SQL-Text der Abfrage kommen wir nicht weiter. Vielleicht kannst du auch eine Demo hochladen?

    Gruß Ulrich

    PS:
    Bitte verwende Code-Tags!
     
  5. Stimmt Cell gehört zu Word. Dort habe ich eine Tabelle erstellt und übertrage Daten von Access in eine Word-Tabelle (einzelne Rechnungsposten).
    Der Code ist sehr umfangreich, weil eben auch noch das Formatieren der Tabelle und einzelner Zellen dazukommt.
    Hier der Code
    Code:
    Falls ich es noch hinbekomme schicke ich noch eine DemoDatei
     
  6. Ich hoffe, das Hochladen hat funktioniert. Ist das erste Mal *Smilie
     
  7. Hallo Loisl,

    bei deinem Beispiel fehlt noch die Vorlagendatei.

    Was aber sofort bei der ersten Durchsicht auffällt ist, daß du reservierte VBA Funktions- und Anweisungsbezeichnungen als Variablennamen verwendest sowie Feldbezeichner und Steuerelemente den gleichen Namen verwenden.
    Es wird immer wieder ge*bets*müh*len*ar*tig darauf hingewiesen, zu welchen schwer auffindbaren Fehlern das führen kann. Fehlende Namenskonventionen dienen auch nicht gerade der besseren Lesbarkeit.
    Außerdem sind die Variablendefintionen fehlerhaft bzw. existieren erst gar nicht. Feldbezeichner sollte keine Sonderzeichen enthalten, außer vielleicht den Unterstrich, und keinem reservierten Bezeichner entsprechen.

    Mit "Dim rsRe, rsReE As Recordset" wird nur die Variable rsReE mit dem Datentyp 'Recordset' angelegt, die anderen sind vom Defaultdatentyp 'Variant'.

    Das sind eigentlich alles Dinge, die zu den Grundkenntnissen der VBA-Programmierung gehören. Du solltest außerdem immer in jedem Modul und jeder Klasse die Anweisung "Option Explicit" am Anfang einfügen und dann mal kompilieren; danach wirst du eine Menge Fehlermeldungen erhalten, die erstmal bereinigt werden sollten.

    Noch eine kleine Anmerkung:
    in #5 wurde schon mal das Thema angesprochen, wann Document.Open() und wann Documents.Add() verwendet wird. *rolleyes.gif*
    Lese das mal am besten nochmal in der Hilfe durch.

    Gruß Ulrich
     
  8. Datenblatt nach Word

    Hallo Ulrich,
    und viiiielen Dank für Deine Hinweise, und die Arbeit, die Du Dir mit meinem Projekt machst.
    Ich habe einiges überarbeitet und hoffe es passt nun (zumindest etwas besser).
    Allerdings kann ich die Datenbank jetzt nicht mehr schicken, weil sie zu groß ist, obwohl ich nicht wirklich viel daran geändert habe, außer ein paar Codezeilen.
    Im Anhang die Worddatei.
    Gruß Loisl
     
  9. Reparieren und Komprimieren -> sollte die DB wieder schrumpfen lassen.

    Ich lege bereits im Template (.dot) eine zweizeilige Tabelle mit Spaltenüberschriften und entsprechenden Formatierungen an. Das immer und immer wieder im VBA-Code beim Erzeugen einer Rechnung zu tun, halte ich für unnötig.
    Des Weiteren dürfte es einfacher sein, eine Änderung im Template vorzunehmen, als im VBA-Code.


    Bei deiner Prüfung ob bereits eine Word-Instanz geöffnet ist, lässt du den else Zweig offen.
    Dort sollte die get-Methode angewendet werden, um sich die Word-Instanz in einer Objekt-Variablen zu holen.
    Code:
    So sieht das bei mir aus. DAs Fehlerhandling nach dem Visible wieder einschalten.
     
  10. Da hätt ich auch selber drauf kommen können, die Tabelle gleich anzulegen und zu formatieren. Bin ich aber nicht.*wink.gif*
    Im Anhang die DemoDatei.
    Und - vielen Dank für Deine Hilfe. Bin echt dankbar!
    Gruß
    Loisl
     
  11. Eigentlich habe ich 3 Tabellen.

    1 Tabelle für Adress und Absenderdaten, Rg-Daten Kopf
    1 Tabelle für die zu berechnenden Leistungen
    1 Tabelle für die Schlußberechnung des Nettos, Mwst-Satz, Mwst

    In der Tabelle sollte es genügen das Netto, den MwSt-Satz zu speichern, nicht aber das berechnete Brutto bzw. die MwSt.

    Was mir bei Access total auf die Nerven geht, ist das bei Zahlfeldern automatisch die 0 als Standardwert festgelegt wird.
    Das macht bei Fremdschlüsselfeldern überhaupt keinen Sinn, bzw. führt im schlimmsten Fall zum Fehler bei referentieller Integrität.
    Eine Leistung mit einem Preis 0 oder eine Menge mit 0 zu berechnen ist genauso sinnfrei. Ich entferne die immer.

    Vermeide "-" Zeichen in Feldnamen -> das wird als Operator ausgewertet in Access.

    Die Prüfung der WordObj Objektvariablen auf nothing ist unsinnig.
    Die wird immer nothing ergeben.

    Die Variable ist innerhalb der Prozedur deklariert. D.h. nach Durchlauf der Erstellung ist die Variable sowieso nicht mehr existent, genauso wenig wie beim Beginn des Ausführens der Sub. Das ist aber unabhängig davon, ob die Word-Instanz noch/schon existiert. D.h. es wird immer eine Instanz erstellt werden, selbst wenn Word schon geöffnet ist.

    Ich würde auch nicht auf activeDocument referenzieren, sondern dem geöffneten Dokument eine eigene Objektvariable zuweisen.
    Code:
     
  12. Wenn ich das so mache:
    Code:
    und anschließend:
    Code:
    kommt die Fehlermeldung: Objekt unterstützt diese Eigenschaft oder Methode nicht.
    Bei:
    Code:
    wird das Worddokument geöffnet.
    Was muss ich denn jetzt da wieder machen?
     
  13. Datenblatt nach Word

    Wenn wdDoc.Visible = True den Fehler erzeugt, WordObj.Visible = True aber nicht, dann wird der Hund wohl bei den Eigenschaften von wdDoc begraben sein. Hast Du Dir mal die Mühe gemacht, Dir das Objektmodell von Word, hier das Document-Objekt, anzusehen? Wohl eher nicht, denn dann hättst Du gesehen, dass ein Document-Objekt keine "Visible"-Eigenschaft hat und das mit dem Visible = True auch nichts werden kann.

    Gruß
    Fred
     
  14. Hallo Fred,
    ich habe zwar nachgesehen aber was hilft das, wenn man nicht weiß, nach was man suchen muss. Es ist leicht, wenn man sich auskennt und weiß, was ein Document, Documents, Eigenschaften, Objekte usw. ist. In dem ganzen Wust, der sich Hilfe nennt, kennen sich Fachleute aus, weil sie wissen nach was sie suchen. Ich suche oft den ganzen Tag und komm nicht weiter. Deshalb wendet man sich ja auch an ein Forum in der Hoffnung, dass jemand den entscheidenden Hinweis gibt. Verurteilen hilft da nicht wirklich weiter und so komm ich mir momentan vor.
    Und mein eigentliches Problem, wegen dem ich geschrieben habe, ist deshalb immer noch nicht gelöst.
    Umso verwunderlicher ist es, dass mittlerweile, warum auch immer, zwei berechnete Werte in der Word-Tabelle angezeigt werden, die letzten zwei aber nicht und das, obwohl der Code identisch ist. Es wird lediglich eine neue Zeile eingefügt und auf ein anderes Textfeld verwiesen.
    Gruß Loisl
     
  15. bzgl. visible

    DAs hat ja Fred schon beantwortet.
    Von deinem eigenen Code ausgehend, setzt du die Application auf visible. Damit ist aus deinem eigenen Code klar, dass .Visible eine Eigenschaft der Anwendung ist und nicht des Dokuments. Über den . siehst du doch im Aufklappmenü auch sofort, welche Methoden oder Eigenschaften zu einem Objekt gehören. Was nicht angeboten wird, ist in "aller" Regel, auch nicht auf das Objekt anwendbar.

    Du hast vieles sehr umständlich, vieles was man einfach über Schleifen auch abarbeiten kann, oder u. Umständen bereits im Template vorgeben.

    Edit:Bzgl. deines Fehlers im weiteren Code. Du machst einen Merge der Spalten, dadurch reduzieren sich die Spalten auf 5 pro Zeile, du versuchst aber per code in die .Cell(i,6) zu schreiben.
    Da kracht es im Gebälk :-)

    Noch was, du hast im Dateinamen einen Punkt nach der Rg-Nr. DAs ist nicht zulässig, da nach dem Punkt der Suffix der Dateiart kommt also .pdf z.b.
     
Thema:

Datenblatt nach Word

Die Seite wird geladen...
  1. Datenblatt nach Word - Similar Threads - Datenblatt Word

  2. Datenblatt per Makro benennen

    in Microsoft Excel Hilfe
    Datenblatt per Makro benennen: Grüsse zusammen, ich habe beim suchen folgendes gefunden: Tabellenblatt automatisch benennen nach Zelleninhalt Ich würde das ganze gerne nutzen, weiss nur nicht wie ich es am besten anpasse. Ich...
  3. Funktionen im Datenblatt

    in Microsoft Excel Hilfe
    Funktionen im Datenblatt: Guten Morgen zusammen, bei der Erstellung eines (neuen) Dienstplanes bin ich auf einige Frage gestossen und hoffe das mir vllt der ein oder andere weiterhelfen kann :) Unsere Version: Office 2013...
  4. Datenblatt automatisch befüllen

    in Microsoft Excel Hilfe
    Datenblatt automatisch befüllen: Guten Tag, ich soll für einen Freund ein Excel Problem lösen. Dieser arbeiten in einer Firma und kümmert sich dort um die Ausbildungplanung der Kollegen. Jeder Mitarbeiter muss auf seinem Posten...
  5. Wie kann man Spalten in einem Unterformular (Datenblatt) verbergen?

    in Microsoft Access Hilfe
    Wie kann man Spalten in einem Unterformular (Datenblatt) verbergen?: Guten Morgen zusammen! Ich habe in einem Access-Formular ein Unterformular als Datenblatt eingefügt. Das Unterformular enthält sechs Felder/Spalten, wovon vier Felder/Spalten aber der Erfassung...
  6. optische Markierung eines Datensatzes im Datenblatt

    in Microsoft Access Hilfe
    optische Markierung eines Datensatzes im Datenblatt: Hallo, ich wollte mal fragen, ob es in Access die Möglichkeit gibt per Klick auf einen Datensatz in einem sfm die Markierung wie im Bild auszuführen. Es wird hier, egal in welches Feld des...
  7. Festlegen der Standardformatierungsoptionen für Datenblätter

    in Microsoft Access Tutorials
    Festlegen der Standardformatierungsoptionen für Datenblätter: Festlegen der Standardformatierungsoptionen für Datenblätter Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007...
  8. Tabellenblätter für Eingaben sperren ab bestimmtem Datum UND Uhrzeit

    in Microsoft Excel Hilfe
    Tabellenblätter für Eingaben sperren ab bestimmtem Datum UND Uhrzeit: Huhu, ich habe in einer Excel Tabelle mehrere Reiter (z.Bsp. 01.12.2020-31.12.2020). Nun möchte ich, dass z. Bsp. das Sheet vom 01.12.2020 nr bis zum 02.12.2020 6 Uhr morgens bearbeitbar ist....
  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