下記のマクロは先日教えて頂いたマクロで、マクロを実行すると
フォルダ:検査時必要図書(正本)の中にある、PDFファイルを
フォルダ:########-#_交付用
にコピーできます。
このコードを
フォルダ:検査時必要図書(正本)を無くして
マクロ設定ブックと同じフォルダ内にあるPDFファイルを
マクロ設定ブックと同じフォルダ内にある
フォルダ:########-#_交付用
に移動出来る方法を教えてください。(親切に詳しいコード共教えてください)
宜しくお願い致します。
現状のマクロ
Sub 交付用に移動()
On Error Resume Next
Dim myPath As Variant
Dim fPath As String, fname As String
fPath = ThisWorkbook.Path
' myPath 変数にフォルダパスを取得
myPath = folder_acquisition(fPath)
' 「交付用_A3」で終わるPDFファイルを取得
fname = Dir(myPath(1) & "*(交付用_A3).pdf")
Do While fname <> ""
' ファイルのコピーを実行
FileCopy myPath(1) & fname, myPath(2) & fname
fname = Dir
Loop
End Sub
Function folder_acquisition(fPath As String) As Variant()
Dim fso As Object, f As Object
Dim n As Integer
Dim myPath(2) As Variant
Set fso = CreateObject("Scripting.FileSystemObject")
' 検査時必要図書(正本)フォルダの取得
myPath(1) = fPath & "\検査時必要図書(正本)\"
' フォルダ内のサブフォルダを走査し、「_交付用」で終わるものを見つける
For Each f In fso.GetFolder(fPath).SubFolders
Dim folderName As String
folderName = Mid(f.Path, InStrRev(f.Path, "\") + 1)
' フォルダ名が「8桁の英数字-1_交付用」というパターンに一致する場合
If folderName Like "########-#_交付用" Then
myPath(2) = f.Path & "\"
n = n + 1
End If
' 必要なフォルダが見つかったら終了
If n = 2 Then Exit For
Next f
Set fso = Nothing
folder_acquisition = myPath()
End Function
以上となります。
宜しくお願い致します。


No.2ベストアンサー
- 回答日時:
PDFファイルをコピーではなく移動するためには、FileCopy の代わりに Name ステートメントを使ってファイルの場所を変更するように修正します。
以下のコードは、元のフォルダから目的のフォルダにPDFファイルを移動するマクロです。Sub 交付用に移動()
On Error Resume Next
Dim myPath As Variant
Dim fPath As String, fname As String
fPath = ThisWorkbook.Path
' myPath 変数にフォルダパスを取得
myPath = folder_acquisition(fPath)
' 「交付用_A3」で終わるPDFファイルを取得
fname = Dir(myPath(1) & "*(交付用_A3).pdf")
Do While fname <> ""
' ファイルの移動を実行
Name myPath(1) & fname As myPath(2) & fname
fname = Dir
Loop
End Sub
Function folder_acquisition(fPath As String) As Variant()
Dim fso As Object, f As Object
Dim n As Integer
Dim myPath(2) As Variant
Set fso = CreateObject("Scripting.FileSystemObject")
' 現在のフォルダ内のPDFファイルがあるパスを取得
myPath(1) = fPath & "\"
' フォルダ内のサブフォルダを走査し、「_交付用」で終わるものを見つける
For Each f In fso.GetFolder(fPath).SubFolders
Dim folderName As String
folderName = Mid(f.Path, InStrRev(f.Path, "\") + 1)
' フォルダ名が「8桁の英数字-1_交付用」というパターンに一致する場合
If folderName Like "########-#_交付用" Then
myPath(2) = f.Path & "\"
n = n + 1
End If
' 必要なフォルダが見つかったら終了
If n = 2 Then Exit For
Next f
Set fso = Nothing
folder_acquisition = myPath()
End Function
この修正版では、FileCopyの代わりに Name ステートメントを使用しています。Name <元のファイルパス> As <移動先のファイルパス> という形で、元のフォルダから目的のフォルダにファイルが移動されます。
私には,全く理解出来ませんが
参考になれば幸いです。
今夜は生成AIの使用制限が
かかりましたので
本日最後の解答となります。

No.1
- 回答日時:
コードの修正として、以下のように変更することで、**「検査時必要図書(正本)」フォルダがなくても、マクロ設定ブックと同じフォルダにあるPDFファイルを、同じフォルダ内にある「########-#_交付用」**フォルダに移動することができます。
以下のコードをご確認ください。
Sub 交付用に移動()
On Error Resume Next
Dim myPath As Variant
Dim fPath As String, fname As String
fPath = ThisWorkbook.Path
' myPath変数にコピー元とコピー先のフォルダパスを取得
myPath = folder_acquisition(fPath)
' コピー元のフォルダから「交付用_A3」で終わるPDFファイルを取得
fname = Dir(myPath(1) & "*.pdf")
Do While fname <> ""
' ファイルのコピーを実行
FileCopy myPath(1) & fname, myPath(2) & fname
fname = Dir
Loop
End Sub
Function folder_acquisition(fPath As String) As Variant()
Dim fso As Object, f As Object
Dim n As Integer
Dim myPath(2) As Variant
Set fso = CreateObject("Scripting.FileSystemObject")
' マクロと同じフォルダをコピー元フォルダとして設定
myPath(1) = fPath & "\"
' フォルダ内のサブフォルダを走査し、「_交付用」で終わるものを見つける
For Each f In fso.GetFolder(fPath).SubFolders
Dim folderName As String
folderName = Mid(f.Path, InStrRev(f.Path, "\") + 1)
' フォルダ名が「8桁の英数字-1_交付用」というパターンに一致する場合
If folderName Like "########-#_交付用" Then
myPath(2) = f.Path & "\"
n = n + 1
Exit For ' 必要なフォルダが見つかったら終了
End If
Next f
Set fso = Nothing
folder_acquisition = myPath()
End Function
コードの変更点と説明
1. コピー元のフォルダ設定を変更
myPath(1) = fPath & "\" として、マクロ設定ブックと同じフォルダ内にあるPDFファイルをコピー元に指定しています。
2. 条件に一致する交付用フォルダの検索
folder_acquisition関数内で、マクロ設定ブックと同じフォルダ内にあるサブフォルダを検索し、「########-#_交付用」という名前パターンに一致するフォルダを見つけます。
実行手順
1. 上記のコードをVBAエディタにコピーして実行してください。
2. マクロ設定ブックと同じフォルダ内に「交付用_A3」で終わるPDFファイルがあれば、そのファイルが「########-#_交付用」フォルダ内にコピーされます。
上記は生成AIの解答です。参考になれば幸いです。
これで、「検査時必要図書(正本)」フォルダを使わずに目的の動作が行えるはずです。何か不明点や追加で調整が必要であればお知らせください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/02 11:48
- Android Excelのマクロについて教えてください。 3 2024/06/21 15:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/10/19 09:27
- Visual Basic(VBA) マクロについて教えてください。 下記のマクロは以前教えて頂いたマクロです。 マクロを実行すると 指定 6 2024/01/17 17:50
- Microsoft ASP エクセルのマクロについて教えてください。 1 2023/10/18 10:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2024/01/16 16:33
このQ&Aを見た人はこんなQ&Aも見ています
-


Excelのマクロについて教えてください。
Visual Basic(VBA)
-


以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-


【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
-
4

エクセルvbaの対象セルに色をつける 例えば a日付 b種類 c値段 dその他 にんじん 50 ぴー
Visual Basic(VBA)
-
5

Excelのマクロについて教えてください。
Visual Basic(VBA)
-
6

Visualbasicの現状について教えてください
Visual Basic(VBA)
-
7

Excelの数式について教えてください。
Visual Basic(VBA)
-
8

VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
9

エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
10

算術演算子「¥」の意味について
Visual Basic(VBA)
-
11

VBAの「To」という語句について
Visual Basic(VBA)
-
12

【マクロ】モジュール変数の記述時、Callにて、呼び出されたプロシージャから実行するとエラーとなる?
Visual Basic(VBA)
-
13

【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
14

【ExcelVBA】dictionaryの重複判断の基準(セル結合だと違う値として認識される)
Visual Basic(VBA)
-
15

VBA 2次元配列の出力
Visual Basic(VBA)
-
16

Excelのマクロについて教えてください。
Visual Basic(VBA)
-
17

Excelのマクロについて教えてください。
Visual Basic(VBA)
-
18

Excelのマクロについて教えてください。
Visual Basic(VBA)
-
19

VBAのエラー表示の対処法について
Visual Basic(VBA)
-
20

Excel マクロについて詳しい方、ご教示ください。 『行数が毎回変わる元データの、A列に「1」と入
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】オートフィルター を...
-
Vba Array関数について教えてく...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】値を変更しながら...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
Excel VBA 選択範囲の罫線色の...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルの改行について
-
VBAで特定の文字が入った行をコ...
-
WindowsのOutlook を VBA から...
-
Excel 範囲指定スクショについ...
-
【マクロ】シートの変数へ入れ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報










この度も回答ありがとうございます。
上手くできましたが、
出来ましたら、PDFファイルのコピーでは無く、
移動を希望しておりますが、移動ののマクロを教えて頂けますか。
何度も申し訳ありません。
宜しくお願い致します。