0

埋め込みドキュメントを古いバージョンの MS Office で実行する際に問題が発生しています。問題はオブジェクトの宣言方法にあると思いますが、遅延バインディングを使用して埋め込みドキュメントを宣言する方法がわかりません (私はまだこの概念と vba の両方に非常に慣れていません)。以下は、コードのスニペットとともに変数宣言を現在どのように行っているかです。Excel 2013 では問題なく動作しますが、2010 では変数を宣言した方法が原因で動作しません (私は信じています)。

Dim oDoc As Word.Document
Dim oTemplate As Word.Document
Dim wdObj As OLEObject
Dim wdObj2 As OLEObject

'Deselect anything selected
Range("A1").Select

'Copy content of template
Set wdObj = Sheets("Template").OLEObjects("Template")
wdObj.Activate
Set oTemplate = wdObj.Object
oTemplate.Content.Copy

'Initialize letter document
Set wdObj2 = Sheets("Report").OLEObjects("Letter")
wdObj2.Activate
Set oDoc = wdObj2.Object

'Erase contents and replace with clean template
oDoc.Content.Delete

oDoc.Range.PasteAndFormat _
    wdFormatOriginalFormatting

oDoc と oTemplate を「オブジェクトとして」設定しようとしましたが、それらを単語オブジェクトにリンクする方法がわかりません。これを行うと、PasteAndFormat 呼び出しの "wdFormatOriginalFormatting" でライブラリ参照が失敗するだけでした。

私はこれを理解しようとして髪を引き裂いてきました。どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

3

まず、Option Explicitコード モジュールで を使用していることを確認します。次に、コンパイルしようとすると、 の問題が警告されるはずですwdFormatOriginalFormatting

なんで?

wdFormatOriginalFormattingWord オブジェクト モデル内の列挙定数です。事前バインディングを使用しない限り、Excel には存在しません。

解決

遅延バインディングを使用する場合は、これらの定数を宣言して値を代入する必要があります。これらの定数はコンパイル時または実行時に認識されないためです。

Const wdFormatOriginalFormatting as Long = 16

次に、この行でエラーが発生することはありません。

oDoc.Range.PasteAndFormat _
    wdFormatOriginalFormatting
于 2015-02-24T14:51:36.140 に答える