0

私はVBAが初めてなので、数日間これに苦労しています。

Word に連絡先を含むコンボボックスがあり、1 つの列 (すべての連絡先の名前) を持つ Excel ファイル (contacts.xls) もあります。Word ドキュメントを開くと、マクロは Excel ファイルのすべての名前をコンボボックスに入力する必要があります。

Word 2007 の実際の例を送ってもらうことはできますか? 非常に単純に思えますが、これを機能させることはできません...

前もって感謝します!

4

2 に答える 2

0

私は今、あなたのためにより完全なコードを持っています:

Option Explicit

Sub TestDropDownFromExcel()

    Dim counter As Long
    Dim xlApp As Excel.Application
    Dim xlBook As Workbook
    Dim oCC As ContentControl

    Set oCC = ActiveDocument.ContentControls(1)

    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:\Path\To\MyFile.xlsx")

    If xlBook Is Nothing Then
        Exit Sub
    End If

    oCC.DropdownListEntries.Clear

    For counter = 1 To 10
        oCC.DropdownListEntries.Add Text:=xlBook.Worksheets(1).Cells(counter, 1), Value:=CStr(counter)
    Next counter

    xlApp.Visible = True

    Set xlBook = Nothing
    Set xlApp = Nothing 

End Sub

ここで行われているエラー チェックはほとんどないことに注意してください。また、ユーザーに見られたくない場合は、最後に .Visible を呼び出すのではなく、単純に .Close を呼び出すことができます (最終的なプロジェクトでは、これがおそらく望ましいでしょう。参照 (= Nothing) は、持っていますが、VBA は実行の最後に自動的にクリーンアップします。

于 2012-12-14T15:42:58.230 に答える
0

Word で Excel ファイルから読み取る場合は、そのファイルを開く必要があります。次のようなコードを使用します。

   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object

   'Start a new workbook in Excel
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Open("FileName.xlsx")

また、おそらく VB プロジェクトの [ツール] → [参照設定] に移動して、マシン上にある Excel ライブラリを見つけます (もちろん、チェックしてください)。必要に応じてこれを回避する方法はありますが、より簡単です。

次に、ワークブックから値を読み取ることができます。

oBook.Worksheets(1).cells(1,1)

それをコンボボックスに入れるための構文が何であるかは完全にはわかりません。vbe in word で「コンボボックス オブジェクト メンバー」を検索します。リスト プロパティなどがあります。

申し訳ありませんが、私は現在 Linux マシンを使用しているため、正確なコードをデバッグすることはできません。

于 2012-12-14T07:33:51.777 に答える