1

これは私がやろうとしていることです:

  • ユーザーがいくつかのキーワードを選択できる Excel シートがあります。
  • キーワードごとに、キーワードに関するいくつかのテキストを含む同じ名前の個別の Word ドキュメントがあります。
  • 選択が終わったら、ユーザーにコマンド ボタンをクリックしてもらい、新しい Word 文書を作成してもらいたいと思います。
  • この新しい Word ドキュメントには、対応する Word ドキュメントから選択したキーワードとテキストが含まれます。結果の Word ドキュメントのスタイルと書式は重要ではありません。異なる文書と異なるテキストを区切る空白行で十分です。
  • VBA で参照を追加する際に問題があるため (システム レジストリへのアクセス エラー)、Late Binding でこれを行いたいと考えています。

どのように始めればよいですか、またどこで例を探すべきですか? 私は中間の Excel VBA の経験がありますが、クロスアプリケーションと Word のプロパティにはまったく慣れていません。

4

1 に答える 1

1

上で KazJaw が言ったように、中級の VBA ユーザーとして、ユーザーが説明どおりに Word ドキュメントを選択できるようにするユーザーフォームと関連コードを作成できるはずです。Word 文書を扱うようになると、Excel のコーディングとは少し異なります。

これについて私が知っていることを少し共有しましょう。

まず、Word オブジェクト ライブラリが有効になっていることを確認します。[ツール] メニューの [参照設定] をクリックします。利用可能な参照のリストで、適切な Microsoft Word オブジェクト ライブラリを見つけて選択します。

私が理解しているように、レイトバインディングとは、値を割り当てるときにオブジェクトタイプを宣言することを意味します。これで「システム レジストリへのアクセス エラー」の問題が解決するかどうかわかりません。最初に変数を汎用オブジェクトとして定義して Word ドキュメントを呼び出すときに、遅延バインディングを使用しました。

Dim wdApp As Object
Dim wd As Object

次に、作成したオブジェクトを定義します。

On Error Resume Next

    Set wdApp = GetObject(, "Word.Application") 'establishing the word application

    If Err.Number <> 0 Then
         Set wdApp = CreateObject("Word.Application")
    End If

On Error GoTo 0

    Set wd = wdApp.Documents.Open("C:\YourFilePath") 'establishing a file to use

それが完了したら、使用可能なコマンドを使用して Word の操作を開始できます。これらはすべて、Web 上の他の場所で見つけることができるはずです。または、コンパイラのヒントを使用します (Word.Application.ActiveDocument.たとえば、入力して開始すると、リストが表示されます)。そのドキュメントの操作に使用できる関数の数)。wd特定のドキュメントを参照するために以前に定義した変数を使用したものをいくつか示します。

                wd.Activate 'activate the word doc
                wd.PrintOut 'printout the word doc
                wd.FormFields("BundleNumber1").Result = sBundleNumber 'fill in a pre-established form field with data stored in the variable 'sBundleNumber'
                wd.Close 'close the word doc

ドキュメントのコンテンツ全体を選択している場合、それはかなり単純明快であると思います (のようなものWord.Application.ActiveDocument.SelectAllEditableRangesですが、ドキュメントのサブセクションを選択する必要がある場合は、Word で範囲をほぼ同じように定義できることを知っておく必要があります)。 Excel で定義されているのと同じ方法ですが、端は Excel のセルほどきれいではありません.段落と改行で定義されていると思いますが、これがどのように行われるかを調査する必要があります.私はそれをやったことがありません.

これが、(必要に応じて) コミュニティがラングリングできるコードを作成するのに役立つことを願っています。

于 2013-08-28T22:28:11.310 に答える