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

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

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

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

Q&A

解決済

1回答

1505閲覧

フォルダ内pdfファイルの移動

jabe

総合スコア43

VBA

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

0グッド

0クリップ

投稿2023/04/20 05:46

編集2023/04/20 08:49

実現したいこと

親フォルダ内の子フォルダと同じ階層にいるpdfファイルを、子フォルダと同じ階層にいる完了フォルダへ移動したいです。
●イメージ図
イメージ説明
●作業流れ
①ツール.xlsmからVBA実行
②子フォルダ内のpdfファイルを完了フォルダへ移動

●全体フォルダ構成
イメージ説明
※ツール一覧フォルダ内にツール.xlsmが格納されています。
※テスト環境内にイメージ図の親、子フォルダ、pdfファイルが格納されています。

前提

・pdfファイルがない場合は、処理をスルーしたい。
・親フォルダは今後100フォルダになると想定しております。
それにともなって親フォルダの名称は新規作成される時でないと分からないようになっています。

発生している問題・エラーメッセージ・調査したこと・試したこと

・移動前と移動先のフォルダパスが変化する為、変化に対応したパス指定の方法が分かりませんでした。

該当のソースコード

VBA

1Sub 完了フォルダへpdfファイル移動() 2'複数のファイルを移動する 3 Dim FSO As New FileSystemObject 4 Dim FromPath As String 5 Dim ToPath As String 6 Dim FileInFromFolder As Object 7 8 FromPath = "C:\Users\z09071\Desktop\一時\テスト環境\" 9 ToPath = "C:\Users\z09071\Desktop\一時\テスト環境\\" 10 11 Set FSO = CreateObject("Scripting.FileSystemObject") 12 13 For Each FileInFromFolder In FSO.GetFolder(FromPath).Files 14 FileInFromFolder.Move ToPath 15 Next FileInFromFolder 16 17End Sub 18

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

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

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

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

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

logres_Fan

2023/04/20 05:58

ファイル管理ソフトやgitを使わないの?
jabe

2023/04/20 08:50

返信ありがとうございます。 今回は、VBAで実施したいと考えております。
logres_Fan

2023/04/20 08:56

了解です。チャレンジするなら、WordのVBAで実施すると凄いと思います。頑張って下さい。
meg_

2023/04/20 11:16

> 移動前と移動先のフォルダパスが変化する為、変化に対応したパス指定の方法が分かりませんでした。 フォルダ名が変化しない前提であればやりたい事が実現できている、と理解して良いですか?
jabe

2023/04/20 12:36

返信ありがとうございます。 はい、From、ToPath変数へ固定のパスを指定する方法により、固定フォルダ名間の移動は出来るようになっているのですが、今回はフォルダ名が変化するため狙った動作ができない状態になります。
meg_

2023/04/20 12:41

> ・pdfファイルがない場合は、処理をスルーしたい。 上記についても実装済ですか?
jabe

2023/04/21 13:07

返信ありがとうございます。 私のコードでは実装できておりません。
guest

回答1

0

ベストアンサー

以下のようにしてください。
注意事項
1.拡張子が.pdfのファイルのみ転送します。
2.必ず、"完了"フォルダが存在する前提です。("完了"フォルダがないとエラーになります)
3.移動先に同じファイル名のファイルがない前提です。(同じファイル名のファイルがあるとエラーになります)

VBA

1Sub 完了フォルダへpdfファイル移動() 2'複数のファイルを移動する 3 Dim FSO As Object 4 Dim FromPath As String 5 Dim ToPath As String 6 Dim Folder As Object 7 Dim File As Object 8 FromPath = "C:\Users\z09071\Desktop\一時\テスト環境\" 9 10 Set FSO = CreateObject("Scripting.FileSystemObject") 11 12 For Each Folder In FSO.GetFolder(FromPath).subfolders 13 For Each File In Folder.Files 14 If LCase(Right(File.Name, 4)) = ".pdf" Then 15 ToPath = Folder.Path & "\完了\" & File.Name 16 File.Move (ToPath) 17 End If 18 Next 19 Next 20 MsgBox ("完了") 21End Sub 22

投稿2023/04/20 13:51

tatsu99

総合スコア5540

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

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

jabe

2023/04/21 13:09

コード作成ありがとうございます。 試したところ、私のイメージ通りに動作できました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問