質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

4129閲覧

VBAで、ファイルサーバーにユーザIDとパスワードを用いてログインする方法

Ti1234565

総合スコア15

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/07/03 03:07

編集2021/07/03 03:15

VBAでフォームのボタンをクリックしたら、このVBAが乗っているExcelと同一フォルダー内のCSVファイルを\192.168.1.39\bfにコピーするというコードです。

VBA

1Private Sub CommandButton3_Click() 2 Dim strDirectory As String 3 strDirectory = "\192.168.1.39\bf"   '共有ファイルパス 4 Shell ("net use " & strDirectory & " test /user:test") 'パスワード /ユーザー 5  FileCopy ThisWorkbook.Path & "\abc.csv", "\192.168.1.39\bf\abc.csv" 6 Shell ("net use " & strDirectory & " /delete") 7 End 8End Sub

パスワード付きのファイルサーバのファイル移動などを調べて見本コードを参考に作ってみましたが、FileCopy ThisWorkbook.Path & "\abc.csv", "\192.168.1.39\bf\abc.csv" で下記の画像のエラーが発生します

![イメージ説明]

※IPアドレスは見本です。

FileCopy ThisWorkbook.Path & "\abc.csv", "\192.168.1.39\bf\abc.csv" このコードを単体で、FileCopy ThisWorkbook.Path & "\abc.csv", "C:\Users\Documents\abc.csv"にしてローカルでは動作します。

Excel 2016
win10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tosi

2021/07/05 04:59 編集

フォルダの一覧を表示して、ネットのdfが間違い無く接続しているか、確認されたらどうですか。 Dim strFolder As String strFolder = Dir("\\192.168.1.39\bf\", vbDirectory) Do While Len(strFolder) > 0 Debug.Print strFolder strFolder = Dir() Loop
Y.H.

2021/07/05 05:26

net use \\192.168.1.39\bf test /user:test をコマンドプロンプトから実行した場合、エラー無く終了しますか?
tosi

2021/07/05 05:39 編集

>エラー無く終了しますか? 間違っていたら、当然にエラーでます。 多分、Net Useコマンドが完了する前に、コピー動いていると思います。 この時には、フォルダ一覧も表示されません。 F8でゆっくりとステップさせると、時間差で正常に動いたりもします。 回答欄へ完了までの待合せソースを載せました。
Y.H.

2021/07/05 11:43

@tosi tosiさんへではなく 質問者さん(Ti1234565) への問いかけでした。
guest

回答2

0

自己解決

解決しました。
strDirectory = "\192.168.1.39\bf"   '共有ファイルパス
ここを\192.168.1.39 にしました。
net use のすぐあとにコピーではなく、、3秒待たせました

投稿2021/07/05 11:07

Ti1234565

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

環境Excel2010/32Bit

VBA

1Private Declare Function OpenProcess Lib "kernel32" _ 2 (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ 3 ByVal dwProcessId As Long) As Long 4Private Declare Function GetExitCodeProcess Lib "kernel32" _ 5 (ByVal hProcess As Long, lpExitCode As Long) As Long 6Private Declare Function CloseHandle Lib "kernel32" _ 7 (ByVal hObject As Long) As Long 8Private Const PROCESS_QUERY_INFORMATION = &H400& 9Private Const STILL_ACTIVE = &H103& 10 11Private Sub CommandButton3_Click() 12 Dim strDirectory As String 13 Dim Result As Long 14 strDirectory = "\192.168.1.39\bf"   '共有ファイルパス 15 Result = Shell ("net use " & strDirectory & " test /user:test") 'パスワード /ユーザー 16 If Result = 0 Then 17 MsgBox "Error=" & Result: Exit Sub 18 Else 19 '接続完了まで待合せ 20 Dim hProcess As Long 21 Dim EndCode As Long 22 Dim EndRet As Long 23 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, Result) 24 Do 25 Debug.Print "Wait:" & EndRet 26 EndRet = GetExitCodeProcess(hProcess, EndCode) 27 DoEvents 28 Loop While (EndCode = STILL_ACTIVE) 29 EndRet = CloseHandle(hProcess) 30 End If 31 32  FileCopy ThisWorkbook.Path & "\abc.csv", "\192.168.1.39\bf\abc.csv" 33 Shell ("net use " & strDirectory & " /delete") 34 End 35End Sub

投稿2021/07/05 05:26

tosi

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問