Office: (Office 2016) Datenblatt nach Word

Helfe beim Thema Datenblatt nach Word in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen, ich habe ein Unterformular (Positionen) in der Datenblattansicht mit Spalten für eine klassische Rechnung, also Pos, Leistung, Menge,... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Loisl, 12. Dezember 2020.

  1. Datenblatt nach Word


    Hallo Zusammen,
    ich habe ein Unterformular (Positionen) in der Datenblattansicht mit Spalten für eine klassische Rechnung, also Pos, Leistung, Menge, Einzelpreis, Netto.
    Nun möchte ich diese komplette Tabelle in ein Word-Dokument einfügen und zwar bei dem Bookmark "Leistung".
    Es gelingt mir zwar das Word-Dokument aufzurufen und anzuzeigen, aber das einfügen bekomme ich einfach nicht hin.

    In Excel funktioniert das bei mir so:

    wks_Eing.Range("A9:F" & lz).Copy

    If WordObj.ActiveDocument.Bookmarks.Exists("Leistung") Then
    WordObj.Selection.Goto What:=-1, Name:="Leistung" '-1 = wdGoToBookmark
    WordObj.Selection.Paste
    Application.CutCopyMode = False
    WordObj.Selection.Tables(1).Rows(1).HeadingFormat = False
    WordObj.Selection.Tables(1).Rows.LeftIndent = Application.CentimetersToPoints(0)
    End If

    With WordObj.Selection.Tables(1)
    If .Style "Tabellenraster" Then
    .Style = "Tabellenraster"
    End If
    .ApplyStyleHeadingRows = True
    .ApplyStyleLastRow = False
    .ApplyStyleFirstColumn = True
    .ApplyStyleLastColumn = False
    .ApplyStyleRowBands = True
    .ApplyStyleColumnBands = False

    End With

    Aber wie ist das in Access?
    Danke schon mal für die Hilfe
    Gruß Loisl

    :)
     
  2. Word kennt die Methode ConvertToTable. Damit wird aus einem in Access bereitgestellten Recordset eine Wordtabelle erzeugt, die dann am Lesezeichen eingefügt werden kann.
    Für die Optik müsste dann die Wordtabelle noch etwas nachformatiert werden (Anwendung eines Standardformates oder Verwendung von Einzelmaßnahmen).
    Zur Orientierung könntest Du Dich hieran bedienen: Demo-Datenbank - Wordtabelle aus Access füllen
     
  3. Danke für die Antwort und auch für die Datenbank
    Leider bekomme ich einen Fehler, von dem ich nicht weiß, wo er herkommt bzw. wie ich ihn wegbekommen.
    Bisher habe ich:
    If WordObj Is Nothing Then
    Set WordObj = CreateObject("Word.Application")
    Else
    End If
    WordObj.Documents.Add (CurrentProject.Path & "VorlagenRechnung.docx")
    WordObj.Visible = True

    If WordObj.ActiveDocument.Bookmarks.Exists("Leistung") Then
    WordObj.Selection.Goto What:=-1, Name:="Leistung" '-1 = wdGoToBookmark
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:=6

    Aber beim Einfügen einer neuen Tabelle kommt die Fehlermeldung:
    Objektvariable oder With-Block Variable nicht festgelegt
    Was mach ich hier falsch?
     
  4. Datenblatt nach Word

    Hallo Loisl,

    mit WordObj.Documents.Open() wird eine Datei geöffnet.

    Ulrich
     
    knobbi38, 14. Dezember 2020
    #4
  5. Ich sehe Verbesserungsmöglichkeiten:

    - Documents.Add wird typischerweise für "echte" Vorlagen (*.dotx oder *.dotm) angewendet.

    - Der Fehler tritt auf, weil Acces den Befehl ActiveDocument.Tables.Add nicht kennt. Da fehlt das Word-Objekt davor. Besser noch: arbeite mit einem Dokumenten-Objekt.
     
    haklesoft, 14. Dezember 2020
    #5
  6. Hallo Ulrich,
    also ich öffne jetzt mit .open
    Meine Zeile zum Erstellen der Tabelle in Word sieht nun so aus:

    WordObj.ActiveDocument.Tables.Add Range:=WordObj.ActiveDocument.Bookmarks("Leistung").Range, NumRows:=2, NumColumns:=6

    Dieser Teil:
    WordObj.ActiveDocument.Bookmarks("Leistung").Range
    war der Aufhänger

    Wie auch immer, jetzt wird die Tabelle erstellt.
    Aber noch eine große Frage:
    Wie kann ich die Spalten einer Tabelle durchlaufen.
    Ich möchte nicht alle Spalten durchlaufen, sondern nur einen bestimmten Bereich.
    Mit i = 0 To rs(7) funktioniert das leider nicht.
    Wie spreche ich die Tabellenspalten an?
    Ich finde immer nur For each oder rs.fields.count
    Gruß Loisl
     
  7. Danke für die Hinweise.
    Allerdings kann ich mit "einem Dokumenten Objekt" nichts anfangen. Da kenn ich mich nicht aus, was du damit meinst bzw. was das überhaupt ist.
    Gruß Loisl
     
  8. Datenblatt nach Word

    Statt mit ActiveDokument zu arbeiten weist Du das Dokument einer Objektvariablen zu. Ungefähr so:

    Code:

    Datenblatt nach Word [​IMG]
    [+][-]
    ' VBA, XML, HTML => Forum-HTML, (c) 2018 by KHV, VB-Code by haklesoft
    Auf Selection wurde verzichtet.
     
    haklesoft, 14. Dezember 2020
    #8
  9. Hallo Loisl,

    Ich war jetzt glatt etwas verwirrt. In Access spricht man von Datensätzen und Feldern und nicht von Spalten!

    Die wichtigste Grundlage für die Beantwortung solcher Fragen ist die Onlinehilfe bzw. Dokumentation. Dort findet man für gewöhnlich immer erste Hinweise bei den Objekten und Beispielen, so auch hier:
    https://docs.microsoft.com/de-de/off...-dao-recordset
    https://docs.microsoft.com/de-de/off...collection-dao
    Demnach wird ein Feld über die Ordnungszahl angesprochen:
    Code:
    Gruß Ulrich
     
    knobbi38, 14. Dezember 2020
    #9
  10. Die einfachste und sinnvollste Maßnahme wäre, nicht die komplette Tabelle in das Recordset zu laden, sondern über eine Abfrage genau jene Felder mit jenen Datensätzen, die man benötigt. In der Abfrage kann man zudem die Reihenfolge der Felder anpassen und somit die Felderauflistung in Übereinstimmung mit der Zieltabelle bringen.

    Dann ist das Recordset schlank und flach, was für sich schon im Sinne von Best Practice erstes Ansinnen sein sollte. In Folge kann man dann einfach entspannt eine Schleife über alles laufen lassen.
     
  11. Hallo Ulrich,
    und vielen Dank. Das war der entscheidende Hinweis.
    Danke auch an die anderen Antwortgeber. Na, da habe ich aber jetzt noch einiges zu ändern.
    Mittlerweile läuft´s und die Rechnung ist fertig, allerdings sehr langsam.
    Ich hab halt noch das Excel-Denken intus.
    Ich werd mal versuchen, das mit der Abfrage hinzubekommen.
    Herzliche Grüße
    Und vielen Dank nochmal an alle.
    Loisl
     
  12. Unter Nutzung einer vorhandenen Wordinstanz oder bei Erzeugung einer neuen Wordinstanz per verwendetem Late Binding? Eine oder mehrere Rechnungen während der Laufzeit der Anwendung?

    Das Word-Objekt selber ist ein sehr umfangreiches, da dauert es für sich, wenn man dieses (erstmals) lädt.
     
  13. Datenblatt nach Word

    Danke nochmal für die Antwort.
    Also ich habe in den Verweisen auf die Word 16.0 Object Library verwiesen.
    Keine Ahnung, was das für ein Binding ist.
    Aber ich denke, dass es dem geschuldet ist, dass ich die ganze Tabelle im Feld der Rechnungsnummer durchlaufe um die Rechnungsnummer zu suchen und mir dann aus diesem Datensatz die Daten zu holen.
    Das mit der Abfrage, bekomme ich irgendwie nicht hin. Ich hab zwar schon eine erstellt, aber es kommt die Fehlermeldung: Es wird ein Parameter erwartet, aber es wurden zuwenig Parameter übergeben.
    Die Abfrage hat als Kriterium einen Verweis auf die Rechnungsnummer im geöffneten Rechnungsformular.
    Wenn ich die Abfrage ohne VBA starte öffnet sie sofort und ohne meckern.
    Ich habe das hier als Code:
    Set rs = db.OpenRecordset("AF_Rechnungen")
    Was muss ich denn hier noch machen?
    Gruß Loisl
     
  14. Dann hätte man Early Binding, sprich das Objekt wird bereits beim Laden der Anwendung mitgeladen und nicht erst mit Aufruf der Prozedur => Verlagerung und anderes Laufzeitgefühl.
    Ein sauberer Aufruf sähe dann aber so aus:
    Code:
    Mit Early Binding handelt man sich aber schneller (Verweis)Probleme ein, wenn beim Nutzer die Versionen (hier von Word) wechseln.

    Statt in Schleife zu suchen besser filtern auf die Rechnungsnummer (SQL statt VBA, Bagger statt Sandschaufel).

    Code:
    - Abfrage statt ganze Tabelle
    - Recordset nur einfach lesend öffnen. Ohne Angabe würde das Recordset als Dynaset (Standard) geöffnet. Diese muss zusätzlich zum Lesen mögliche Schreibaktionen verwalten, was mehr Aufwand = höhere Laufzeit bedeutet.
     
  15. Muss ich dann statt [Feldliste] die einzelnen Felder auflisten, die ich haben möchte?
    So?
    Set rs = db.OpenRecordset( _
    "SELECT [Id_Rechnungen],[Obj_Bezeichnung] FROM AF_Rechnungen WHERE ID_Rechnungen = " & Me.ID_Rechnungen, _
    dbOpenForwardOnly)
    Allerdings will er jetzt zwei Parameter. Seufz
     
