
VBA ネットワーク上のファイルでカレントフォルダを取得するには?
VBA超初心者でネットで色々調べて、ところどころコピーしながらプログラムを作っています。
ローカルのPCでは問題なく動くまでになったのですが、実際にはネットワーク上の共有サーバで実行したいのですが、ネットワーク上ではカレントパスがうまく設定できていないようで、動きません。
CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path
というコードでVBAが置いてあるフォルダをカレントディレクトリに設定するようにしています。
どのようにしたらネットワークサーバで動くようになりますか?
No.5ベストアンサー
- 回答日時:
WebDAVの環境がないため、関連のありそうな情報をあたってみました。
もしかすると、OSの機能で制限されているかもしれません。
http://heipooh.jugem.jp/?eid=56
VBAではなく、直接手動操作で設定した時にはどうでしょうか?
できないとなると、何らかの環境設定が必要なのではないでしょうか?
上記URLの操作では、エクスプローラからネットワークドライブとして認識させています。
EXCELの機能については、下記URLの「カレントドライブとカレントフォルダ」をご参照ください。
http://officetanaka.net/excel/vba/tips/tips91.htm
現状のネットワーク構成ですと、カレントディレクトリの前に、カレントドライブを認識し得る環境がないと推察されます。
取得する方法について、他もあたってみて、情報が見つかりましたら投稿致します。
お礼が遅れて申し訳ありません。知識が乏しく話についていけてないのですが、「直接手動操作で設定した時・・」というのは「ネットワークドライブの割り当て」のことですか?色々やってみたのですが、自分に割り当てられてるIDとパスワードではできないようなので、管理者に問い合わせてみます。
少なくとも私の環境では、\\~から始まるアドレスではエクスプローラから見れません。
No.4
- 回答日時:
「ネットワーク上の共有サーバで実行したい」とのことでしたが、
(1)ファイルが存在しているのも開いて実行しているのも「ネットワーク上の共有サーバ」ですか?
(2)カレントディレクトリを設定するのは、どんな処理のためでしょうか?
ポイントがずれてたらすみません。
ネットワークサーバでどう動かしたいかわかれば、何か情報が提供できるかも知れません。
この回答への補足
(1)はい。そうです。
(2)サーバー上に100以上のフォルダがあり、その100個以上のフォルダそれぞれの中に同じエクセルのファイルを入れています(ファイル名も同じ)。この100を超えるエクセルファイルの中身を同時に修正したり、データを抽出したりするため、VBAファイルがあるディレクトリをカレントに設定して、そこからそれぞれのエクセルファイルまでのパスを相対で記述し、ループ処理をかけようとしています。
相対パスとループ処理をするためのカウンタ変数などは以下のように書いており、ローカルでは問題なく動きますが、サーバーに載せると最初の1行でデバッグがかかってしまいます。
CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path
Dim strFolderN(1 To 100) As String 'フォルダまでのパス格納用
Dim intCnt As Integer 'カウンタ用変数
'相対パスの指定
strFolderN(1) = "..\hogehoge\aaa\"
strFolderN(2) = "..\hogehoge\bbb\"
・
・
・
・
For intCnt = 1 To 100 'カウンタ
'ここから下はエクセルの修正の処理
確認したところ、やはり通常の共有フォルダではなく、「webdav」というシステムを使って、Webサーバをファイルサーバのようにして利用しているもので、「ThisWorkbook.Path」のところを「"\\コンピュータ名\・・・」にしたり「ChDrive」や「ChDir」ではできませんでした。
http://ja.wikipedia.org/wiki/WebDAV
今回は結局ローカルにコピーして作業をしてしまいましたが、今後のこともあるので、何か解決策がありましたら、教えて頂ければ嬉しいです。
よろしくお願いします。
No.3
- 回答日時:
お礼が遅れてすみません。
色々試したのですが方法が見つからず、今回はローカルにコピーして実行しました。
回答ありがとうございました。
No.1
- 回答日時:
ネットワークドライブの割り当てをすれば
ChDrive
ChDir
で何とかなりそうですが
でなくで、ThisWorkbook.Path が ¥¥~
であれば、
Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long
Sub test()
Debug.Print CurDir
SetCurrentDirectory (ThisWorkbook.Path)
Debug.Print CurDir
End Sub
しか方法は無さそうですね。
この回答への補足
説明が足らずすみません。
\\コンピュータ名 で始まるアドレスではなく、https://~で始まるWebファイルサーバー?なのです。。
この場合どうでしょうか?
お礼が遅れてすみません。
色々試したのですが方法が見つからず、今回はローカルにコピーして実行しました。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA ファイルを開くダイアログでの初期表示にファイルサーバーを指定
Excel(エクセル)
-
【Excel VBA】ネットワーク上の共有フォルダにあるExcelを開く
Excel(エクセル)
-
会社のネットワーク上のファイルを開けない こんにちわ 今大変困ってます 会社のネットワーク上のファイ
Visual Basic(VBA)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
共有フォルダからのファイル名抽出(VBA)
Visual Basic(VBA)
-
7
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
8
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
9
サーバーに保存したエクセルファイルでChDrive、ChDirがエラーになる
その他(パソコン・スマホ・電化製品)
-
10
マクロでネットワーク上のコンピューターへの接続
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
13
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
14
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
15
VBAで先月、先々月を求める方法
Visual Basic(VBA)
-
16
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
17
Excelで指定したフォルダに保存するマクロ
Excel(エクセル)
-
18
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
19
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
20
Curdirを実行すると違う場所が表示される
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
YAMAHA RTX1200でVISTAのネット...
-
USBのMACアドレス取得方法
-
LANケーブルをつなぐとエク...
-
プログラム内でネットワークド...
-
ネットワークドライブが勝手に...
-
ログオフ、シャットダウン時に...
-
フォルダを共有している端末が...
-
ネットワークドライブの削除
-
QNAPについて
-
LANでネットにつながらない
-
ネットワークの中のメディア機...
-
ネットワーク共有ファイルが片...
-
Android 10 時刻設定(秒)
-
システムエラー 1231の内容と理...
-
【Windows10】自動構成IPv4 ア...
-
会社のノートPCを使って、自...
-
DNSサーバとADサーバの設置につ...
-
pcにps4のコントローラーを接続...
-
gpeditの設定変更をバッチで実...
-
DMM.comテレビでの視聴について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「すべてのコンピュータ」に表...
-
USBのMACアドレス取得方法
-
PINGは通るがネットワーク上の...
-
ネットワークの中のメディア機...
-
VBA ネットワーク上のファイル...
-
ネットワークドライブの削除
-
ダイアログボックスの表示が遅い
-
LANを使ってファイル共有での通...
-
ネットワークにPC名が表示され...
-
ネットワーク。向こうからはこ...
-
YAMAHA RTX1200でVISTAのネット...
-
ローカルのフォルダをネットワ...
-
LANで共有ファイル(WIN...
-
社内LANの接続について
-
AactiveX & WebDAV
-
LANでネットにつながらない
-
ネットワークドライブが勝手に...
-
ネットワークドライブ
-
ログオフ、シャットダウン時に...
-
ネットワークコンポーネントが...
おすすめ情報