「みんな教えて! 選手権!!」開催のお知らせ

エクセルのマクロを使用して、ネットワーク上のコンピューターのファイルを開く事を考えています。
(例:IPアドレス『192.168.0.1』のPCの『共有』のホルダー内の『book1.xlsx』を開く場合)
ただ、そのコンピューターへ接続する時に、ユーザー名とパスワードが必要になります。
先に設定しておけば問題ないのですが、マクロを使用時のみの接続を考えています。
使用環境は、win7で、Excel2010です。
どうやれば出来るか教えてください。

A 回答 (3件)

はい、そのフォルダをドライブのように使用できます。



Const 共有名 = "\\パソコン名\共有名"

Const 共有名 = "\\パソコン名\共有名\サブフォルダ―名"
のようにしても良いですよ。
    • good
    • 3
この回答へのお礼

ありがとうございます。
一度試してみます。

お礼日時:2015/02/18 22:18

基本的には出来ないとお考えください。


マクロ上からユーザー&パスワードを自由に通せるようなら重大なセキュリティホールになるからです。
    • good
    • 2

色々と面倒です。


社内で使用するのでしょうか?
VBAコード中に平文でユーザー名とパスワードを記述するのはまずいのでは?と。
仮にVBAProjectを保護し内容を隠したとしても
こじ開けるツールが巷に出回っています。
上司の許可は得られるのでしょうか?

問題ないと仮定して…
'接続
Sub Net_Add()
 Dim WshNetwork As Object
 Const 共有名 = "\\パソコン名\共有名"
 Const パスワード = "himitsu"
 Const ユーザー名 = "ore"
 Set WshNetwork = CreateObject("Wscript.Network")
 On Error Resume Next
 WshNetwork.MapNetworkDrive "N:", 共有名, , ユーザー名, パスワード
 On Error GoTo 0
 Set WshNetwork = Nothing
End Sub

'切断
Sub Net_Del()
 Dim WshNetwork As Object
 Set WshNetwork = CreateObject("Wscript.Network")
 On Error Resume Next
 WshNetwork.RemoveNetworkDrive "N:"
 On Error GoTo 0
 Set WshNetwork = Nothing
End Sub

但し、
>マクロを使用時のみの接続
は難しいです。分かりませんでした。
上記Net_Del でネットワークドライブを削除しても
エクスプローラなどで共有フォルダを開いていたり等々すると
共有フォルダへの接続は維持されたままになります。
別件で共有フォルダへ接続していた場合に強制的に切断されては困るので
仕方のない事かと思います。
コマンドプロンプトの、Net Use でも同様な結果でしたね。
以上、ご参考まで。
私からは以上です。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
返答が遅くなり申し訳ありません。

ご指摘の通り、使用は会社でを想定しておりました。
VBAコード中にユーザー名とパスワードを記述する事に何も思っておりませんでしたが、
確かに相談すべき内容である事を認識させて頂きました。
ありがとうございます。

さて本題ですが、『MapNetworkDrive "N:"』とありますが、ネットワークドライブではなく、
単にホルダーが共有されているだけですが、これでできるのでしょうか?
実際にやってみれば良いのですが、他が忙しく、まだ手を付けていない状態です。

ご教授頂けると幸いです。

お礼日時:2015/02/17 22:42

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

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


おすすめ情報

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