Briefkopf

15/10/2007 - 23:27 von Andreas78124 | Report spam
Hi,

mit dem nachfolgenden Makro übergebe ich eine Excel 2003 Tabelle nach Word
2003.

Sub WordSitzungStarten()
Dim WordApp As Object
Dim WordDok As Object
Dim Bereich As Range
Set WordApp = CreateObject("Word.application")
With WordApp
.Application.Visible = True
.Application.Documents.Open _
("C:\KiGa\Briefkopf.doc")
'Beliebige Aktionen durchführen
'Set WordDok = WordApp.Documents.Add
Set Bereich = Sheets("Berechnung").Range("A1:G239")
Range(Bereich.Address).Copy
WordApp.Selection.PasteSpecial Link:=True
Application.CutCopyMode = False
'.ActiveDocument.Close SaveChanges:=False
'.Application.Quit
End With
Set WordApp = Nothing
End Sub


Der Briefkopf ist mit einen Schreibschutz versehen.

Ich erhalte bei der Übergabe eine VB Fehlermeldung mit folgendem Inhalt:

"Laufzeitfehler '4605': Diese Methode oder Eigenschaft ist nicht verfügbar,
weil das Objekt auf einen geschützten Dokumentenbereich verweist"


Wenn ich den Schreibschutz entferne, wird mir jedoch der Briefkopf
"zerschossen", d.h., die Exceltabelle befindet sich dann oberhalb des
Anschriftenfeldes.

Gruß
 

Lesen sie die antworten

#1 Andreas Preugschat
16/10/2007 - 13:41 | Warnen spam
Andreas78124 schrieb:
mit dem nachfolgenden Makro übergebe ...
Wenn ich den Schreibschutz entferne, wird mir jedoch der Briefkopf
"zerschossen", d.h., die Exceltabelle befindet sich dann oberhalb des
Anschriftenfeldes.



Hallo Andreas,
ich würde eventuell nicht mit einem Word-Dokument als Formular, sondern mit
einer Vorlage (DOT) arbeiten. In diesem Fall wird immer nur eine Kopie
geladen, die nach der Beendigung nicht veràndert wird. Ansonsten könntest du
(ob Dokument oder Vorlage) durch das Setzen einer Textmarke deine Tabelle an
eine bestimmte Position deines Dokuments bringen. Ich habe deinen Code wie
folgt abgeàndert:

'***********************
Sub WordSitzungStarten()
Dim WordApp As Object
Dim WordDok As Object
Dim Bereich As Range
Set WordApp = CreateObject("Word.application")
With WordApp
.Application.Visible = True
.Application.Documents.Open _
("C:\Daten\test\NGPosts\Briefkopf.doc")
'Beliebige Aktionen durchführen
'Set WordDok = WordApp.Documents.Add
Set Bereich = Sheets("Tabelle1").Range("A1:D37")
Range(Bereich.Address).Copy
If WordApp.ActiveDocument.Bookmarks.Exists("Einfügen") Then _

WordApp.ActiveDocument.Bookmarks("Einfügen").Range.PasteSpecial Link:=True
Application.CutCopyMode = False
'.ActiveDocument.Close SaveChanges:=False
'.Application.Quit
End With
Set WordApp = Nothing
End Sub
'********************

"Einfügen" ist der Name einer Textmarke, die ich in das Dokument eingefügt
habe. Solltest du doch eine Vorlage benutzen wollen, wird diese mit
"WordApp.Documents.Add Template:="PfadZur\Vorlage.dot", NewTemplate _
:=False, DocumentType:=0"
bereit gestellt.
Mit freundlichen Gruessen aus Berlin
Andreas Preugschat

Windows XP SP2 // Office 2003 SP2

Ähnliche fragen