Discussion:
ExcelVBAでネットワークドライブへアクセスする方法その2
(too old to reply)
momi
2006-11-20 00:09:01 UTC
Permalink
クライアント(PC)上のEXCEL-VBAから
サーバー上のパスワード付のドライブに
アクセスするコーディングを教えてください。
MapNetworkDriveというキーワードは突き止めましたが…。
kounoike
2006-11-20 13:23:43 UTC
Permalink
Post by momi
クライアント(PC)上のEXCEL-VBAから
サーバー上のパスワード付のドライブに
アクセスするコーディングを教えてください。
MapNetworkDriveというキーワードは突き止めましたが…。
MapNetworkDriveというキーワードを見つけているなら、その見つけてある場所に使用方法も書いてあると思いますが。VBAで使用する場合の違いといえば、CreateObjectする場合、前にWScriptをつけないだけです。
Sato
2006-11-21 06:54:01 UTC
Permalink
Post by momi
クライアント(PC)上のEXCEL-VBAから
サーバー上のパスワード付のドライブに
アクセスするコーディングを教えてください。
MapNetworkDriveというキーワードは突き止めましたが…。
ネットワーク上にServerという名前のPC(サーバ)があり、
ServerにHという共有フォルダ(ドライブ)があるという前提ですが、
これでいけると思います。

Sub ConectServer()
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetWorkDrive "H:", "\\Server\H", _
False, "ユーザ名", "パスワード"
End Sub
Sub DelDrive()
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
objNetwork.RemoveNetworkDrive "H:"
End Sub
momi
2006-11-22 02:39:01 UTC
Permalink
Satoさまありがとうございました。

教えていただいた例の,
"H"の部分は省略できないのでしょうか。
この"H"はクライアントのPCのHドライブを
さしているのですよね。(ちがったらごめんなさい)
Post by Sato
Post by momi
クライアント(PC)上のEXCEL-VBAから
サーバー上のパスワード付のドライブに
アクセスするコーディングを教えてください。
MapNetworkDriveというキーワードは突き止めましたが…。
ネットワーク上にServerという名前のPC(サーバ)があり、
ServerにHという共有フォルダ(ドライブ)があるという前提ですが、
これでいけると思います。
Sub ConectServer()
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetWorkDrive "H:", "\\Server\H", _
False, "ユーザ名", "パスワード"
End Sub
Sub DelDrive()
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
objNetwork.RemoveNetworkDrive "H:"
End Sub
Sato
2006-11-22 04:23:02 UTC
Permalink
少し語弊があるような気がしますが、"H:"はクライアントのHドライブです。
Serverという名前のPC(サーバ)にある、
Hという共有(フォルダだったりドライブだったりすると思いますが)を
クライアント側のHドライブとして使用できます。
"H:"を省略したければ、

Sub ConectServer()
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetWorkDrive "", "\\Server\H", _
False, "ユーザ名", "パスワード"
End Sub

のように2個のダブルコートだけにすれば使えるはずです。
momi
2006-11-22 04:45:01 UTC
Permalink
Satoさまありがとうございます。

引き続き質問なのですが,
下記の例でもしクライアントのHドライブが使用済の場合は
エラーとなるということでよろしいでしょうか?
Post by Sato
少し語弊があるような気がしますが、"H:"はクライアントのHドライブです。
Serverという名前のPC(サーバ)にある、
Hという共有(フォルダだったりドライブだったりすると思いますが)を
クライアント側のHドライブとして使用できます。
"H:"を省略したければ、
Sub ConectServer()
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetWorkDrive "", "\\Server\H", _
False, "ユーザ名", "パスワード"
End Sub
のように2個のダブルコートだけにすれば使えるはずです。
Sato
2006-11-22 06:49:01 UTC
Permalink
当然エラーになります。
私の環境でHドライブが使用済みのとき、
『このローカルデバイス名は別のネットワークリソースへの
接続を記憶しています。』
と、もっともらしいエラーメッセージを出します。
使用しているドライブを知りたければ、こんなので調べられます。
工夫してみてください。

Sub Get_Drive()
Dim objFS As Object
Dim varDrive As Variant
Dim strDrives As String
Set objFS = CreateObject("Scripting.FilesystemObject").Drives
For Each varDrive In objFS
strDrives = strDrives & " " & varDrive.Path
Next
MsgBox strDrives & "が使用済みです"
End Sub
Post by momi
Satoさまありがとうございます。
引き続き質問なのですが,
下記の例でもしクライアントのHドライブが使用済の場合は
エラーとなるということでよろしいでしょうか?
kounoike
2006-11-22 14:20:37 UTC
Permalink
Post by Sato
当然エラーになります。
私の環境でHドライブが使用済みのとき、
『このローカルデバイス名は別のネットワークリソースへの
接続を記憶しています。』
横から失礼します。Satoさんが前に示された下のコードを実行した場合、上のようにエラーになります?
objNetwork.MapNetWorkDrive "", "\\Server\H",

