いつもお世話になっています。
今回は
「ExcelVBAで、Excelファイルを開かずにデータを取得する方法」
についてご質問いたします。
###前提条件・要望
0. 対象のExcelBookを開かずに、VBAでセルのデータ・存在するシート名一覧などを取得できる
0. 対象Bookはネットワーク上に置いてあり、複数のユーザが同時に開く・編集する可能性がある
0. 自他問わず対象Bookを開いていても、VBAから取得できるようにしたい
###現在の状況
Bookを開かずに値を取得する事は成功しました。
しかしVBAプログラムを持つExcelファイルを作業後閉じて再度開くと、
開かなかったはずの対象Bookが一緒に開かれてしまうという症状が出てしまいました。
オブジェクトの解放も問題なくできているはずですし、
そもそもExcelファイルが開いたときに何かをするマクロも入れていません。
###ソースコード
https://teratail.com/questions/37322
こちらの質問を参考に、Excel.Applicationを用いたプログラムを作成しました。
以下がソースコードになります。
'ネットワーク上の自分の親の親フォルダをカレントする
With CreateObject("WScript.Shell")
.CurrentDirectory = ThisWorkbook.Path & "...."
End With
'ファイル読み込みダイアログを開く。選択されたファイルのフルパスを取得する fn = Application.GetOpenFilename("ファイルフルパステキスト,*.xls?") '正常にファイルが選択されファイルパスを取得できていなければエラーフラグを立てる If fn = "False" Then ErroeFlag = True 'そうでなければ、選択ファイルをCreateObjectで生成する Else Set xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open fileName:=fn, ReadOnly:=True Set tergetBook = xlApp.Workbooks(Dir(fn)) End If
'エラーフラグが立っていなければ、取得作業を行う
If ErroeFlag = False Then
'取得作業
End If
'オブジェクトを解放する
Set xlApp = Nothing

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/12 03:58
退会済みユーザー
2016/08/12 04:20
退会済みユーザー
2016/08/15 01:51
2016/08/15 03:25
退会済みユーザー
2016/08/15 04:28