Ich habe wirklich etwas Hilfe! Hier ist ein Link zu einem Google Drive-Zip der Access-Datenbank, mit der ich kämpfe. https://drive.google.com/file/d/0BwjnhQS2X7_Qamt4clFLc1Ztb2c/view?usp=sharingMs-Access Form Datenexport nach Word
Also, was ich habe, ist eine Access-Datenbank, bestehend aus ein paar Tabellen und ein Formular und einige Unterformen. Die Datenbankinformationen werden über ein von mir erstelltes Formular in die Tabellen eingegeben. Im Beispiel heißt das Formular "Datenbank". Dieses Formular exportiert in ein Word-Dokument, Felder in der Datenbank gehen zu den Lesezeichen im Word-Dokument. Das funktioniert bisher sehr gut.
In der Anlage gibt es eine "Vorlage" Ordner mit dem ursprünglichen Word-Dokument, wenn der Code ausgeführt wird, speichert das ausgefüllte Formular in den Ordner "generierte" - funktioniert wie ein Charme. Es ist eine sehr lange Form für Anwendungen für Likörlizenzen.
So füllen Sie das Formular in Zugriff, speichert es in den Tabellen und exportiert die Daten in das Word-Vorlage-Dokument.
Das Problem, das ich habe, ist, dass es ein Unterformular auf Registerkarte 8 des Formulars gibt, wo "Director-Details" gespeichert sind. Es kann eine beliebige Anzahl von Direktoren pro Antrag geben. Es ist mir gelungen, auf die Daten in der Tabelle des Unterformulars zuzugreifen, aber ich habe keine Ahnung, wie die Daten in dieser Tabelle durchlaufen werden, um alle Informationen zu erhalten, die nur für diese Anwendung und nicht für andere Anwendungen relevant sind. Es gibt eine Beziehung zwischen der Director-Detailtabelle und der Anwendungsdetaillentabelle (dies ist die Haupttabelle), und ich verwende ein von mir erstelltes Anwendungsidentifikationsfeld und "ACNumber", das für jede Anwendung einzigartig ist. Auf dem Formular befindet sich eine Combobox, die die Anwendung auswählt, und das Formular und die Unterformulare zeigen die richtigen Daten an, wenn Sie sie auswählen.
Der andere Teil des Problems ist, wie kann ich dies zu Wort ausgeben? Ein Lesezeichen funktioniert nicht, weil alle Felder wiederholt werden. Gibt es eine Möglichkeit, dass alle Dateneinträge zu einem einzigen Lesezeichen in einem Textfeld mit den Etiketten ausgegeben werden können?
Dies ist, wie es auf dem Word-Dokument Form aussieht:
(Erste Person)
Vollständiger Name: generieren von 5.4 (a) aus der Datenbank Physikalische Adresse: generieren von 5.4 (b) aus der Datenbank Postleitzahl: generieren aus Artikel 5.4 (c) aus der Datenbank Postanschrift: generieren aus Artikel 5.4 (d) aus der Datenbank Postleitzahl: generieren aus Artikel 5.4 (e) aus der Datenbank Identitätsnummer: generieren aus Artikel 5.4 (f) aus der Datenbank
(Mehr pe rsons zu ergänzen, wenn nötig)
Ok, ich hoffe, das beschreibt mein Problem genau. Ich habe versucht alle Arten, um das funktioniert zu bekommen, aber es ist über mich hinaus, bitte helfen Sie Jungs !!! Unten ist der Code, den ich benutze: (die Schleife für das Unterformular funktioniert nicht, aber ein Eintrag aus dieser Tabelle wird in die aktuell vorhandenen Lesezeichen exportiert) Ich habe versucht, alle Arten, um das funktioniert zu bekommen, aber es ist mir nicht möglich, bitte hilf den Jungs !!!
`Private Sub ExportToWord_Click()
'Print customer slip for current customer.
Dim appWord As Word.Application
Dim doc As Word.Document
Dim drst As Recordset
Set drst = CurrentDb.OpenRecordset(Name:="62 Other Interests", Type:=RecordsetTypeEnum.dbOpenDynaset)
'Avoid error 429, when Word isnt open.
On Error Resume Next
Err.Clear
'Set appWord object variable to running instance of Word.
Set appWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
'If Word isnt open, create a new instance of Word.
Set appWord = New Word.Application
End If
Set doc = appWord.Documents.Open("C:\forms\templates\Form 3 - Sec 36(1).docx", , True)
With doc
.Bookmarks("wAppTradingNames").Range.Text = Nz(Me!AppTradingName, "")
.Bookmarks("wAppTradingName").Range.Text = Nz(Me!AppTradingName, "")
.Bookmarks("wCompanyName").Range.Text = Nz(Me!CompanyName, "")
.Bookmarks("wCompanyNumber").Range.Text = Nz(Me!CompanyNumber, "")
.Bookmarks("wRAddress1").Range.Text = Nz(Me!RAddress1, "")
.Bookmarks("wPostalCode").Range.Text = Nz(Me!PostalCode, "")
.Bookmarks("wRPostalAddress1").Range.Text = Nz(Me!RPostalAddress1, "")
.Bookmarks("wRPostalCode").Range.Text = Nz(Me!RPostalCode, "")
.Bookmarks("wDomicilium1").Range.Text = Nz(Me!Domicilium1, "")
.Bookmarks("wDomiciliumCode").Range.Text = Nz(Me!DomiciliumCode, "")
.Bookmarks("wDomAfter1").Range.Text = Nz(Me!DomAfter1, "")
.Bookmarks("wDomAfterCode").Range.Text = Nz(Me!DomAfterCode, "")
.Bookmarks("wTelOffice").Range.Text = Nz(Me!TelOffice, "")
.Bookmarks("wTelCell").Range.Text = Nz(Me!TelCell, "")
.Bookmarks("wTelHome").Range.Text = Nz(Me!TelHome, "")
.Bookmarks("wFaxNumber").Range.Text = Nz(Me!FaxNumber, "")
.Bookmarks("wEmail").Range.Text = Nz(Me!Email, "")
.Bookmarks("wFIP").Range.Text = Nz(Me!FIP, "")
.Bookmarks("wAppLicCat").Range.Text = Nz(Me!AppLicCat, "")
.Bookmarks("wLiqourType").Range.Text = Nz(Me!LiqourType, "")
.Bookmarks("wAppTradingName").Range.Text = Nz(Me!AppTradingName, "")
.Bookmarks("wAppTradingName").Range.Text = Nz(Me!AppTradingName, "")
.Bookmarks("wLPAddress").Range.Text = Nz(Me!LPAddress, "")
.Bookmarks("wErfNumber").Range.Text = Nz(Me!ErfNumber, "")
.Bookmarks("wLPPostalCode").Range.Text = Nz(Me!LPPostalCode, "")
.Bookmarks("wLPOwnership").Range.Text = Nz(Me!LPOwnership, "")
.Bookmarks("wLPOwnersName").Range.Text = Nz(Me!LpOwnersName, "")
.Bookmarks("wLpOwnerAddress").Range.Text = Nz(Me!LpOwnerAddress, "")
.Bookmarks("wLpRightOccupation").Range.Text = Nz(Me!LpRightOccupation, "")
.Bookmarks("wLPOccDuration").Range.Text = Nz(Me!LPOccDuration, "")
.Bookmarks("wLpPremNotErected").Range.Text = Nz(Me!LpPremNotErected, "")
.Bookmarks("wLpPremAlterReq").Range.Text = Nz(Me!LpPremAlterReq, "")
.Bookmarks("wLpPremAllGood").Range.Text = Nz(Me!LpPremAllGood, "")
.Bookmarks("wLpBuildCommence").Range.Text = Nz(Me!LpBuildCommence, "")
.Bookmarks("wLpBuildDuration").Range.Text = Nz(Me!LpBuildDuration, "")
.Bookmarks("wLpTradingHours").Range.Text = Nz(Me!LpTradingHours, "")
.Bookmarks("wLpRenewal").Range.Text = Nz(Me!LpRenewal, "")
.Bookmarks("wLpJobsa").Range.Text = Nz(Me!LpJobsa, "")
.Bookmarks("wLpJobsB").Range.Text = Nz(Me!LpJobsB, "")
.Bookmarks("wLpJobsC").Range.Text = Nz(Me!LpJobsC, "")
.Bookmarks("wNNPRegName").Range.Text = Nz(Me!NNPRegName, "")
.Bookmarks("wNNPRegNumber").Range.Text = Nz(Me!NNPRegNumber, "")
.Bookmarks("wNNPRegDate").Range.Text = Nz(Me!NNPRegDate, "")
.Bookmarks("wOtherInterests").Range.Text = Nz(drst!OtherInterests, "")
.Visible = True
.Activate
End With
Dim rst As Recordset: Set rst = CurrentDb.OpenRecordset(Name:="5 Director Details", Type:=RecordsetTypeEnum.dbOpenDynaset)
'Do While Not rst.EOF
With doc
.Bookmarks("wPersonLabel").Range.Text = Nz(rst!PersonLabel, "")
.Bookmarks("wFullName").Range.Text = Nz(rst!FullName, "")
.Bookmarks("wPhAddress").Range.Text = Nz(rst!PhAddress, "")
.Bookmarks("wPhCode").Range.Text = Nz(rst!PhCode, "")
.Bookmarks("wPAddress").Range.Text = Nz(rst!PAddress, "")
.Bookmarks("wPCode").Range.Text = Nz(rst!PCode, "")
.Bookmarks("wIdNumber").Range.Text = Nz(rst!IdNumber, "")
.Visible = True
.Activate
rst.MoveNext
End With
'Loop
doc.SaveAs2 "C:\forms\generated\" & Me!ACNumber & "_Form 3 - Sec 36(1).docx"
Set doc = Nothing
Set appWord = Nothing
Exit Sub
errHandler:
MsgBox Err.Number & ": " & Err.Description
End Sub
`
darüber zahlreiche Wege zu gehen sind, wäre die naheliegendste zu mir ein Lesezeichen zu setzen und einen Tisch auf diesem Lesezeichen hinzufügen . Überprüfen Sie [diese MSDN-Seite] (https://msdn.microsoft.com/en-us/library/w1702h4a.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1), um eine Tabelle zu erstellen. und [diese] (https://msdn.microsoft.com/en-us/library/tkf9d64e.aspx), um Werte zu den Zellen der Tabelle hinzuzufügen. Sie können die Tabelle auch in Ihre Vorlage einschließen und der Tabelle in der Schleife eine Zeile hinzufügen. Wenn Sie Probleme damit haben, stellen Sie eine neue spezifische Frage dazu. Deine Frage ist sehr weit gefasst. –
Auch ich würde Word Mail Merge-Funktionalität anstelle von eins nach dem anderen Werte von Re-Cord-Set zu Lesezeichen Text verwenden. –
Danke Eric! Das beantwortet die "Formatierung der Ausgabedaten in der Wortform" schön, ich werde eine Tabelle verwenden. Jetzt muss ich meinen Kopf darum drehen, wie man die Daten in der Teilformtabelle durchläuft, um die Daten auszuwählen und auszugeben, die sich auf die spezifische Anwendung beziehen. Die Tabelle dieses Unterformulars enthält Daten zu vielen einzelnen Formularen/Lizenzanwendungen. Ich muss nur die Einträge abrufen, die nur für die jeweilige Anwendung relevant sind. Ich habe keine Ahnung, wie ich das programmieren soll. – Realhost