プロが教える店舗&オフィスのセキュリティ対策術

Excelのマクロについて教えてください。
マクロ有効テンプレート方式のブックがあります。
最初にこのブックを開き、次に、顧客から送られてきた一般のExcelブック(物件によってファイル名は不特定です)を開き
セル範囲を指定して、マクロ有効テンプレートに貼り付けます。
貼り付け後は、マクロ有効テンプレートのみで作業を行う為、コピー先の一般Excelブック
は不要になります。
下記のマクロ実行後に
コピー先のファイルを削除出来る方法を教えてください。
マクロ
Sub 貼り付け()
Application.DisplayAlerts = False
Worksheets("受付").Range("B1:H47").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.DisplayAlerts = True

Sheets("受付").Range("Q8").Copy
Sheets("受付").Range("F3").PasteSpecial xlPasteValues
Sheets("受付").Range("H60").Copy
Sheets("受付").Range("F24").PasteSpecial xlPasteValues
Sheets("受付").Range("Q9").Copy
Sheets("受付").Range("E12").PasteSpecial xlPasteValues
Sheets("受付").Range("Q10").Copy
Sheets("受付").Range("F12").PasteSpecial xlPasteValues
End Sub

以上です。詳しくコードを教えてください。
よろしくお願いします。

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

  • 質問文に誤字があり申し訳ありません
    顧客から送られてきた
    削除したいファイルの一つのルールとして
    ファイルの先頭に
    必ず
    〇〇〇〇〇〇_〇 半額の数字8桁半角のアンダーバー半角の数字一文字
    の半角10桁の数字が付きます  
    その後に各物件ごとの名前が付きます
    万が一 
    ワークブックと削除したいブック以外を開いている時に間違えて削除したいファイル以外も削除する事を防ぐ事は可能でしょうか?
    よろしくお願いします

      補足日時:2023/07/04 20:24
  • 〇は6ケですが 実際8ケあります
    よろしくお願いします

      補足日時:2023/07/04 20:25
  • ご連絡ありがとうございます
    そうですね メッセージボックスは良い方々ですね
    顧客から送られてきたファイルは
    仕事で使用している専用のソフトで送られてきて その時に先程記載しました 
    先頭に数字が自動的につく事になってます この数字でweb上で顧客とやり取りをする型です 
    上手く補足が出来てますでしょうか?

      補足日時:2023/07/04 20:46
  • おはようございます
    もう一つお願いがあります
    昨日の回答で
    メッセージボックスを表示される事をお勧めしていただけました
    MsgBox("削除しますか?", vbYesNo + vbQuestion)
    このコードをどこに入れたら良いかを考えていただけますか?
    又 okをクリックすると
    対象のブックはそのまま削除
    キャンセルをクリックすると削除されない
    アイコンは赤丸の✖️でお願いできますか?
    何から何まで申し訳ありませんが
    よろしくお願いします

      補足日時:2023/07/05 04:46

A 回答 (4件)

>もう一つお願いがあります


1質問でお願いは1つまでよ・・・
>okをクリックすると
対象のブックはそのまま削除
キャンセルをクリックすると削除されない
アイコンは赤丸の✖️でお願いできますか?

実行していると言う事は対象があると言う事でしょうから
対象ブックが出て来るまで開いているブックを繰り返し探します

Sub test()
Dim wb As Workbook
For Each wb In Workbooks
With wb
If .Name Like "########_#*" Then
If MsgBox(.Name & " を削除します", _
vbCritical + vbOKCancel, "警告!") = vbOK Then
.Save
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close (False)
Exit For
End If
End If
End With
Next
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ルール違反で申し訳ありません。
ありがとうございました。
助かりました。
感謝いたします。

お礼日時:2023/07/05 12:12

>上手く補足が出来てますでしょうか?


残念ながら・・・Copyしているブックのパスが欲しいのでどこかローカルに保存しているのかなと。。

誤動作のリスクはありますが
CreateObject("VBScript.RegExp")を使う必要もなさそうなので
#1の
If .Name <> ThisWorkbook.Name Then を
If .Name Like "########_#*" Then  としてみてください
同様なブックが開かれていれば削除される可能性がありますがね
    • good
    • 0

>削除する事を防ぐ事は可能でしょうか?


そうですよね
たとえ
>必ず〇〇〇〇〇〇_〇 半額の数字8桁半角のアンダーバー半角の数字一文字の半角10桁の数字が付きます 

であっても間違って削除する可能性がありますね
なので 
顧客から送られてきた一般のExcelブックの.Copy コードが無いと
パスが判らないのでKill出来ないですね
です

VBAで一般のExcelブックを開いてコピー(必要な処理を)して
閉じて削除する これは一連の処理にする必要があります

仮に残したい場合は 削除する処理を
MsgBox("削除しますか?", vbYesNo + vbQuestion)
見たいに分岐すれば良いと思います

一般のExcelブックはどのような扱いで開いてコピーしているのでしょう?
    • good
    • 0

>コピー先のファイルを削除出来る方法を教えてください。


コピー元(顧客から送られてきた一般のExcelブック)じゃないの?

顧客から送られてきた一般のExcelブックの.Copy コードが無いと
パスが判らないのでKill出来ないですね
そもそも、添付ファイルとかでメールソフトを介してコピーしている場合、処理が複雑になりますよ
手作業でコピーしているのかな?

マクロ有効テンプレートと対象の一般のExcelブックしか開いていない状態で
一般のExcelブックを削除するなら出来るけど課題が残る処理になると思いますよ・・・・あとで面倒だと思いますので要件を追加してみては・・・

ちなみに
Sub test()
Dim bk As Workbook
For Each bk In Workbooks
With bk
If .Name <> ThisWorkbook.Name Then
.Save
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close (False)
Exit For
End If
End With
Next
End Sub
でThisWorkbook以外の開いている1ブックを削除できます
(元には戻りません)

https://oshiete.goo.ne.jp/qa/13520276.html
続きは?
    • good
    • 1
この回答へのお礼

何時も回答ありがとうございます
又 何時も親切に色々教えて頂き感謝します
早速試してみます
後ほどご連絡させて頂きます

お礼日時:2023/07/04 19:58

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