
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で質問しましょう!
似たような質問が見つかりました
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- ネットワーク ネットワーク資格情報について 2 2022/08/05 12:50
- その他(OS) Windows11のファイル共有 1 2022/12/08 10:42
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- ノートパソコン Windows11です。 大学でWiFiに繋いだ時に、ネットワークの探索を有効化しようとすると、「い 7 2023/01/24 16:25
- Excel(エクセル) マクロの付いたExcelが開けません 3 2023/02/01 10:54
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Windows 10 同じ部屋にある2台のPCで片方の共有フォルダが見えない? 2台のパソコン PC1とPC2があります。 3 2022/04/29 13:01
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Excel(エクセル) ネットワーク上のエクセルとリンクしている時にデータ更新をvbaで、refresh Allで行う場合の 2 2023/04/10 05:39
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA ファイルを開くダイアログでの初期表示にファイルサーバーを指定
Excel(エクセル)
-
【Excel VBA】ネットワーク上の共有フォルダにあるExcelを開く
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
会社のネットワーク上のファイルを開けない こんにちわ 今大変困ってます 会社のネットワーク上のファイ
Visual Basic(VBA)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
マクロでネットワーク上のコンピューターへの接続
Excel(エクセル)
-
8
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
9
共有フォルダからのファイル名抽出(VBA)
Visual Basic(VBA)
-
10
VBAでサーバー上のファイルを開く
Excel(エクセル)
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
12
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
13
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
14
EXCEL VBAのDir関数について
Excel(エクセル)
-
15
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
16
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
17
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
18
サーバーに保存したエクセルファイルでChDrive、ChDirがエラーになる
その他(パソコン・スマホ・電化製品)
-
19
VBAで文字列を数値に変換したい
Excel(エクセル)
-
20
VBA スペースが入力されていても、空白セルと判断する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
USBのMACアドレス取得方法
-
ネットワークの中のメディア機...
-
ネットワークのリストにコンピ...
-
PINGは通るがネットワーク上の...
-
win2000間でファイル共有したい
-
LANを使ってファイル共有での通...
-
ダイアログボックスの表示が遅い
-
ネットワークドライブが勝手に...
-
取り外したLANDISKの共有フォル...
-
エクセル VBA VPNで繋...
-
VBA ネットワーク上のファイル...
-
特定ドライブに初回のみアクセ...
-
WebDAVとSMBの違い
-
Windows2000をWindows98の変わ...
-
ネットワークドライブが勝手に...
-
スタートメニューに表示されません
-
マイネットワークで表示されて...
-
1Fと2Fでフォルダを共有したい...
-
2000serverでIISを使用している...
-
システムエラー 1231の内容と理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
USBのMACアドレス取得方法
-
PINGは通るがネットワーク上の...
-
ネットワークの中のメディア機...
-
VBA ネットワーク上のファイル...
-
ネットワークのリストにコンピ...
-
ネットワークドライブが勝手に...
-
ネットワークドライブの削除
-
ネットワーク。向こうからはこ...
-
LANを使ってファイル共有での通...
-
ダイアログボックスの表示が遅い
-
YAMAHA RTX1200でVISTAのネット...
-
LANケーブルをつなぐとエク...
-
ローカルのフォルダをネットワ...
-
マイネットワークで表示されて...
-
プログラム内でネットワークド...
-
エクセル VBA VPNで繋...
-
ネットワークにPC名が表示され...
-
IPアドレスからコンピュータ名...
-
勝手に共有されてしまう
-
ネットワーク接続エラーについて
おすすめ情報