dポイントプレゼントキャンペーン実施中!

下記のマクロを実行すると
連続して指定マクロが実行されます。
しかし、
マクロ「フォルダコピー新規」を実行した後に「戸建てファイルコピー」を実行すると
それぞれ保存先を聞いてきます。
マクロ「戸建てファイルコピー」の場合は保存先を聞いてこず、「フォルダコピー新規」で指定したフォルダ内に保存出来る方法を教えてください。
現状のマクロ
Sub 新規引き受け()
Call フォルダコピー新規
Call 戸建てファイルコピー
End Sub
それぞれのマクロ
Sub 戸建てファイルコピー()
Const FileNewName As String = "総合引き受け(戸建て)"
Dim Destinationfolder As Variant
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "保存先フォルダを選択してください"
.InitialFileName = "\\nas-sp01\share\確認部\電子申請 関連\1.受付\1.確認申請\"
If .Show = False Then Exit Sub
Destinationfolder = .SelectedItems(1)
End With
Dim SourceFile As String
Dim Extension As Variant
For Each Extension In Array(".xlsm", ".xltm")
SourceFile = "\\nas-sp01\share\確認部\電子申請 関連\1.受付\1.確認申請\審査用フォルダ\総合引き受け(戸建て)" & Extension
Dim DestinationFile As String
DestinationFile = Destinationfolder & "\" & FileNewName & Extension
On Error Resume Next
FileCopy SourceFile, DestinationFile

On Error GoTo 0
Next

End Sub

Sub 戸建てファイルコピー()
Const FileNewName As String = "総合引き受け(戸建て)"
Dim Destinationfolder As Variant
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "保存先フォルダを選択してください"
.InitialFileName = "\\nas-sp01\share\確認部\電子申請 関連\1.受付\1.確認申請\"
If .Show = False Then Exit Sub
Destinationfolder = .SelectedItems(1)
End With
Dim SourceFile As String
Dim Extension As Variant
For Each Extension In Array(".xlsm", ".xltm")
SourceFile = "\\nas-sp01\share\確認部\電子申請 関連\1.受付\1.確認申請\審査用フォルダ\総合引き受け(戸建て)" & Extension
Dim DestinationFile As String
DestinationFile = Destinationfolder & "\" & FileNewName & Extension
On Error Resume Next
FileCopy SourceFile, DestinationFile

On Error GoTo 0
Next

End Sub
になります。
宜しくお願い致します。

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます。
    Call 戸建てファイルコピー
    のコードを変更すれば良いのでしょうか?
    申し訳ありません。
    詳しく教えて頂けますでしょうか?
    宜しくお願い致します。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/06/21 11:54
  • うーん・・・

    回答ありがとうございます。
    質問に乗せていませんでした、申し訳ありません。Sub フォルダコピー新規()
    Dim Dst As Variant
    With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show = False Then Exit Sub
    Dst = .SelectedItems(1)
    End With

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/06/21 12:03
  • うーん・・・

    Dim FSO As Object
    Dim Adr As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Adr = ThisWorkbook.Path

    If Right(Dst, 1) <> "\" Then Dst = Dst & "\"
    FSO.CopyFolder Adr & "\審査用フォルダ\検査時必要図書(正本)", Dst
    FSO.CopyFolder Adr & "\審査用フォルダ\返却用(副本)", Dst

    End Sub
    となります。宜しくお願い致します。

      補足日時:2024/06/21 12:04
  • うーん・・・

    回答ありがとうございます。
    上手くできたのですが、「総合引き受け(戸建て)」が2つ保存されてしましました。
    1.総合引き受け(戸建て)サイズが1.134KB
    2.総合引き受け(戸建て)サイズが0KB
    画像をお送りできませんでしたので、
    以上でご確認をお願いいたします。
    解決方法を教えてください。
    何度も申し訳ありません。宜しくお願い致します。

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/06/21 13:34
  • うーん・・・

    Qchan1962さん
    先日はありがとう御座いました。
    貴者が教えて頂けたコード利用して、追加変更をしたい質問を昨日
    させて頂きました。
    勝手なお願いですが、助けていた出来ますと幸いです。
    https://oshiete.goo.ne.jp/qa/13846128.html
    よろしくお願いします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2024/06/22 12:08

A 回答 (4件)

すみません 中途半端なコードを加えていました


同名ファイルがあって開いている想定を外して
下の方
On Error Resume Next
Open DestinationFile For Append As #1
Close #1
If Err.Number > 0 Then
Workbooks(FileNewName & Extension).Close False
On Error GoTo 0
End If
FileCopy SourceFile, DestinationFile
On Error GoTo 0
Next


On Error Resume Next
FileCopy SourceFile, DestinationFile
On Error GoTo 0
Next
に書き換えてみてください
この回答への補足あり
    • good
    • 0
この回答へのお礼

何度もありがとうございました。
全て上手くできました。
感謝いたします。

お礼日時:2024/06/21 14:58

他の回答者様がおっしゃる通りCallしないでまとめた方が無難かと



処理が合っているかはわかりませんが とりあえず

Sub 新規引き受け()
Const originalFileAddress As String = "\審査用フォルダ\検査時必要図書(正本)"
Const copyFileAddress As String = "\審査用フォルダ\返却用(副本)"
Const SourceFileAddress As String = "\\nas-sp01\share\確認部\電子申請 関連\1.受付\1.確認申請\審査用フォルダ\総合引き受け(戸建て)"
Const FileNewName As String = "総合引き受け(戸建て)"

Dim Dst As Variant
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
Dst = .SelectedItems(1)
End With
Dim FSO As Object
Dim Adr As String
Set FSO = CreateObject("Scripting.FileSystemObject")
Adr = ThisWorkbook.Path
If Right(Dst, 1) <> "\" Then Dst = Dst & "\"
FSO.CopyFolder Adr & originalFileAddress, Dst
FSO.CopyFolder Adr & copyFileAddress, Dst

Dim SourceFile As String
Dim Extension As Variant
If Not IsEmpty(Dst) Then
For Each Extension In Array(".xlsm", ".xltm")
SourceFile = SourceFileAddress & Extension
Dim DestinationFile As String
DestinationFile = Dst & "\" & FileNewName & Extension
On Error Resume Next
Open DestinationFile For Append As #1
Close #1
If Err.Number > 0 Then
Workbooks(FileNewName & Extension).Close False
On Error GoTo 0
End If
FileCopy SourceFile, DestinationFile
On Error GoTo 0
Next
End If
End Sub
この回答への補足あり
    • good
    • 0

フォルダコピー新規のコードを教えて

この回答への補足あり
    • good
    • 0

こんにちは



別ルーチンになっているので、引数で渡すかグローバルな変数で渡すかなどの方法で値を受け渡すことは可能です。
とは言っても、(分割してあることに意味があるのかないのかわかりませんけれど)普通に考えれば、他でもそのルーチンを利用している可能性があるので、下手に弄るとそちらで不具合が出かねません。

確実なのは、(長いものではないので)「展開して、ご希望の内容に纏める」ようにしてしまえば、他に影響を与えることもなく実現できるでしょう。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!