
下記の2つのマクロを1つに出来る方法を教えてください。
このマクロは以前教えて頂いたマクロで、マクロを実行すると
指定ファイルが指定フォルダ内に移動します。
マクロ-1
Sub 交付用に移動A3()
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
マクロ-2
Sub 交付用に移動A4()
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) & "*(交付用_A4).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
以上となります。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
1.2つのマクロを呼び出す処理を作成します。
Sub 処理結合()
Call 交付用に移動A3
Call 交付用に移動A4
End Sub
2.以下の
Function folder_acquisition(fPath As String) As Variant()
・・・
End Function
が2つあるので、片方を削除します。
以上で完了です。
実際のソースは、以下のようになります。
マクロ実行時は、Sub 処理結合()を呼び出します。
動作確認はしていませんのでご了承ください。
----------------------------------------------------------
Sub 処理結合()
Call 交付用に移動A3
Call 交付用に移動A4
End Sub
Sub 交付用に移動A3()
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
Sub 交付用に移動A4()
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) & "*(交付用_A4).pdf")
Do While fname <> ""
' ファイルの移動を実行
Name myPath(1) & fname As myPath(2) & fname
fname = Dir
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのブック名の付け方
Excel(エクセル)
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
算術演算子「¥」の意味について
Visual Basic(VBA)
-
-
4
VBAの「To」という語句について
Visual Basic(VBA)
-
5
Excelのデータの入力規則の問題点について
Excel(エクセル)
-
6
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
7
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
8
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
-
9
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
10
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
11
改行文字「vbCrLf」とは
Visual Basic(VBA)
-
12
VBA 同じフォルダ内のすべてのファイルに同じセルをペーストしたい
Visual Basic(VBA)
-
13
PC Excel マクロ
Excel(エクセル)
-
14
ユーザーマクロ作成
Excel(エクセル)
-
15
エクセルで、数字ではない値(文字列)が入った場合の計算式を教えてください。
Excel(エクセル)
-
16
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
17
ダブルクリックで貼り付けた画像からリンクのみ削除し、画像を残したい。
Visual Basic(VBA)
-
18
Excelマクロで使うVBAコードをスプレッドシートのGoogle Apps Scriptに変換
Visual Basic(VBA)
-
19
不要項目の行削除方法について
Visual Basic(VBA)
-
20
VBA 最終行の取得がうまくいかず上書きされてしまいます。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
VBAから書き込んだ条件付き初期...
-
WindowsのOutlook を VBA から...
-
マクロの記録を使用したマクロ...
-
vbsでのwebフォームへの入力制限?
-
ダブルクリックで貼り付けた画...
-
エクエルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
vbs ブック共有を解除
-
VBAでFOR NEXT分を Application...
-
Excelのマクロについて教えてく...
-
Vba WorkBooks.Openについて教...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
[Excel VBA]特定の条件で文字を...
-
【VBA】値を変更しながら連続で...
-
vba textboxへの入力について教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
Vba セルの4辺について罫線が有...
-
【マクロ】開いているブックの...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
VBAでセルの書式を変えずに文字...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
おすすめ情報