in Word kann ich ein neues Modul hinzufügen mit dem Code
Dim NeuesModul
Set NeuesModul = ThisDocument.VBProject.VBComponents.Add(vbext_ct_StdModule)
Dies klappt.
(Verweis auf die VB6EXT.OLB muß gesetzt sein).
Wenn ich dasselbe aber von VB aus versuche, erhalte ich immer einen
Automatisierungsfehler 430.
Private objWord As Word.Application ' Object
Private newDoc As Word.Document
Private NeuesModul
Set objWord = GetObject(, cWordApp)
Set newDoc = m_objWord.Documents.Add()
Set NeuesModul = newDoc.VBProject.VBComponents.Add(vbext_ct_StdModule)
(Verweis auf die VB6EXT.OLB ist auch hier gesetzt).
Geht das nicht von VB aus oder habe ich etwas übersehen?
Danke, Peter
Const cWordApp$ = "Word.Application"
"Peter Frey" <Frey-Ch...@t-online.de> schrieb im Newsbeitrag
news:uwwuxuhyAHA.1304@tkmsftngp02...
wieso GetObject? Hast Du schon ein Wordobjekt? Ansonsten mußt Du erst eins
erzeugen.
Das klappt.
Option Explicit
Private objWord As Word.Application ' Object
Private newModul
Private Sub Command1_Click()
Set objWord = New Word.Application
objWord.Visible = True
objWord.Documents.Add
Set newModul =
objWord.ActiveDocument.VBProject.VBComponents.Add(vbext_ct_StdModule)
newModul.Name = "myModul"
Set newModul = Nothing
Set objWord = Nothing
End Sub
Gruß
Dieter
"Peter Frey" <Frey-Ch...@t-online.de> schrieb im Newsbeitrag
news:uwwuxuhyAHA.1304@tkmsftngp02...
ha, eben hat's geklappt.
Ich darf objWord nicht als Word.Application deklarieren sondern als Object.
Und es flutscht.
Was an der Deklaration allerdings falsch sein soll, kann ich nicht
nachvollziehen.
Gruß und Dank
Peter
"Dieter Persien" <DPer...@Arideon.com> schrieb im Newsbeitrag
news:eSAptBkyAHA.1908@tkmsftngp05...
zunächst mal danke.
Hatte versehentlich Codezeilen vergessen:
Ich starte mit GetObject, um eine möglicherweise bereits laufende Instanz zu
benutzen und CreateObject, falls dies nicht klappt:
Option Explicit
Private objWord As Word.Application ' Object
Private newModul
On Error Resume Next
Const cWordApp$ = "Word.Application"
Set objWord = GetObject(, cWordApp)
If Err.Number <> 0 Then
Err.Clear
Set objWord = CreateObject(cWordApp)
End if
etc.
Dies war nicht der Fehler.
Ich habe deinen Programmcode in ein neues Modul eingefügt und ausgeführt.
In der Zeile
Set newModul = _
objWord.ActiveDocument.VBProject.VBComponents.Add(vbext_ct_StdModule)
kommt der Fehler 430 wie schon zuvor: 'Klasse unterstützt keine
Automatisierung oder unterstützt erwartete Schnittstelle nicht'.
Ich weiß nach wie vor nicht, was daran falsch ist. Funktioniert der
angegebene Code bei dir von VB aus oder innerhalb des Codefensters von WORD?
Ich habe Verweise u.a. auf
- Microsoft WORD 8.0 Object Library
- Microsoft Visual Basic 6.0 Extensibility.
Gruß
Peter
"Dieter Persien" <DPer...@Arideon.com> schrieb im Newsbeitrag
news:eSAptBkyAHA.1908@tkmsftngp05...
habe das mit VB 6 und Word 9 getestet. Warum Word 8 das als Object
deklariert haben möchte, ist mir unverständlich. Ist zwar nicht so tragisch,
aber Dir fehlt dann die IntelliSence.
Versuche as doch noch einmal mit 'Set objWord = New Word.Application'
anstelle von CreateObject.
Gruß
Dieter
"Peter Frey" <Frey-Ch...@t-online.de> schrieb im Newsbeitrag
news:eRwKYflyAHA.1992@tkmsftngp03...