こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAで、作成したファイルの共有サーバーへの保存

エクセルVBAでわからないことがあります。
社内でLANで結ばれた端末が何十台かあります。
各端末で作業したデータを共有サーバー内のフォルダーにテキストとして保存させようと思います。
サーバーのパスは仮に
"\\FXHOGEHOGE\S999\DATA_Auto"
とします。

マクロを書いたエクセルのBOOKは、各端末内に保存されてます。
jコードは概略以下のとおりです。

Sub test01()
With Worksheets(Sheets.Count)
MsgBox Right(.Range("A2").Value, 8) & "の保存開始。", vbInformation"
.Name = "Data" & Right(.Range("A2").Value, 8)
.Copy
End With
ChDrive "F"
ChDir "F:\DATA_Auto"
Application.Dialogs(xlDialogSaveAs).Show ARG1:="DNR.txt", ARG2:=3
ActiveWindow.Close (False)
End Sub

これでたいていは大丈夫なのですが、なかには共有サーバーのドライブをFではなく、GとかEとかに設定しているひとがいて、失敗します。
  ChDrive "F"
  ChDir "F:\DATA_Auto"
のFを、それぞれの方に合わせて書き換えるか、あるいは社内でFに統一すればすむことですが、どちらも厄介です。

"\\FXHOGEHOGE\S999\DATA_Auto" というパスは変わらないので、これから、各端末で設定したドライブ名を取得するか、あるいは、Application.Dialogsで自動的にこのドライブとディレクトリを指定ことはできないものでしょうか?

投稿日時 - 2011-02-10 13:57:10

QNo.6512121

すぐに回答ほしいです

質問者が選んだベストアンサー

安直と言えば安直ですが
変更前:
Application.Dialogs(xlDialogSaveAs).Show ARG1:="DNR.txt", ARG2:=3

変更後:
Application.Dialogs(xlDialogSaveAs).Show ARG1:="\\FXHOGEHOGE\S999\DATA_Auto\DNR.txt", ARG2:=3
などで。

投稿日時 - 2011-02-10 14:49:00

お礼

なるほど!
ARG1:="\\FXHOGEHOGE\S999\DATA_Auto\DNR.txt" でいいんですね、ありがとうございます。
ドライブが変わる場合はかならずChDriveをしなければいけないと思い込んでいました。

それで実務上はこれでOKなんですが、やはり "\\FXHOGEHOGE\S999\DATA_Auto から、端末で設定したFとかGとかのドライブ名は取得できないということなんでしょうか?

投稿日時 - 2011-02-10 17:36:50

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

無理にこだわる事もないと思いますが。。。ベタですけど例えばこんなカンジですかね。


Sub macro1()
 Dim o, e, i
 Dim res as string
 On Error Resume Next
 Set o = CreateObject("WScript.Network")
 Set e = o.EnumNetworkDrives

 For i = 0 To e.Length - 1 Step 2

  'とりあえずイミディエイトウィンドウで確認。
  Debug.Print e(i), e(i + 1)

  If e(i + 1) = "\\FXHOGEHOGE\S999\DATA_Auto" Then
   res = e(i)
   Exit For
  End If
 Next i
 If res = "" Then res = "Not Mapped"

 MsgBox "対象ドライブ名: " & res
 Set o = Nothing
End Sub


WinAPIを使う方法とかも,探すと幾つかヒットすると思います。
やって出来ないということは,そんなに無いと思いますよ。

投稿日時 - 2011-02-10 19:00:25

お礼

ありがとうございます。
けっこうむずかしいんですね。
お手間とらせました。

投稿日時 - 2011-02-11 19:05:57

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-