PDA

Vollständige Version anzeigen : Wordausdruck von Access


Kevin
11.05.2001, 09:48
Hi,

ich würde gerne eine Worddatei von Access auto. X-mal ausdrucken lassen.
Der Pfad(mit Datei) ist einer Tab als Hyperlink gespeichert.

Kennt jemand den Befehl womit ich auf die Datei zugreifen und NUR drucken kann (ein öffnen wäre unnötig) ???

Danke im voraus

OlliU
11.05.2001, 10:34
Hallo!

Ohne Word zu öffnen ist mir kein Weg bekannt. Mit dem Hyperlink habe ich keine Erfahrungen gesammelt, da der normale Pfad inc. Dokumentname u. Erweiterung reicht.
Die Word-Object-Library muss in einem Modul unter Verweise eingebunden sein.

'Dann funktioniert die Routine etwa so:
1. Word aufrufen oder starten (je nachdem, was anliegt
(Diese Prozedur ist etwas umfangreicher, hat aber den Vorteil, das Word nicht in endlos vielen Instanzen aufgerufen wird - sondern nur einmal - basta) :)

2. Dann das gewünschte Dokument aufrufen lassen und den Ausdruck mit x Kopien starten.

Zu 1: Folgende Subroutine in ein Modul einbauen.

Public Static Sub MWordInstanz(strVorlage)
'Diese Prozedur prüft, ob Word bereits gestartet ist oder nicht, damit der Anwender nicht unnötig
'viele Instanzen von Word gleichzeitig geöffnet hat.
'Word wird mit der gewünschten Vorlage gestartet oder aber ein bereits gestartetes Word mit einem neuen Dokument
'auf der Basis dieser Vorlage geöffnet und maximiert dargestellt.
'Mehr tut diese Prozedur nicht!
'Das bedeutet, daß Einträge etc. erfolgen müssen, nachdem die Prozedur abgearbeitet wurde.
'HINWEIS:
'Die Fehlerroutinen sind wichtig, da die Prüfung des Wordstarts nur unter Ausnutzung der Fehlerabfangroutinen
'erfolgen konnte.

'ZUR VERWENDUNG DIESER PROZEDUR:
'1. Falls noch nicht passiert... unter Extras - Verweise muß die Word 8.0 Library aktiviert sein (nur einmal als Anfangseinstellung erforderlich)

'2. Zur Vorlage: diese muß in Ihrer Programmierung benannt werden:
' Dim strVorlage as string
' strVorlage = "normal.dot"
' Wenn Ihre Vorlage sich nicht in dem Standard-Vorlagenverzeichnis von Word befindet, müssen Sie den Pfad mit
' angeben, also z.B.:
' strVorlage = "C:\Vorlagepfad\MeineVorlage.dot"

'3. Der Aufruf erfolgt aus Ihrer Programmierung heraus mit
' MWordinstanz(strVorlage)
' ... Einträge in Word durchführen ...
' Set mWordApp = Nothing
'(Alle drei Zeilen sind wichtig...)

On Error GoTo Err_WordInstanz
'----------------------------------
'#########################################################################
'Ab hier Wordsteuerung so, daß Word nur einmal als Instanz geöffnet wird.
'Geht m.e. nur unter Errorprovokation
'#########################################################################

Set mWordApp = Nothing


AppActivate "Microsoft Word"
Word.Application.WindowState = wdWindowStateMaximize
Set mWordApp = GetObject(, "Word.Application")
With mWordApp
'nur wenn eine Vorlage übergeben wurde, soll Word mit Vorlage gestartet werden, sonst ohne Vorlage
If strVorlage <> "" Then
.Documents.Add Template:=strVorlage
End If
.Visible = True
.WindowState = wdWindowStateMaximize

End With

'----------------------------------
Exit_WordInstanz:
Exit Sub

Err_WordInstanz:
If Err <> 5 And Err <> -2147023174 Then
'Fehlerschleife mehr als einmal durchlaufen...
msgbox Err.Description

Resume Exit_WordInstanz
End If

If Err = 5 Then
Set mWordApp = Nothing
'MsgBox "Word wird gestartet..."
Set mWordApp = CreateObject("Word.Application")
With mWordApp
.Documents.Add Template:=strVorlage
.Visible = True
.WindowState = wdWindowStateMaximize

End With
'MsgBox "Errornummer = 5"
End If
If Err = -2147023174 Then
Set mWordApp = Nothing
Set mWordApp = GetObject(, "Word.Application")
With mWordApp
.Documents.Add Template:=strVorlage
.Visible = True
.WindowState = wdWindowStateMaximize

End With
Else
End If

'Set mWordApp = Nothing

Resume Exit_WordInstanz

End Sub

zu 2: so funktioniert dann der ganze Aufruf

Sub irgendwas()
Dim mWordApp as word.application
Dim strVorlage as string

'StrVorlage kann natürlich auch ein
'popeliges normales Dokument sein...

MWordInstanz (strVorlage)

'jetzt die gewünschte Anzahl Dokumente
'drucken (hier 2), dann beenden ohne zu speichern.
mWordApp.ActiveDocument.PrintOut Copies:="2"
mWordApp.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges

end sub

In der Praxis flimmert word über den Bildschirm und ist mit dem Ausdruck beschäftigt - aber bei mir klappts prima.

Gruss und viel Spass beim Basteln in der muffigen Bude bei schönstem Sonnenschein :)

OlliU

Kevin
11.05.2001, 12:49
Hi OlliU,

danke für Deine schnelle Antwort, anfür sich funkt es bis zu den 2 letzten Zeilen.
Bei dem entscheidenden Aufruf meldet er leider nur "Objektvariable oder With-Blockvariable nicht festgelegt"
im Ausdruck hat er leider nur
"Name:mWordApp;Wert:nothing;Typ:Application".
Ich kann leider keinen Fehler finden.
Word öffnet die Datei im übrigen richtigund zeigt sie auch an.
????

Kevin