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

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

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

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

Q&A

解決済

2回答

2164閲覧

ネットワークドライブにファイルを移動させたい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

0グッド

0クリップ

投稿2019/03/25 11:38

編集2019/03/25 11:43

引数toppassでネットワークドライブのパスを渡して、c:aaa配下にあるa.csvファイルを移動させる関数を作りたいと思っています。

Option Explicit

Declare Function SetCurrentDirectory Lib "kernel32" Alias _
"SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long
Sub test(filepass As String, topass As String)
Dim fn As String

Call SetCurrentDirectory(topass) CurDir

…とネットワークドライブがあるかまでは確認できるのですが、そこから先移動させる方法がどうしたらいいのか分からず困っております。
ファイルを移動させる方法をご教示頂けないでしょうか。(可能であればコードが書いてあるサイトなどもご紹介頂けると非常に助かります…)

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

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

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

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

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

guest

回答2

0

移動、じゃなくて、ファイルをコピーして元ファイルを削除する、というのでいきましょう

投稿2019/03/25 11:41

y_waiwai

総合スコア87774

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

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

退会済みユーザー

退会済みユーザー

2019/03/25 11:42

回答ありがとうございます! 無知で申し訳ないのですが、ネットワークドライブの場合は直接の移動とはできないのでしょうか?
y_waiwai

2019/03/25 11:44

できるかもしれない場合もありますが、できないと思っていたほうがいいです
guest

0

ベストアンサー

Nameステートメントが使えます。
https://www.moug.net/tech/exvba/0060093.html

filepassおよびtopassがフルパス名であるならこんな感じで。

VBA

1Sub test(filepass As String, topass As String) 2 Name filepass As topass 3End Sub

フルパス名ではなくパス名であるなら、引数をフルパス名になるように加工してください。

余談1
移動は上記の方法でできますが、失敗してファイルが紛失する可能性も無きにしも非ずなので、コピーしてから削除するほうが無難かもしれません。

余談2
パスはpassではなくpathです。

投稿2019/03/25 12:42

ttyp03

総合スコア16998

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

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

退会済みユーザー

退会済みユーザー

2019/03/25 13:50

ご回答ありがとうございます! ちなみに分かれば教えて頂きたいのですが、最初はFileSystemObjectオブジェクトのMoveFileでやろうとしたところうまく移動できませんでした。この場合、ネットワークドライブのアドレスだと実行できない原因は何が考えられるのでしょうか?
ttyp03

2019/03/25 14:08

ファイルエクスプローラーからはできるのでしょうか? 権限さえあれば何を使ってもできるとは思いますよ。 あとはパスが間違っていないかはご確認ください。
退会済みユーザー

退会済みユーザー

2019/03/25 14:15

ファイルエクスプローラーからネットワークドライブのアドレスを指定してウインドウを開くことはできました。 また、上記コードの Call SetCurrentDirectory(topath) CurDir のCurDir では、ネットワークドライブのパスが取得できておりました。 移動先にネットワークドライブを指定するようになってから、MoveFileでフルパスを指定する処理による移動できなくなったのでネットワーク接続処理などが必要なのか??と考えておりました。
退会済みユーザー

退会済みユーザー

2019/03/25 23:37

先程、共有サーバーに接続できるようになったので試した所、Nameステートメントでは移動ができず、 FileCopy→保存元のFileをkillで移動ができました。 詳しく教えて頂けたので、こちらをベストアンサーにさせて頂きます。
ttyp03

2019/03/26 00:06

私の環境ではNameで移動できましたけどね。 たぶんパスの指定が違うのでしょう。 いずれにしてもコピー→削除の方が安全なのでよいとは思いますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問