'Microsoft Accessのvbaを使って
'Microsoft Excel Object Libraly を参照設定しないで
'(ひとつだけ)既に開いているエクセルをオブジェクトに設定して
'選択肢のリストを取得する方法
'(ひとつだけ)既に開いているエクセルをオブジェクトに設定して
'選択肢のリストを取得する方法
'エクセルのファイル名は指定しません。一つだけ開いているのを捕まえます。
'保存されていない状態でも捕まえます。
Sub sample100()
Dim xlApp As Object
Dim xlSheet As Object
Dim strRet As String
Dim kindArray() As String
Set xlApp = GetObject(, "Excel.Application")
Set xlSheet = xlApp.Worksheets("Sheet1")
strRet = xlSheet.Range("E4").validation.formula1 '例えばE4に選択リストがあるとして
kindArray = Split(strRet, ",") 'カンマ区切りなのでsplitで分けました
Dim xlSheet As Object
Dim strRet As String
Dim kindArray() As String
Set xlApp = GetObject(, "Excel.Application")
Set xlSheet = xlApp.Worksheets("Sheet1")
strRet = xlSheet.Range("E4").validation.formula1 '例えばE4に選択リストがあるとして
kindArray = Split(strRet, ",") 'カンマ区切りなのでsplitで分けました
'選択肢が2個の場合です。
Set xlSheet = Nothing
Set xlApp = Nothing
Set xlSheet = Nothing
Set xlApp = Nothing
End Sub
(サンプルプログラムなので、kindArrayをその後どうするかはお任せします。)
Excel Object Libraly のバージョンが原因で、配布先で実行時エラーが出ることがあります。
特に、AccessRuntimeだと出やすいです。
参照設定は便利ではあるのですが、様々な実行環境で使う場合は、要注意です。
エクセルが2つ以上開いている場合は、どれか判断する方法を考えないといけませんが。