
下記のマクロは先日教えて頂いたマクロで、マクロを実行すると
フォルダ:検査時必要図書(正本)の中にある、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
-
4
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
5
Excelの数式について教えてください。
Visual Basic(VBA)
-
6
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
7
算術演算子「¥」の意味について
Visual Basic(VBA)
-
8
VBAの「To」という語句について
Visual Basic(VBA)
-
9
【マクロ】モジュール変数の記述時、Callにて、呼び出されたプロシージャから実行するとエラーとなる?
Visual Basic(VBA)
-
10
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
11
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
12
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
13
VBA 2次元配列の出力
Visual Basic(VBA)
-
14
Excel マクロについて詳しい方、ご教示ください。 『行数が毎回変わる元データの、A列に「1」と入
Visual Basic(VBA)
-
15
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
16
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
17
IT業で開発をされてる方々に質問なんですが、一日に書かれるコード数ってどれくらいですか? また、最近
その他(プログラミング・Web制作)
-
18
Vba エラーコード2147xxxxxxについて教えてください
Visual Basic(VBA)
-
19
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
20
VBA 同じフォルダ内のすべてのファイルに同じセルをペーストしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
Vba FileSystemObject オブジェ...
-
複数のExcelファイルをマージす...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
【マクロ】値を渡されたプロシ...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
Web画面の文字をVB6で取得したい
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
エクセルの改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報
この度も回答ありがとうございます。
上手くできましたが、
出来ましたら、PDFファイルのコピーでは無く、
移動を希望しておりますが、移動ののマクロを教えて頂けますか。
何度も申し訳ありません。
宜しくお願い致します。