Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Modul erstellen in Dokument von VB aus

45 views
Skip to first unread message

Peter Frey

unread,
Apr 21, 2001, 12:27:56 AM4/21/01
to
Hallo zusammen,

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


Peter Frey

unread,
Apr 21, 2001, 12:32:08 AM4/21/01
to
was ich vergessen hatte:

Const cWordApp$ = "Word.Application"


"Peter Frey" <Frey-Ch...@t-online.de> schrieb im Newsbeitrag
news:uwwuxuhyAHA.1304@tkmsftngp02...

Dieter Persien

unread,
Apr 21, 2001, 4:51:42 AM4/21/01
to
Hallo Peter,

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...

Peter Frey

unread,
Apr 21, 2001, 7:36:44 AM4/21/01
to
Hallo Dieter,

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...

Peter Frey

unread,
Apr 21, 2001, 7:30:57 AM4/21/01
to
Hallo Dieter,

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...

Dieter Persien

unread,
Apr 21, 2001, 8:10:04 AM4/21/01
to
Hallo Peter,

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...

0 new messages