ドライブ名をから文字("")に設定しているのに、Hドライブが使用中であろうがなかろうがドライブ名を指定していない以上エラーが生じるようには思われませんが。(環境によって違うのかな。)

SatoさんのGet_Driveは、ネットワークドライブ名を指定して接続した場合のドライブ名はすべて表示されると思いますが、ドライブ名を指定しなくて「から文字("")」で接続した場合のネットワークの接続状態は表示されないと思います。現状のネットワークの接続状況を表示したいのであれば、例えば

Sub shownetdrive()
Dim i As Long
Dim netdrive As String
Set objNetwork = CreateObject("WScript.Network")
Set oDrives = objNetwork.EnumNetworkDrives
For i = 0 To oDrives.Count - 1 Step 2
netdrive = netdrive & "Drive " & oDrives.Item(i) & " = " &
oDrives.Item(i + 1) & Chr(10)
Next
MsgBox netdrive
End Sub

とか。まあ、ドライブ名を""として接続する意味があるかどうかは、?ですが。意味がないとは言いませんが、そうした場合、それをMapNetWorkDriveと呼ぶとしたら私にはなんか不自然な名称に思えます。
Sato
2006-11-24 07:48:02 UTC
Permalink
momiさんの記事を読み違えていました。
誤解を生んでしまったようです。すみません。
「当然エラーとなります。」と書いたのは、
Hドライブが使用済みで、
objNetwork.MapNetWorkDrive "H:", "\\Server\H", ・・・
としたときのことです。
ご指摘のように、GetDriveはあくまでも
ドライブ名を指定してネットワーク接続しているものを表示するだけです。
現状のネットワークの接続状況を表示するのであれば、
kounoikeさんのshownetdriveのほうがスマートで良いと思います。

ドライブ名を""で接続したものをMapNetworkDriveと呼ぶのは、
私も不自然な気がします。
Post by kounoike
Post by Sato
当然エラーになります。
私の環境でHドライブが使用済みのとき、
『このローカルデバイス名は別のネットワークリソースへの
接続を記憶しています。』
横から失礼します。Satoさんが前に示された下のコードを実行した場合、上のようにエラーになります?
objNetwork.MapNetWorkDrive "", "\\Server\H",
ドライブ名をから文字("")に設定しているのに、Hドライブが使用中であろうがなかろうがドライブ名を指定していない以上エラーが生じるようには思われませんが。(環境によって違うのかな。)
SatoさんのGet_Driveは、ネットワークドライブ名を指定して接続した場合のドライブ名はすべて表示されると思いますが、ドライブ名を指定しなくて「から文字("")」で接続した場合のネットワークの接続状態は表示されないと思います。現状のネットワークの接続状況を表示したいのであれば、例えば
Sub shownetdrive()
Dim i As Long
Dim netdrive As String
Set objNetwork = CreateObject("WScript.Network")
Set oDrives = objNetwork.EnumNetworkDrives
For i = 0 To oDrives.Count - 1 Step 2
netdrive = netdrive & "Drive " & oDrives.Item(i) & " = " &
oDrives.Item(i + 1) & Chr(10)
Next
MsgBox netdrive
End Sub
とか。まあ、ドライブ名を""として接続する意味があるかどうかは、?ですが。意味がないとは言いませんが、そうした場合、それをMapNetWorkDriveと呼ぶとしたら私にはなんか不自然な名称に思えます。
kounoike
2006-11-24 08:50:10 UTC
Permalink
Post by Sato
momiさんの記事を読み違えていました。
「当然エラーとなります。」と書いたのは、
Hドライブが使用済みで、
objNetwork.MapNetWorkDrive "H:", "\\Server\H", ・・・
としたときのことです。
Satoさん、どうも。環境によって違うのかなとふっと思ったので、尋ねてみただけです。

