Word vbaからexcel vbaへ値を渡すことができますか?
Word vbaからexcel vbaへ値を渡すことができますか?
現在Wordでvbaを組んでいますが、Wordで取得した値をexcel vbaで利用したいのに変数の値がnullになってしまい四苦八苦しています。Application間で値を渡すには何か特別な処理がいるのでしょうか?(参照は設定済みです)
やりたい事は、Wordで「ShipTo」文字列をsearch→後ろの番号を変数へ格納→excel vbaを起動→シートの表中からWordで取得した番号を元に文字列を検索しセルに入れる(VLOOKUPを使用)→セルの文字列をWord vbaへ返しWord側で利用、という処理です。excel vbaの起動は以下のように記述しています。
------------------excelVBAの起動
Sub getExcelTable()
Dim xLobj As Object, myObj As Object
Set xLobj = CreateObject("excel.application")
xLobj.Visible = True
Set myObj = xLobj: workbooks.Open (ThisDocument.Path & "\sample.xls")
myObj.Run ("'sample.xls'!getStr")
MsgBox strA ←これがでない
MsgBox strB ←これがでない
Set xLobj = Nothing
End Sub
-----------------excel vbaのコード
Option Explicit
Dim endRow As Integer, ShipTo As Variant
Dim strA As Variant, strB As Variant
Sub getStr()
endRow = Range("a65536").End(xlUp).Row
MsgBox ShipTo ←これがでない
Cells(endRow + 2, 1).Select
Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",3,0)"
strA = ActiveCell.Text
Cells(endRow + 2, 2).Select
Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",13,0)"
strB = ActiveCell.Text
End Sub
Word vbaからexcel vbaは起動します。Word側、excel側で使う関数はグローバル変数にし、variant型にしてみましたが値がわたりません(Wordでは取得できています)。Application間で値を渡す方法、もしくは根本的にもっとうまい方法があればご教示ください!
WinXP、Office2003を使用です。
お礼
すみません。よく調べたら、 set c = nothing で、開放するようです。 てっきり、deleteとか、そんな感じのキーワードだと思っていました。 まさか、代入文で開放するとは… ありがとうございました。