Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBA in Access

Empfohlene Antworten

Veröffentlicht

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?:(

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

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.

:(

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

Hi,

danke für das Beispiel. Ich versuche es mal.

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

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?

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

Hi,

danke!!!

Wozu ist den so ein Record eigentlich da? (dumme Frage vielelicht)?

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.