以前以下のVBAを教えていただいたham-kamoさんに質問があります。もちろん違う方でも構いません。

「同じフォルダ内のブックを開くマクロ」についてですが、以下のVBAだとカレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが、解決法はありますでしょうか?

例えば\\AAAA\BBというアドレスのフォルダ内にマクロを起動するファイルがあり、C:\Documents and Settings\XXXXがカレントフォルダに設定されるとC:\Documents and Settings\XXXX内のExcelファイルが開かれてしまうということです。
--------------------------
Sub OpenAllBooks()
Dim FileName As String
Dim OpenedBook As Workbook
Dim IsBookOpen As Boolean

ChDir (ThisWorkbook.Path)
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

A 回答 (4件)

こんにちは。

前回回答したham_kamoです。
いろいろ試しているうちに他の方々が回答してくれましたが、一応私の回答は以下の通りです。

まず、
ChDir (ThisWorkbook.Path)
FileName = Dir("*.xls")

FileName = Dir(ThisWorkbook.Path & "\*.xls")
に変更し、さらに
Workbooks.Open (FileName)
の部分(前回エラーが出た場所です)を、
Workbooks.Open (ThisWorkbook.Path & "\" & FileName)
に変更してみてください。
    • good
    • 0
この回答へのお礼

有難うございます。
ham_kamoさんのやり方で、思う通りの動作が実現できました。
他のPCで試しても問題ありません。

いろいろな方に返答いただき有難うございます。
質問がうまく出来ていなかったため混乱させてしまったようで
申し訳ありませんでした!

お礼日時:2006/12/27 20:00

'ChDir (ThisWorkbook.Path)


をコメントにし、以下の一行を実行してください。
Application.DefaultFilePath = ThisWorkbook.Path
    • good
    • 0

別のところでも書きましたが、UNC名や別ドライブに対するchdirは機能しません。


APIを使用して切り替える方法も有りますが、
単にファイルを開きたいだけならカレントディレクトリを移動する必要は無いと思います。

ChDir (ThisWorkbook.Path)
FileName = Dir("*.xls")



FileName = Dir(ThisWorkbook.Path & "\*.xls")

で良いのではないでしょうか?

この回答への補足

>FileName = Dir(ThisWorkbook.Path & "\*.xls")
このやり方も試したのですがエラーが出てしまいます。
実行時エラー1004「ファイル名およびファイルの保存場所が正しいかどうか確認して下さい」というようなエラーです。

ドライブ名も指定せずにファイルをどんなドライブに移動しても対応できるようにしたいのですが…。

補足日時:2006/12/27 17:09
    • good
    • 0

>カレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが


このマクロはアクティブなブックの保存先ディレクトリにある全てのブックを開く仕様になっていると思います。ですから上記の意味がよく理解できません。

「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか? もしそうなら、

ChDir (ThisWorkbook.Path)はカレントディレクトリを変更する命令ですから、意味が分かれば簡単だと思います
ChDir ("\\AAAA\BB")
にすればリモートドライブを指定できます。またローカルディスクなら
ChDir ("D:\AAAA\BB")
のようにフルパスで指定すれば良いと思います。

質問の意味が正確に理解できていませんので、的はずれならご容赦ください。

この回答への補足

>「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか? 

ネットワークドライブ、ローカルディスク両方に対応したいということです。パスは特定でなく、マクロを実行するファイルを別のフォルダに移動したらその移動先のフォルダ内のファイルを開けるようにしたいということです。

補足日時:2006/12/27 17:04
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフォルダオプションがうまく機能しない。詳細表示にしたいのですが

ウィンドウズ高速化ツールなど色々なソフトを使っているうちに、エクスプローラーのフォルダーが全てアイコン表示になりました。全てを詳細表示にしたいのですが、いったん詳細表示にしてフォルダオプションで 

すべてのフォルダに適用(&L)

を選んでも、他のフォルダーはアイコン表示のままです。


全フォルダをリセット(&R)

を押したあとにやってみても同じです。

どこかがおかしくなっているとおもいますがアドバイスよろしくお願いいたします。

Aベストアンサー

それらのツールが競合してるんでしょうね。一旦手動でリセットしてしまいましょう。
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\BagMRU
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\Bags
の2つのキー以下を(バックアップをとった後で)すべて削除してWindowsを再起動し、再起動後にもう一度フォルダオプションの設定を施してください。

QVistaで\\(コンピューター名)\C$にアクセスできません。

(趣味で)法人向けソフトウェアをリモートで配信するつもりなのですが、
\\(コンピューター名)\C$にVistaの入っているクライアントからアクセス
できないとこれができません。どうか当該フォルダにAdministrator
権限でアクセスできる変更方法を教えてください。
XPは難なくできるのですが…。

Aベストアンサー

パスワードが空になっているからでは?
ローカルセキュリティーポリシーで空のパスワードを許可すればいいと思います。

Qフォルダオプションの個別設定ができない

以下ほどはひどくないのですが、似たような症状です(いくつも独立に記事があります)。隠しファイル表示でそのフォルダーだけ適用したいのに、デスクトップにも隠しファイルが出てしまいます。すべてに適用するを押していないのに。7のバグなのでしょうか?

直し方があれば、教えてください。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1246786057
Windows7 エクスプローラーでのファイル表示をフォルダごとに指定したい

Windows7を使用しています。

エクスプローラー等でファイルを表示する際に「特大アイコン」「大アイコン」「中アイコン」「小アイコン」「一覧」「詳細」などを選択できると思いますが、どこか一つのフォルダで指定したら、全部のフォルダがその指定になってしまいます。
XPなどは、フォルダごとに選べたのですが、WIndows7ではできないのでしょうか?

ドキュメント系は小アイコンでファイル属性とファイル名が分かればよいですが、画像系のフォルダは縮小版表示のほうが都合がよく、フォルダごとに表示形式が指定できたほうが圧倒的に使いやすいのですが。

以下ほどはひどくないのですが、似たような症状です(いくつも独立に記事があります)。隠しファイル表示でそのフォルダーだけ適用したいのに、デスクトップにも隠しファイルが出てしまいます。すべてに適用するを押していないのに。7のバグなのでしょうか?

直し方があれば、教えてください。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1246786057
Windows7 エクスプローラーでのファイル表示をフォルダごとに指定したい

Windows7を使用しています。

エクスプローラー等でファイルを表示す...続きを読む

Aベストアンサー

最後の部分の回答忘れていました・・・


>ドキュメント系は小アイコンでファイル属性とファイル名が分かればよいですが、
>画像系のフォルダは縮小版表示のほうが都合がよく、フォルダごとに表示形式が
>指定できたほうが圧倒的に使いやすいのですが。


正常に動作していればできます。

Qバッチファイルでのif文分岐

ドラッグ・アンド・ドロップ(以下、D&D)によるバッチファイルを作成する際にダブルクリックでバッチファイルを開こうとする行為のフェールセーフを考えています。
現状では、以下のバッチファイルにファイルやフォルダをD&Dするとif文の分岐の箇所で終了してしまいます。

有識の方の教授をお願いします。

/* ↓↓ 以下コードです ↓↓*/
@echo off

if "%1"=="" goto error
rem D&Dされたパスを表示
echo %1

echo 終了しました。
goto end

:error
echo このファイルはダブルクリック形式ではありません。
echo ファイルやフォルダをD^&Dして下さい。
pause
exit

:end
exit
/* ↑↑ ここまで ↑↑ */

開発環境
OS:WindowsXP

以上、よろしくお願いします。

Aベストアンサー

XPで長いファイル名の問題ということですから、
コマンドプロンプト用の対策で構わないですかね?

if "%~1"=="" goto error

というふうに%の後に~(チルダ)を入れてください。
パラメータが引用符で囲われているときは引用符が取り除かれます。
パラメータが引用符で囲われていなければそのままです。

%~構文は他にもいろいろあるので
for /?
とか
set /?
とかで表示されるヘルプを読んでみてください。

Qあれ?フォルダオプションがない!?

 windowsMEにしたのですが、フォルダオプションがありません。
 前の場合は 表示>フォルダオプション  で出てたのに・・。
 あれでシステムファイルとか隠しファイルとかを目障りだから見えなくしたいのに・・・。
 なんでフォルダオプションがないのでしょうか?それともMEの場合はどこか他の場所にあるのでしょうか?教えてください。

Aベストアンサー

ME以前のことはよく覚えていませんが、MEでは
フォルダオプションは表示ではなく、ツールのところに
あります。それ以降のチェックボックスを云々は
御存知のようなので触れないでおきます。

Q[バッチファイル]レジストリ値を取得し、それを条件としてif文動作分岐をする

インターネットオプションのプロキシ設定をバッチファイルでトグルさせようと思ったのですが、思うように動かないのでどなたか助けて頂けないでしょうか。
こちらを参考にさせて頂きました。
http://www.tkssoft.com/cmd/cmd013.html

@echo off
cls
set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

if '%bool%'=='0' goto Set_1
if '%bool%'=='1' goto Set_0

:Set_1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1
goto :eof

:Set_0
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0
goto :eof


明らかにset部分が間違っていると思うのですが、どのように直したらいいのかいろいろ試してみたのですがどうにも解決しませんでした。

インターネットオプションのプロキシ設定をバッチファイルでトグルさせようと思ったのですが、思うように動かないのでどなたか助けて頂けないでしょうか。
こちらを参考にさせて頂きました。
http://www.tkssoft.com/cmd/cmd013.html

@echo off
cls
set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

if '%bool%'=='0' goto Set_1
if '%bool%'=='1' goto Set_0

:Set_1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windo...続きを読む

Aベストアンサー

『コマンドプロンプト』を起動して、

set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と入力後、

set bool    (←または、echo %bool%)

と入力してみてください。単純に、

bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と表示されるだけだと思いますョ。

"reg"コマンドの実行結果で分岐させるのでしたら、

reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable

を実行すると("Windows XP"の実行結果では)、

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
ProxyEnable REG_DWORD 0x0

と画面に表示されますから、これをパイプ(半角の"|")を通して"find"コマンドに送り、"0x0"があるかどうかで、"ERRORLEVEL"を判定すると良いと思います。("find"コマンドは、指定した文字列が見つかれば、"ERRORLEVEL"に0を、見つからなければ1を返します。)

具体的には、

@echo off
cls
reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable | find "0x0"

if %ErrorLevel%==1 goto Set_0
if %ErrorLevel%==0 goto Set_1

:Set_1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1
goto :eof

:Set_0
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0
goto :eof

『コマンドプロンプト』を起動して、

set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と入力後、

set bool    (←または、echo %bool%)

と入力してみてください。単純に、

bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と表示されるだけだと思いますョ。

"reg"コマンドの実行結果で分岐させるのでしたら、

reg query "HKEY_CURRENT_...続きを読む

Qフォルダオプションがないのです

Win98使用してます。XPでは「コントロール」-「フォルダオプション」で「クリック方法」を「シングルで開く」に変更できます。しかし98にはこのフォルダオプションがないのでダブルクリックのままで使用しています。シングルクリックにする別の方法をご指導よろしくお願いします。

Aベストアンサー

フォルダオプションが出たでしょ?

「全般」タブで
「カスタム」を選択して
「設定」をクリックしてみてね。

Qフォルダオプションをすべてに適用するには

フォルダのすべてに作成日時を表示したく、個別に表示を変更していますがこれを一発ですべてのフォルダに適用できるのでしょうか。

フォルダオプションの表示タブでフォルダに適用をクリックしてもそのフォルダのみにしか適用できないのでとても面倒くさくて困っています。

Aベストアンサー

申し訳ないです。すでにフォルダオプションは試したのですね。
フォルダに適用ボタンを押せば一括で変わるはずなのですが…

もしかすると、フォルダタイプが変に判別されてしまっているのかもしれません。
参考URLをみて、フォルダタイプをリセットしてみてはどうでしょう?
ただ、リセットすると元に戻せないため、ほかの方の回答を待ってからの方がいいかもしれません。

参考URL:http://journal.mycom.co.jp/column/windows/015/

Qフォルダオプションを全てのユーザに反映する

WindowsXP Professional(SP2)を使用しています。

フォルダオプションを全てのユーザに対して同じにしたいのですが、ご存じの方教えてください。

今のところわかっているのは、例えば「登録されている拡張子は表示しない」に関してレジストリエディタで

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt

のDefaultValueを0にすれば、フォルダオプション設定画面で「規定値に戻す」ボタンを押すと、チェックが外れた状態にはなるのですが、
新規ユーザを追加した場合、フォルダオプションはチェックがついたままの状態となってしまいます。

ひょっとしたら、新規ユーザの場合は、フォルダオプションをどこかからコピーしてきており、その値をいじれば、想定通りの結果になるのかもしれません。。。

よろしくお願いします。

Aベストアンサー

>新規ユーザを追加した場合、フォルダオプションはチェックがついたままの状態となってしまいます。

新規ユーザーのデフォルトのレジストリ設定は、"HKEY_USERS\.DEFAULT"キー以下に、Windows XPのインストール時に設定されてしまっていますので、フォルダオプションの設定に関しても、

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced

をいくら操作してもデフォルトの設定は変更されません。

新規ユーザーの「登録されている拡張子は表示しない」については、下記のキーの値を変更してください。

HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
HideFileExt   REG_DWORD   0x00000001

また、フォルダオプションのその他の設定についても、

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden
RegPath   REG_SZ   Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced     (←レジストリキー)
ValueName  REG_SZ   ShowSuperHidden   (←設定されている値の名前)

等と"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder"以下のキーに設定されているレジストリキーと値の名前が記述されていますので、既存ユーザーの設定は"HKEY_CURRENT_USER\"、新規ユーザーの設定は"HKEY_USERS\.DEFAULT\"を付けた

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
ShowSuperHidden   REG_DWORD   0x00000000

HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
ShowSuperHidden   REG_DWORD   0x00000000

等を変更してください。

なお、既存ユーザー数が多い時には、『レジストリエディタ』の[レジストリ]⇒[レジストリファイルの書き出し]で変更後の設定を".reg"ファイルに保存して、スタートアップフォルダに、

regedit_-s_ファイルのフルパス\保存したファイル名  (←"_"は半角スペース)

等と記述したショートカットを置いておくと楽ですョ。("-s"は『警告無し』で".reg"ファイルを読み込ませるオプションです。)

>新規ユーザを追加した場合、フォルダオプションはチェックがついたままの状態となってしまいます。

新規ユーザーのデフォルトのレジストリ設定は、"HKEY_USERS\.DEFAULT"キー以下に、Windows XPのインストール時に設定されてしまっていますので、フォルダオプションの設定に関しても、

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced

をいくら操作してもデフォルトの設定は変更されません。

新規ユーザーの「登録されている拡張子は表示しない」については、下記...続きを読む

Qフォルダオプションが消えてしまいました。

Meのパソコンです。
コントロールパネル内のフォルダオプションが消えてしまいました。
かなり以前に全ての拡張子を表示するにして以来フォルダオプションを見ていなかったのですが、最近コントロールパネル内のフォルダオプションが消えているのに気がつきました。エクスプローラを起動して表示、ツールからフォルダオプションを見つけたかったのですがありませんでした。

現時点で実害はありませんが、復旧法をご存知の方がおりましたらお願い致します。

Aベストアンサー

こちら、かな?
http://homepage2.nifty.com/winfaq/c/trouble.html#521

じゃなかったら、レジストリ編集ツール(いじくるツール、やTweakUIがぁゃιぃですね)がなにか悪さをしているかもしれません。
レジストリエディタを開き、
HKEY_CURRENT_USER
 \Software
  \Microsoft
   \Windows
    \CurrentVersion
     \Policies
      \Explorer
の下の
NoFolderOptions
を探し出し、あったらそのデータ(1 のはず)を 0 にすることで解決するかと思われます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報