Thema:

Datenblatt nach Word

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

  2. Zwischen Tabellen wechseln ohne Makro?

    in Microsoft Excel Hilfe
    Zwischen Tabellen wechseln ohne Makro?: Moin Moin Leute, ich habe folgendes Problem: Ich habe eine Datei mit 7 Tabellenblättern, und habe Marko-Button eingefügt über die man zwischen den Tabellen hin und her springt. Das soll als eine...
  3. Neue Namen - alphabetisch sortieren - zugehörige Zellen auf anderen Datenblätter ebenfalls sortieren

    in Microsoft Excel Hilfe
    Neue Namen - alphabetisch sortieren - zugehörige Zellen auf anderen Datenblätter ebenfalls sortieren: Hallo zusammen, bin hier neu und Excel ist noch nicht mein Freund... Vielen Dank vorab fürs Lesen und hineindenken. Ich habe eine Excelmappe mit vielen Blättern. Nur auf dem ersten Blatt sollen...
  4. Excel: numerischer Verweis auf ein anderes Datenblatt

    in Microsoft Excel Hilfe
    Excel: numerischer Verweis auf ein anderes Datenblatt: Hallo. Ich suche nach einer Möglichkeit, Daten aus einem anderen Datenblatt zu entnehmen, ohne dass ich dessen "Datenblatt-Namen" kenne. Ich kenne die Nummer des aktuellen Datenblatts......
  5. 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...
  6. 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...
  7. 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...
  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