私はスプレッドシートをワードマクロで読み込んでいますので、スプレッドシートを使用してテンプレートからドキュメントをインスタンス化し、インスタンス化されたドキュメントのプロパティをExcelテーブルから設定できます。私は可能な限り型を明示的にしようとしていますが、Excelの選択から戻ってくるオブジェクトには、ワードドキュメントの行とは異なる行が入力されています。実際には、私はそれについて考えて今は驚くべきことではありません。スプレッドシート行タイプとワードテーブル行タイプの間で、Objectよりも特定の共通基本クラスがありますか?おそらくその行の種類をExcelを指定する方法ですか?または、オブジェクトタイプを使用し、詳細について心配するのではないかと考えています。ダイナミックな型定義はここでは驚くべきですが、クラスメソッドのほとんどは同じです。VBA Interop:WordマクロでExcelデータ型を明示的に使用する方法はありますか?
私はまた、VBAからの単語ベースのVBAサブルーチン(通常の位置)を実行することにも興味があります。私はGoogleを介してそれを調べようとしたが、運がなかった。
根性はここにある:VBAエディタで
Set testList = LoadExcel(strFile)
testList.Activate
Dim allSuites As Object
' LoadExcel also selects the rows that contains the data we want in excel
Set allSuites = testList.sheets("FullSuiteList").Application.Selection
Dim myRow As row
Dim Columns() As String
Dim i As Integer
' Previously I used a table in word, but there are too many columns
' to be manageable
' LoadPropertyNames testList.Tables(1).Rows(1), Columns
' For i = 2 To testList.Tables(1).Rows.Count
' Now we get data directly from our Excel sheet
LoadPropertyNames allSuites.Rows(1), Columns
For i = 2 To allSuites.Rows.Count
CreateOne allSuites.Rows(i), Columns
Next I
' row type yields type mismatch at runtime. myrow as Object works though.
Function LoadPropertyNames(myRow As row, Columns() As String)
...
End Function
' row type yields type mismatch at runtime. myrow as Object works though.
Function CreateOne(myRow As row, Columns() As String)
...
End Function
VBAはよく似ていませんが、面白いです。 – BenPen
VBAエディタの[ツール]メニューの[参照設定]を選択し、Word VBAプロジェクトに "Microsoft Excel ##。#Object Library"を追加します。これにより、Excelのすべてのオブジェクトにアクセスできます。いくつかのオブジェクト名、例えば。 "範囲"は、WordとExcelの異なるオブジェクトを表します。したがって、必要に応じてWord.RangeまたはExcel.Rangeとして変数を宣言します。 – xidgel
@xidgelああ、それは超簡単です、ねえ。それがまさに私が必要としていたものです。それを答えに変えて、私はこの質問に初級タグをつけます。 – BenPen