2016-07-05 28 views
0

Ich arbeite derzeit an einem Projekt, das eine Word-Vorlage in einer Excel-Vorlage eingebettet hat.Einfügen von Text in eine eingebettete Word-Vorlage an einem Lesezeichen von Excel. "Fehler 13 Typenkonflikt" Fehler

Eine Schaltfläche in Excel wurde erstellt, um die eingebettete Word-Vorlage zu öffnen, die Daten aus Excel zu exportieren und sie mithilfe von Lesezeichen in Word-Vorlagen in ein Wort einzufügen. Das Problem besteht darin, dass der Wortbericht nur einmal generiert werden kann, da der Text in das ursprüngliche Lesezeichen eingefügt wird, anstatt die vorherigen Daten zu überschreiben.

Ich versuche, ein benanntes Feld von Excel (CoverPageRCA) zu exportieren und es in eine eingebettete Word-Vorlage mit einem Lesezeichen (bkmtable1_1) zu kopieren.

ich:

Laufzeitfehler 13 Typenkonflikt

, die auf der folgenden Zeile auftritt:

Set bkMark = ActiveDocument.Bookmarks (Bookmarkname) .Range

Ich suchte im Internet ein nd verbrachte fast 24 Stunden darauf. Kann jemand bitte eine Lösung vorschlagen?

Option Explicit

Dim WD As New Word.Application

Dim RCAcell1 As Range

Sub CreateRCAReports1()

Dim WordDoc Als Word.Document

Dim OLEObj Wie oleObject

Dim WordApp Als Word.Application

WD.Visible = True

Set OLEObj = ActiveWorkbook.Sheets ("CoverPageRCA"). OLEObjects (1) oleObj.Verb xlVerbPrimary

Set WordApp = oleObj.Object .application

Mit WordApp

.Visible = True 

.Activate 

Set wordDoc = .Documents(1) 

End With 

‚---------------------------------- ---------------------

ThisWorkbook.Sheets ("CoverPageRCA"). Aktivieren Sie

ActiveSheet.Range ("B2"). Wählen Sie

Set RCAcell1 = ActiveSheet.Range (Active, Active.End (xlDown))

'zu jedem Lesezeichen gehen und Details geben

CopyCell1 "bkmtable1_1", 1

Set WD = Nothing

End Sub

' --- -------------------------------------------------- -----

Unter CopyCell1 (bookmarkname Als String, RowOffset As Integer)

Dim bkMark As Range

‚klarer Inhalt jedes Lesezeichen und Neue Lesezeichen hinzufügen

Sets bkMark = ActiveDocument.Bookmarks (Textmarkenname) .Range

bkMark.Select

bkMark.Text = "dsfsf"

ActiveDocument.Bookmarks.Add Textmarkenname, bkMark

‚kopieren jede Zelle relevant Wort Lesezeichen

WD.Selection.GoTo Was: = wdGoToBookmark, Name: = Textmarkenname

WD.Selection.TypeText RCAcell1 (RowOffset, 1) .Value

End Sub

+0

Hallo Jonathan, willkommen in SO. Wenn Ihnen niemand helfen kann, sollten Sie ein größeres Beispiel für Ihren Code und noch besser ein [MCVE] (http://stackoverflow.com/help/mcve) veröffentlichen. Viel Glück. –

+0

Vielen Dank für die Beratung, neu im Forum –

Antwort

0

auf den Code suchen, ist die Frage nach der Deklaration von bkMark:

Dim bkMark As Range 

der Bereich Objekt sowohl Excel und Word existiert (unterscheiden ent Objekte), und da der obige Code auf Excel läuft, wird bkMark als Excel Range object deklariert, nicht als Word Range object.

Aber der Bereich auf der Linie zurück unten ist ein Word-Bereich, Typdiskrepanz Fehler verursacht .:

Set bkMark = ActiveDocument.Bookmarks(bookmarkname).Range 

um dieses Problem zu beheben, müssen Sie erklären bkMark als Word-Bereich ,:

Dim bkMark As Word.Range