• ベストアンサー

カレントディレクトリにあるExcelファイルを全て開く

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

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

No.1です。大変失礼しました。 2通り試して「うまくいかなかった方」の内容を投稿してしまっていました。 改めて、   FileName = Dir(ThisWorkbook.Path & "\*.xls") の箇所を、   ChDir (ThisWorkbook.Path)   FileName = Dir("*.xls") に変更してみてください。 多分これでうまくいくと思うのですが…。

teru5000
質問者

お礼

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

その他の回答 (2)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

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

teru5000
質問者

お礼

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

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

ちょうど先日そのマクロを作ったところでした。 同じフォルダにある開かれてない*.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

teru5000
質問者

お礼

ファイルAからこの「OpenAllBooks」マクロを実行したときに、ファイルAが現在あるフォルダ(例えばフォルダX)の中にある全てのファイルを開きたいのです。また、ファイルAをフォルダXからフォルダY内に移した場合はフォルダY内のファイルA以外のファイルを開くようにしたいのです。 回答頂いたやり方ですと、ファイルAがどのフォルダにあるかは関係なく「ツール>オプション>カレントフォルダ」で設定したフォルダ内のファイルが開かれてしまいます。 何か解決法はありますでしょうか?

関連するQ&A

  • カレントディレクトリ内のファイルを配列に読むには?

    カレントディレクトリ内のファイルの中で指定した拡張子のファイルを全て配列に読み込ませるプログラムを書こうと頑張っています。 しかし、方針がわからず困っています。 方針だけでも良いので教えていただけないでしょうか? よろしくお願いいたします。

  • マクロでフォルダ内の全てのExcelファイルを開くには?

    Excelのマクロ機能で、マクロを実行すると、あるフォルダ内にある全てのExcelファイルを開くことってできますでしょうか?

  • バッチファイル→vbsへのカレントディレクトリ情報引渡をしたいです。

    バッチファイル→vbsへのカレントディレクトリ情報引渡をしたいです。 あるフォルダにvbsファイルとそれを実行するためのバッチファイル、vbsで読み込むリストファイルを置いています。 これを現在ログインしているのとは別のユーザで実行したいのですが、ファイルの記述をすべてフルパス指定しなければ動きませんでした。 しかし、フォルダが変わるたびにすべてのパスを書き換えるのが大変なため、以下のように修正を加えたいと思っています。 (1)バッチファイルでvbsを実行する際、カレントディレクトリ情報を取得し、パスを確定。(CDコマンド) (2)vbsファイル実行 (3)(1)のCDコマンドで読み込んだ情報をvbsに引き渡し、リスト読み込み。 バッチファイルからvbsに引き渡す部分、vbsがバッチファイルから受け取る部分の記述が分かりません。 一例を教えていただけないでしょうか?

  • Cronでのカレントディレクトリについて

    3日前からVine Linuxを初めてインストールしまして、 自宅サーバをやろうとしている、初心者です。 これまではxrea.comのレンタルスペースを借りてphpでコンテンツを作っていました。 phpをCronを使って、定期的実行する際に [シェルファイル] #!/bin/sh #PHP /usr/bin/php /var/www/html/filename.php exit のようにしてファイル操作をするphpを実行させたのですが [filename.php] <?php $fp=fopen("../data/dat.txt","w"); fputs($fp,$data); fclose($fp); ?> で実行したところURLからは問題なく dat.txt の内容を編集することができるのですが cronからだと PHP Warning: fopen(../data/data.txt): failed to open stream: No such file or directory となります。 そこでカレントディレクトリを調べると /root/PHPs/ となっていたので、そのようなエラーになっていました (1)カレントディレクトリを変更するコードを毎回phpに組み込む (2)フルパスでファイルを指定する ことでこのトラブルは回避されるのですが、 xrea.comでは、相対パス、カレントディレクトリを毎回指定しなくても、実行できていました。 cronでphpを実行する際に、phpが存在するディレクトリへ 自動でカレントディレクトリを移動するようにしたいです。 そのような方法があれば、教えてくください。

  • カレントディレクトリの取得

    お世話になります。 バッチファイルでの処理中にカレントディレクトリをフルパスで取得し 変数に値を格納したいのですが、やり方が分かりません。。 いろいろ調べた結果、カレントディレクトリの取得は「CD」 変数への格納は、「==」or「set」なのかな?ってぐらいの知識レベルです。 上記のコマンド以外でも構いませんので、カレントディレクトリを取得し 変数に値を格納する方法を、記述の仕方を含めてご教示くださいませ。 宜しくお願い致します。

  • カレントディレクトリ以下全てのフォルダ一覧

    php4.xxシリーズで5ではないです それを使用してカレントディレクトリ以下の、全てのフォルダ一覧は取得できますか? もしくはカレントディレクトリのフォルダ一覧でもいいのですが よろしくお願いします。

    • ベストアンサー
    • PHP
  • カレントディレクトリ・・・って?

    こんにちは。ネットで検索したのですが知識が無いためさっぱりわからないので質問させていただきます。 今度、中古ノートPCを入手するに当たり、メーカーのHPからアップデートできるものをダウンロードしました。 「BIOSのアップデート」を解凍したところ、セットアップFDを作り、 しかも、その作業をMS-DOS日本語モードでしなければならず悪戦苦闘しています。 自分のPCが日本語モードになっている事はわかりましたので、FDをフォーマットするまでは出来ました。 次の手順が 「アップデートFD作成ツールを実行します。解凍したファイルがあるカレントディレクトリで実行してください」 っと書いてあり、 解凍されて出来たアプリケーション「~.exe」を実行するようなのですが、その部分がさっぱりわかりません。 ネットでカレントディレクトリなどを検索しまくったのですが、解決できませんでした。 それを入力すると 「ドライブAにフォーマットされたFDをセットして下さい。よろしいですか(Y/N) ?」っと表示されるようなのですが・・・。 現在はMS-DOSプロンプトを開くと「C:¥WINDOWS>」っとなっており、 そのままファイル名を入力し実行すると「コマンドまたはファイル名が違います」っと出ます。 アップデートファイルはデスクトップのフォルダにあります。 わたしのPCはVAIO PCV-R60でOSはWindows98です。 どなたかアドバイスよろしくお願いいたします。

  • シェルスクリプト内のcdで、カレントディレクトリを変えるには?

    シェルスクリプト内のcdコマンドで、カレントディレクトリを変えるにはどうしたらいいか?をどうか教えて下さい。 MS-DOSのバッチファイル内で"cd XXXXX"と書き実行した時の動作を、UNIX(CygWin)環境でも行いたいです。 が、シェルスクリプトは(サブシェルで動く為)カレントディレクトリが変わってくれません。aliasコマンド等でいろいろ実験しましたが、DOSバッチファイルのように「バッチファイル単体でディレクトリ移動が出来る方法」を探し出せませんでした。 極めて初歩的とは存じますが、どうか宜しくお願い致します。

  • 古いファイルを含むディレクトリのリネーム

    古いファイルを含むディレクトリのリネーム Linuxサーバのファイル整理の目的で 指定ディレクトリ以下の階層の複数フォルダについて 古い画像ファイル(90日以上変更がない".jpg"ファイル)しかないものは (1)ディレクトリ名をリネーム(ディレクレトリ名末尾に"_deleted"を追加) (2)ディレクトリ内の古いファイルを削除 したいと考えております。 find と xargs をつなげてあげれば、(2)単体であればできるのですが ex.) find . -type f -ctime +90 -print0 | xargs -0 rm 「格納されている全てのファイルが対象となる場合」に「ディレクトリ名をリネームして」 という処理で悩んでおります。 皆様、アドバイスの程お願い致します。 ========================================== 環境: ========================================== OS: CentOS5.4 bashなどを利用して,簡易的に実行できればと考えております。

  • どのカレントディレクトリからでもあるディレクトリに移動

    どのカレントディレクトリからでも、例えばABCとコマンドを打てば、/home/ABCフォルダに移動させる設定を行いたいのですが、どのようにすればよいでしょうか?シンボリックリンクだけではうまくいかないようです。Fedora3ですが、宜しくお願いします。