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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
【Excel VBA】ネットワーク上の共有フォルダにあるExcelを開く
Excel(エクセル)
-
VBA ファイルを開くダイアログでの初期表示にファイルサーバーを指定
Excel(エクセル)
-
会社のネットワーク上のファイルを開けない こんにちわ 今大変困ってます 会社のネットワーク上のファイ
Visual Basic(VBA)
-
-
4
マクロでネットワーク上のコンピューターへの接続
Excel(エクセル)
-
5
VBAでサーバー上のファイルを開く
Excel(エクセル)
-
6
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
ExcelVBA サーバーの(共有フォルダ)中のファイル移動
Excel(エクセル)
-
9
ExcelVBAでカレントディレクトリのファイルを開く方法は?
Excel(エクセル)
-
10
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
11
Excelで指定したフォルダに保存するマクロ
Excel(エクセル)
-
12
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
13
VBAでネットワークコンピュータのファイルにアクセスできない(XL2000)
Access(アクセス)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
16
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
17
文字列からタブコードを取り除きたい
Visual Basic(VBA)
-
18
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
19
VBAで文字列を数値に変換したい
Excel(エクセル)
-
20
EXCELで2列を参照し、重複するものを横に並べたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
USBのMACアドレス取得方法
-
IPアドレスからコンピュータ名...
-
VBA ネットワーク上のファイル...
-
ネットワーク。向こうからはこ...
-
レノボのノート型パソコンです...
-
ネットワークの場所がエラーに?
-
急に他のネットワークが消えました
-
フォルダを共有している端末が...
-
WIFI接続先の削除方法?
-
異なるネットワークを同時に接...
-
「ドメイン」とは何ですか?
-
pcにps4のコントローラーを接続...
-
ツムツム のハートを送る時、LI...
-
【Windows10】自動構成IPv4 ア...
-
システムエラー 1231の内容と理...
-
255台以上のクライアントを...
-
CMOSクリアとBIOS初期化の違い
-
社内PCにネットワーク設定の...
-
中3男子です。googlePixelをYmo...
-
USB接続のマイクについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
USBのMACアドレス取得方法
-
ネットワークの中のメディア機...
-
PINGは通るがネットワーク上の...
-
WebDAVとSMBの違い
-
ネットワークのリストにコンピ...
-
VBA ネットワーク上のファイル...
-
IPアドレスからコンピュータ名...
-
LANケーブルをつなぐとエク...
-
プログラム内でネットワークド...
-
ネットワーク。向こうからはこ...
-
ダイアログボックスの表示が遅い
-
ネットワークドライブが勝手に...
-
ログオンスクリプトエラー
-
ネットワークドライブ
-
YAMAHA RTX1200でVISTAのネット...
-
Windows7がNASに接続できない
-
ネットワークにPC名が表示され...
-
ネットワークドライブの削除
-
shutdownコマンドで「ネットワ...
-
レノボのノート型パソコンです...
おすすめ情報