「ドライブ名を""として接続する意味があるかどうかは、?ですが。」とは書きましたが、単にネットワークにあるフォルダに接続したいだけなら、上のように""文字でMapNetWorkDriveを使用しなくてもと思ったからです。ドライブ名を割り当てたいのなら、それを使うしかないと思いますが、そうでなければ、VBAのFileDialog(msoFileDialogFolderPicker)やShellのBrowseForFolder()を使用するほうが、使いやすいのではと思ったからです。
Yukio Kishiue
2006-11-24 09:25:37 UTC
Permalink
$B%/%i%$%"%s%H(B(PC)$B>e$N(BEXCEL-VBA$B$+$i(B
$B%5!<%P!<>e$N%Q%9%o!<%IIU$N%I%i%$%V$K(B
...$B$G$9$+$i!$$3$NLdBj$K4X$7$F$O0UL#$,$"$k$H;W$$$^$9!#$^$"!$(B
$B!V%Q%9%o!<%IIU$N%I%i%$%V!W$H$$$&$N$,!$JL(B($B$b$7$/$OFCDj(B)$B$N%f!<(B
$B%6$G$7$+%"%/%;%9$G$-$J$$6&M-$r;X$7$F$$$k$H$9$l$P$G$9$,!#(B
--
$B4_>e9,@8(B ( ***@mail.gosei.co.jp )
kounoike
2006-11-24 13:54:38 UTC
Permalink
$B%/%i%$%"%s%H(B(PC)$B>e$N(BEXCEL-VBA$B$+$i(B
$B%5!<%P!<>e$N%Q%9%o!<%IIU$N%I%i%$%V$K(B
...$B$G$9$+$i!$$3$NLdBj$K4X$7$F$O0UL#$,$"$k$H;W$$$^$9!#(B
$B$"$C!"$=$NItJ,$OFI$_Mn$H$7$F$$$^$7$?!##2EYF1$8$h$&$J7oL>$G=q$+$l$F$$$?$N$G!"F1$8FbMF$H;W$C$F$$$^$7$?!#$=$N>l9g$O!"3N$+$K0UL#$,$"$k$H;W$$$^$9$,!"JL5-;v$G$b=q$$$?$h$&$K$=$l$J$i(BMapNetWorkDrive$B$h$j<+M3EY$,$"$k%U%)%k%@%"%/%;%9MQ$N%@%$%d%m%0$r;H$C$?$[$&$,JXMx$G$O$J$$$+$H8D?ME*$K$O;W$C$F$$$^$9!#(B
Yukio Kishiue
2006-11-27 08:28:21 UTC
Permalink
$B$7$D$3$/$F$9$_$^$;$s$,(B...$B!#(B
$BJL5-;v$G$b=q$$$?$h$&$K$=$l$J$i(BMapNetWorkDrive$B$h$j<+M3EY$,$"(B
$B$H8D?ME*$K$O;W$C$F$$$^$9!#(B
$B!!%U%)%k%@%"%/%;%9MQ$N%@%$%"%m%0$G$O!$%"%/%;%9$9$k$?$a$N%f!<%6(B
$B$d%Q%9%o!<%I$r;XDj$G$-$J$$$N$G$O$J$$$G$7$g$&$+!)$b$7$+$7$F!$;d(B
$B$,4*0c$$$7$F$$$k$N$+$b$7$l$^$;$s$,(B...$B!#(B
--
$B4_>e9,@8(B ( ***@mail.gosei.co.jp )
kounoike
2006-11-27 14:35:30 UTC
Permalink
Post by Yukio Kishiue
$B$7$D$3$/$F$9$_$^$;$s$,(B...$B!#(B
$BJL5-;v$G$b=q$$$?$h$&$K$=$l$J$i(BMapNetWorkDrive$B$h$j<+M3EY$,$"(B
$B$H8D?ME*$K$O;W$C$F$$$^$9!#(B
$B$d%Q%9%o!<%I$r;XDj$G$-$J$$$N$G$O$J$$$G$7$g$&$+!)$b$7$+$7$F!$;d(B
$B$,4*0c$$$7$F$$$k$N$+$b$7$l$^$;$s$,(B...$B!#(B
$B$&!A$s!#;XDj$H8@$o$l$l$P$G$-$J$$$3$H$K$J$k$N$+$J!#$G$b!"%f!<%6L>$H%Q%9%o!<%IF~NO$N%@%$%d%m%0$O=P$F$-$^$9$,!#$?$@!"%5!<%P%^%7%s$N6&M-%U%!%$%k$X$N%"%/%;%9$N>l9g$G$9!#0lHL$N#P#C$N6&M-%U%)%k%@$X$N%"%/%;%9$N>l9g$O!"$=$N#P#C$K%"%/%;%9$G$-$k$h$&@_Dj$7$F$$$J$$$H$=$s$J%@%$%d%m%0$O3N$+$K=P$F$-$^$;$s$M!#$J$N$G!"<+M3EY$,$"$jJXMx$G$O$J$$$+$H8@$C$?H/8@$O<h$j>C$7$^$9!#(B
Loading...