maggy79 Geschrieben 9. Juli 2002 Geschrieben 9. Juli 2002 Hi, also, ich soll für einen Serienbrief in Word ein neues Feld erzeugen, welches sich aus schon vorhandenen Feldern des Serienbriefes zusammensetzt. So braucht z.B. der User nur noch 1 Feld einfügen, und kann sich Arbeit ersparen. Die Datenbank ist in Access, und die Form des zu erstellenden Feldes für den Serienbrief ist vorgegeben. Nun brauch ich eine Funktion, um aus der besteheden Tabelle die Spalten herauszuholen und zu in der vorgegebenen Form wieder auszugeben. Ich habe dabei an ein Array und dann an ein SQL Komando an die Datenbank gedacht, die mir die benötigten Daten zusammensetzt. Dann will ich die Daten des SQL dem Array übergeben, und so mein benötigten Felder bekommen. Wie kann ich das am besten anstellen? Zitieren
Goos Geschrieben 9. Juli 2002 Geschrieben 9. Juli 2002 Oh oh....wenn du davon keine Ahnung hast, dann solltest dir wohl zuerst mal ein anstaendiges Word VBA Buch kaufen in dem auch sowas beschrieben ist. Das ganze geht halt nicht gerade in zwei Zeilen....dazu muss man sich schon n bissl naeher damit beschaeftigen. Goos Zitieren
maggy79 Geschrieben 10. Juli 2002 Autor Geschrieben 10. Juli 2002 Hi, ich habe eben in VBA noch nicht besonderlich viel gemacht. Eigentlich garnichts. Nur etwas in VB. Hat nicht jemand einen kleinen Tipp für mich? Ich kese mich gerade in VBA etrwas ein. Zitieren
Meenzer Geschrieben 11. Juli 2002 Geschrieben 11. Juli 2002 Hi! Ich habe hier ein Beispiel, wo ich Daten aus Access in ein Worddoc schreibe. Veilleicht hilft es Dir. ------------------------------------------------------------------------------- Dim WordObj As Object Dim rs1 As Recordset Dim SQL as String Dim DOC As String Dim bolWord As Boolean Dim strPath As String SQL = "SELECT DEINE DATEN" 'Recordset öffnen Set rs1 = CurrentDb.OpenRecordset(SQL, dbOpenForwardOnly) 'Pfad der Datei ermitteln strPath = DLookup("ProgPath", "z_Settings", "[iD] = 1") 'Word öffnen Set WordObj = GetObject(, "Word.Application") If Err.Number <> 0 Then Err.Clear Set WordObj = CreateObject("Word.Application") bolWord = True Else WordObj.Activate bolWord = False End If If IsNull(rs1![WSDAT]) Then AGDAT = Format(Now, "Short Date") Else AGDAT = rs1![WSDAT] AUFTP = rs1![AUFTP] KENNZ = rs1![KENNZ] FZART = rs1![FZART] SCHAD = fktZeichenWechsel(rs1![sACHS], Chr(10), "", "N", True) NOTIZ = fktZeichenWechsel(rs1![MATERIAL], Chr(10), "", "N", True) FKENN = fktZeichenWechsel(KENNZ, " ", "_", "N", True) 'Dokument öffnen ( Vorlage ) WordObj.Documents.Open FileName:=strPath & "\SYS\Datei.doc" WordObj.Visible = True With WordObj.ActiveDocument .Formfields("FELD1").Result = rs1!Feld1 .Formfields("FELD2").Result = rs1!Feld2 .Formfields("FELD3").Result = rs1!Feld3 .Formfields("FELD4").Result = rs1!Feld4 .Formfields("FELD5").Result = rs1!Feld5 .Formfields("FELD6").Result = rs1!Feld6 .Formfields("FELD7").Result = rs1!Feld7 End With 'speichern WordObj.ActiveDocument.SaveAs FileName:=strPath & "Datei.doc" WordObj.ActiveDocument.Save WordObj.ActiveDocument.Close If bolWord Then WordObj.Application.Quit Set WordObj = Nothing rs1.Close Set rs1 = Nothing ------------------------------------------------------------------------ Das gilt leider nur für einen DS. bei einem Serienbrief müsstes Du eine Schleife durchlaufen und immer ein neues Dokument öffnen. Ich ho ffe es Hilft Dir weiter. Gruss Zitieren
maggy79 Geschrieben 11. Juli 2002 Autor Geschrieben 11. Juli 2002 Hi, danke für das Beispiel. Ich versuche es mal. Zitieren
Meenzer Geschrieben 11. Juli 2002 Geschrieben 11. Juli 2002 Original geschrieben von Mercutio If IsNull(rs1![WSDAT]) Then AGDAT = Format(Now, "Short Date") Else AGDAT = rs1![WSDAT] AUFTP = rs1![AUFTP] KENNZ = rs1![KENNZ] FZART = rs1![FZART] SCHAD = fktZeichenWechsel(rs1![sACHS], Chr(10), "", "N", True) NOTIZ = fktZeichenWechsel(rs1![MATERIAL], Chr(10), "", "N", True) FKENN = fktZeichenWechsel(KENNZ, " ", "_", "N", True) Den Teil kannst Du weglassen, da schreibe ich die Werte des Recordsets nur in Variablen. Und die Pfadangabe kannst Du auch einfach direkt zuweisen. zB. strPath = "C:\Test\Test.doc" das hatte ich vorhin vergessen zu sagen. Gruss Zitieren
maggy79 Geschrieben 11. Juli 2002 Autor Geschrieben 11. Juli 2002 Hi, ich will jetzt die Werte des Recordsets, auf ein Array zuweisen. Z.B.: rs as recordset a = array rs[Name] = =a[1] ?????? Wie kann ich das machen? Zitieren
Meenzer Geschrieben 11. Juli 2002 Geschrieben 11. Juli 2002 Hi! Andesderum gehts: a[0] = rs!Name a[1] = rs!Vorname a[2] = rs!Anrede Allerdings würde ich das Array so definieren: Dim a(10) as String Die 10 steht in dem Fall für die Anzahl der Felder im Array. Der Typ des Arrays ist dann ein String. Gruss Zitieren
maggy79 Geschrieben 11. Juli 2002 Autor Geschrieben 11. Juli 2002 Hi, danke!!! Wozu ist den so ein Record eigentlich da? (dumme Frage vielelicht)? Zitieren
Meenzer Geschrieben 11. Juli 2002 Geschrieben 11. Juli 2002 Aus der Hilfe: "Ein Recordset-Objekt stellt die Datensätze in einer Basistabelle oder die Datensätze, die das Ergebnis einer Abfrage sind, dar." Ein Recordset ist quasi ein Abbild einer Tabelle. Du kannst durch eine Abrage oder ein SQL - Statement auch diverse Filter setzen und Dir nur die Datensätze holen , die Du haben möchtest. Ausserdem kannst Du damit neue DS anfügen, DS editiern und löschen. In der Hilfe ist alles nochmal ausführlich erklärt. gruss Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.