アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelのマクロ機能などを利用してカレントディレクトリ(というかマクロを実行するファイルが格納されたフォルダ)内のその他のExcelファイルを全て開かせるにはどうすればよいでしょうか?フォルダ名の指定はせず、実行するファイルを移動しても動作するようにしたいです。

A 回答 (3件)

ちょうど先日そのマクロを作ったところでした。


同じフォルダにある開かれてない*.xlsファイルを全て開きます。

Sub OpenAllBooks()
  Dim FileName As String
  Dim OpenedBook As Workbook
  Dim IsBookOpen As Boolean
  
  FileName = Dir("*.xls")
  Do While FileName <> ""
    IsBookOpen = False
    For Each OpenedBook In Workbooks
      If OpenedBook.Name = FileName Then
        IsBookOpen = True
        Exit For
      End If
    Next
    If IsBookOpen = False Then
      Workbooks.Open (FileName)
    End If
    FileName = Dir()
  Loop
End Sub
    • good
    • 0
この回答へのお礼

ファイルAからこの「OpenAllBooks」マクロを実行したときに、ファイルAが現在あるフォルダ(例えばフォルダX)の中にある全てのファイルを開きたいのです。また、ファイルAをフォルダXからフォルダY内に移した場合はフォルダY内のファイルA以外のファイルを開くようにしたいのです。

回答頂いたやり方ですと、ファイルAがどのフォルダにあるかは関係なく「ツール>オプション>カレントフォルダ」で設定したフォルダ内のファイルが開かれてしまいます。

何か解決法はありますでしょうか?

お礼日時:2006/12/26 14:45

No.1です。


カレントフォルダをオプションで指定されているのですね。
それでは、
  FileName = Dir("*.xls")
の行を、
  FileName = Dir(ThisWorkbook.Path & "\*.xls")
に変更してみてください。
    • good
    • 0
この回答へのお礼

オプションで指定したカレントフォルダ外のフォルダにファイルを移して実行すると、以下のエラーが☆の行に出てしまいます。

実行時エラー1004

XXXXファイル(ファイルAと同じフォルダ内のファイル)が見つかりません。ファイル名およびファイル保存場所が正しいかどうか確認して下さい。

オプションでカレントフォルダを指定しなければうまくはいきますが。オプションで指定していてもうまくいく方法ありませんでしょうか?


Sub OpneAllBook()
Dim FileName As String
Dim OpenedBook As Workbook
Dim IsBookOpen As Boolean

FileName = Dir(ThisWorkbook.Path & "\*.xls")
Do While FileName <> ""
IsBookOpen = False
For Each OpenedBook In Workbooks
If OpenedBook.Name = FileName Then
IsBookOpen = True
Exit For
End If
Next
If IsBookOpen = False Then
     Workbooks.Open (FileName)       ⇒☆
End If
FileName = Dir()
Loop
End Sub

お礼日時:2006/12/26 16:43

No.1です。

大変失礼しました。
2通り試して「うまくいかなかった方」の内容を投稿してしまっていました。

改めて、
  FileName = Dir(ThisWorkbook.Path & "\*.xls")
の箇所を、
  ChDir (ThisWorkbook.Path)
  FileName = Dir("*.xls")
に変更してみてください。
多分これでうまくいくと思うのですが…。
    • good
    • 1
この回答へのお礼

有難うございます。
うまく動作しました!

お礼日時:2006/12/26 19:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!