• ベストアンサー

EXCEL VBAについて

お世話になります。 EXCEL VBAで指定したフォルダのEXCELブックが1つでもオープンされているかどうか知りたいのですが、可能でしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

おはようございます。 たぶんVisual Basicのカテゴリーの方が答えてくれそうですが。 以下のような感じでいかがでしょう? ※[ツール]-[参照設定]で Microsoft Scripting Runtimeにチェック入れて下さい。 Dim Fso As New FileSystemObject 'ファイルシステムオブジェクト Dim xlBook As Workbook '開かれているブック Dim objFolder As Folder '調べるフォルダ Dim bOpenedBook As Boolean '開かれているかフラグ '調べるフォルダを「C:\tmp」とする。 Set objFolder = Fso.GetFolder("C:\tmp") bOpenedBook = False '今開かれているブックでループする。 For Each xlBook In Excel.Workbooks If Len(xlBook.Path) > 0 Then 'ブックが保存されているフォルダと調べるフォルダが一致するか? If objFolder Is Fso.GetFolder(xlBook.Path) Then '一致すれば開かれている bOpenedBook = True Exit For End If End If Next '結果をメッセージボックスで表示 If bOpenedBook Then MsgBox "開かれています。" Else MsgBox "一つも開かれていません。" End If Set Fso = Nothing

momo7243
質問者

お礼

ありがとうございました。 うまくできました。回答が遅くなってしまい申し訳ありませんでした。 あと、何がオープンされているか分かる方法はありますか? もしお分かりになりましたら、ご教授ください。

その他の回答 (1)

回答No.2

できてよかったです(^^) If文の中でxlBookという変数(私の例で言えば)のプロパティを見れば、オープンされてるファイルのパスとかファイル名とか取れます。 フォルダが「xlBook.Path」 ファイル名が「xlBook.Name」 フルパスが「xlBook.FullName」 お好みの内容をお使い下さい。 ※上のプロパティ名は未確認です。微妙~に違ったりするかも。 でもそれらしいのは存在するのでお願いします。

momo7243
質問者

お礼

さすがです。 できました。本当ににありがとうございます。 機会がありましたら、またお願いいたします。

