Ich möchte Etiketten, die im Word-Format vorliegen, je nach Bedarf von Access aus drucken. Der jeweilige Bedarf wird in einer Accessdatei ermittelt. Habe geringe Programmierkenntnisse und bitte um Hilfe
Guten Tag!
ZitatDer jeweilige Bedarf wird in einer Accessdatei ermittelt
In welcher Form und mit welchen Parametern?
Es handelt sich um eine einfache Datei, aus der die erforderliche Anzahl an Etikettenbögen hervorgeht.
Na dann - probiern wir's ...
Erzeuge auf deinem Formular einen Button, z.B. cmdEtikettendruck
In dessen Klick-Ereignis legst du folgenden Code:
Private Sub cmdEtikettendruck_Click()
Dim anzahl as Integer, i as Integer
'Dim DocVariable as String
Dim objWord As Word.Application
anzahl = Me!DeinFormFeldMitDerAnzahlDerAusdrucke
'DocVariable = ErmittlungDesDateinamens
Set objWord = CreateObject("Word.Application")
With objWord
.Visible = True
'das zu öffnende Worddokument
'Wenn es unterschiedliche Dateien gibt,
'muss die entsprechende Datei durch eintraqen der DocVariable
'zwischen den Klammern ohne die Gänsefüße erfolgen
.Documents.Open ("C:\DeinVerzeichnis\DeineEtikettendatei.doc")
For i = 1 To anzahl
.ActiveDocument.PrintOut 'x mal ausdrucken
Next i
End With
'Etikettendatei unverändert lassen und nicht speichern
objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
objWord.Quit
Set objWord = Nothing
End Sub
HTH
p.s. der Code ist NICHT getestet!
Den Code habe ich mehr oder weniger so schon getestet, und er funktioniert auch. Mein Problem ist: es gibt viele unterschiedliche Etiketten-Word.DOCs, die je nach Bedarf gedruckt werden sollen. Die erforderliche Anzahl erhalte ich aus der Access-Datei; was mir fehlt, ist der Code, der nacheinander die einzelnen Word-Dateien öffnet, bis die Access-Datei abgearbeitet ist.
Hallo,
na du bist gut ...
Zitat von: mariposas am April 14, 2014, 20:30:00
Es handelt sich um eine einfache Datei, aus der die erforderliche Anzahl an Etikettenbögen hervorgeht.
und....
Zitatwas mir fehlt, ist der Code, der nacheinander die einzelnen Word-Dateien öffnet, bis die Access-Datei abgearbeitet ist.
Was ist unter 'Access-Datei abgearbeitet' zu verstehen?
Und woher kommen die Dateinamen? Sind die in einer Tabelle gespeichert,
wie hängt die Anzahl mit den Dateien zusammen ... ?
Wenn du konkretere Angaben machst kann ich dir auch konkreter helfen - wahrscheinlich ;)
Sorry, ist ja klar. Manchmal stecke ich drin und setze Dinge voraus, die so gar nicht klar sein können.
In der Accessdatei sind die Namen der Word-DOCs gespeichert sowie die Anzahl der zu druckenden Exemplare. Diese Access-Datei muss nun Datensatz für Datensatz bis zum Ende aufgerufen und die WORD-Dateien entsprechend oft gedruckt werden.
Beispiel:
Name Anzahl
WORD1.DOC 0
WORD2.DOC 10
WORD3.DOC 2
etc.
OK, besser wird' nicht ... ;)
Ich nehme also an, dass ALLE deine Dateien im gleichen Verzeichnis zu finden sein werden.
Ich nenne deine Tabelle (das ist es nämlich und keine Access-Datei) der Einfachheit halber 'tblTabelle'.
Als erstes musst du die gesamte Tabelle in Recordset laden:
Set rst = CurrentDB.OpenRecordset("SELECT DName, AAnzahl FROM tblTabelle WHERE AAnzahl > 0")
Danach wird dieses Recordset schrittweise durchlaufen und die Ausdrucke abgerufen.
Versuche den untenstehenden geänderten Code:
Private Sub cmdEtikettendruck_Click()
Dim anzahl as Integer, i as Integer
Dim DocVariable as String
Dim objWord As Word.Application
Dim rst As DAO.Recordset
Set rst = CurrentDB.OpenRecordset("SELECT DName, AAnzahl FROM tblTabelle WHERE AAnzahl > 0")
Set objWord = CreateObject("Word.Application")
Do While Not rst.EOF
DocVariable = rst!DName
anzahl = rst!AAnzahl
With objWord
.Visible = True
.Documents.Open ("X:\DeinVerzeichnis\" & DocVariable)
For i = 1 To anzahl
.ActiveDocument.PrintOut 'x mal ausdrucken
Next i
.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
End With
rst.MoveNext
Loop
objWord.Quit
Set objWord = Nothing
Set rst = Nothing
End Sub
Auch dieser Code ist nicht getestet!
HTH
p.s. Name und Anzahl sind denkbar schlechte Feldbezeichnungen in einer Access-Tabelle, es handelt sich dabei um reservierte Worte!
Ich habe daher vorsorglich diese Spaltenbezeichnungen geändert (DName und AAnzahl)
Vielen Dank, Peter, für Deine Mühen!
Ich teste es und melde mich wieder
Burkhard
Hi,
gerne!
Ändere deine Feldbezeichnungen die Spaltennamen!
Es funktioniert!
Ich musste nur eine Kleinigkeit ändern:
Bei Dim objWord As Word.Application kommt eine Fehlermeldung
Mit Dim objWord As Object geht es.
Vielen Dank !!!
Freut mich!
ZitatBei Dim objWord As Word.Application kommt eine Fehlermeldung
Ja, da müsstest du den Verweis auf die Word-Objekte unter 'Extras' --- 'Verweise' im VBE setzen - sorry, habe ich vergessen zu erwähnen.
Setze bitte den Thread auf gelöst!
DANKE