関連するQ&A

  • EXCEL VBAについて(再質問)

    お世話になります。 EXCEL VBAで指定したフォルダのEXCELブックが1つでもオープンされているかどうか知りたいのですが、可能でしょうか。 という質問を行い、以下の回答をいただきました。 自分でテストしてみてできたと思ったのですが、 他の人が開いているのが分かりませんでした。 他の人がオープンしているかどうか知ることは可能でしょうか? よろしくお願いします。 以下の回答といただきました。 ------------- ※[ツール]-[参照設定]で Microsoft Scripting Runtimeにチェック入れて下さい。 Dim Fso As New FileSystemObject 'ファイルシステムオブジェクト Dim xlBook As Workbook '開かれているブック Dim objFolder As Folder '調べるフォルダ Dim bOpenedBook As Boolean '開かれているかフラグ '調べるフォルダを「C:\tmp」とする。 Set objFolder = Fso.GetFolder("C:\tmp") bOpenedBook = False '今開かれているブックでループする。 For Each xlBook In Excel.Workbooks If Len(xlBook.Path) > 0 Then 'ブックが保存されているフォルダと調べるフォルダが一致するか? If objFolder Is Fso.GetFolder(xlBook.Path) Then '一致すれば開かれている bOpenedBook = True Exit For End If End If Next '結果をメッセージボックスで表示 If bOpenedBook Then MsgBox "開かれています。" Else MsgBox "一つも開かれていません。" End If

  • EXCEL VBAについて

    EXCEL VBAに詳しい方よろしくお願いいたします ユーザーからフォルダー指定してもらい そのフォルダー内に入っているすべてのブック、すべてのシートの検索、 (シート内にオートシェイプの中に文字を入れたものもアリ。検索対象。) そして、その検索にヒットしたシート名とブック名を別のテキストファイルに吐き出す。 それとは別に検索に引っかかった文字を青に置き換える(EXCELシート内)事は可能でしょうか? 文字の色は変わるのですがオートシェイプ内の色が変えられません。 何時間がんばりましたが、経験不足のためどうもうまくいきません。 どなたか親切な方、お教えいただけたら幸いです。

  • ExcelのVBAコードを他のBookへ展開

    OS:Win2000 Excel2000 ExcelでモジュールシートとThisWorkBookにVBAコードを作成しました。 このVBAを他の16個のExcelブックへ展開するのですが、 何か変更があった場合、16個のbookを修正しなければなりません。 管理が煩雑になるので、避けたいのですが何か良い方法はありますでしょうか? 16個のExcelブックは同じフォルダーで管理され、 Lan又はHttp(Web)で複数人が照会、変更を行います。

  • Excel VBA で質問です。(ver2007)

    Excel VBA で質問です。(ver2007) 1:ブックのopenメソッド等をVBAから記述することは可能なのでしょうか? 2:ブックのopenメソッドの処理をを新規に作成したブックにコピーすることは可能でしょうか? 以上2点です。よろしくお願いいたします。

  • Excel VBA ブックが閉じれない

    Excel2016を使用してVBAを使用しています。 VBA初心者ですが、よろしくお願いします。 質問内容は以下になります。 EXCEL起動と同時にUserFormを表示させ、UserForm上のコマンドボタンから ダイアログボックスを表示し、他ブックを開く処理なのですが、 他ブックを開くまでは問題ないのですが、他ブックが閉じれない状態になります。 Private Sub Workbook_Open() UserForm1.Show End Sub Private Sub UserForm_Initialize()  各種処理 End Sub Private Sub CommandButton1_Click() Dim OpenFileName As String SetCurrentDirectory (Worksheets(1).Cells(11, 3)) OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open OpenFileName End Sub UserFormを閉じると開いたブックも閉じることが可能です。 タスクマネージャーから強制的に終了しようとすると、以下メッセージが出ます。 ”開いているダイアログボックスがあるため、Microsoft Excel を終了できません。[OK]をクリックしてから、Microsoft Excelに切り替えてダイアログを閉じて下さい。" UserFormを閉じないで他ブックを閉じるには、どうすれば宜しいでしょうか。 申し訳ございませんがご教授下さい、よろしくお願いいたします。

  • VBAでエクセルからエクセルのファイルを開くには?

    D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • 別のプログラムとして開いたエクセルをVBAコードでアクティブにする方法について

    すいません、エクセルVBAのことで質問があります。 使っているのはExcel2000です。 1 エクセルブック"A"を開く 2 当方で使用している業務用のアプリケーションを使いデータをエクセル形式で搬出   ⇒"AAA"とは別のエクセルプログラムとして"BooK1"が開かれる このとき、ブック"A"のVBAコードに Workbooks("Book1").Activate と記載しても実行時エラーとなってしまいます。 別のエクセルプログラムで開いたブックを指定してアクティブにするにはどのようなVBAコードを記載したらよろしいのでしょうか。 同じプログラムとして開ければ問題ないのでしょうが、 当方で使っているアプリケーションですと、データを搬出するときには必ず別のプログラムとしてブックが開かれてしまう模様で どうにも回避できません。 どうぞよろしくご教示願います。

  • EXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

    メインプログラム(EXCEL VBA)より、 他のフォルダーにあるEXCELの項目の内容を取り込みたいです。 たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。 ・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。 ・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。 ・となると次はOPEN,INPUTですか? テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。 よろしくお願いします!

  • エクセルのVBAを教えて下さい

    エクセルのVBAについて質問させて頂きます。 あるブックを、指定した20~30個のリストのタイトルをそれぞれにつけて20~30個複製し、さらにその複製したブックの指定したセルにタイトルと 同じ指定したリストの文字列を入れることは可能でしょうか。 説明が下手くそで申し訳ありません。 たとえば、Aというタイトルのブックを、 1から100のタイトルをそれぞれつけて100個複製し、 このブックのシート1のセルB1にブックのタイトルを入れるというような感じなのですが…(汗) どなたか知恵をお貸しいただけると幸いです。