![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
下記のマクロは教えて頂いたマクロです。
コピー先にマクロを設定しており、マクロを実行するとコピー元のブックが開き、コピー範囲を指定して、コピー元の指定範囲にコピペ出来、その後、不要となったコピー元のブックを削除できます。
しかし、コピペまでは上手く実行出来ましたが、
不要ブックを削除できませんでした。
解決方法を教えてください。
Sub Macro1()
On Error Resume Next
Dim folderPath As String
Dim fileName As String
folderPath = ThisWorkbook.Path & "\"
fileName = Dir(folderPath & "*(提出用).xlsx")
If fileName <> "" Then
Workbooks.Open folderPath & fileName
Else
MsgBox "コピー元ファイルがありません", , "確認"
Exit Sub
End If
Dim Wb1 As Workbook, Wb2 As Workbook
Set Wb1 = Workbooks(1) 'このブック
Set Wb2 = Workbooks(2) '別ブック
'セルの値を取得する
Application.DisplayAlerts = False
Application.EnableEvents = False
Wb2.Worksheets("提出シート").Range("B1:H47").Copy
Wb1.Worksheets("受付").Range("B1:H47").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
With Wb2
If .Name Like "#########-#*" Then
If MsgBox(.Name & " を削除します", _
vbCritical + vbOKCancel, "警告!") = vbOK Then
.Save
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close (False)
End If
End If
End With
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
以上となります。
よろしくお願いいたします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?8acaa2e)
- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは
読み取り専用に変えて、ファイルを開いたまま削除しようとしているようですが、普通にクローズしてから削除すればできませんか?
もしも、ファイル本体がアクセス権設定等で削除不可になっている場合は、そこを変えない限り削除はできませんけれど・・・
コード内で警告等を止めてしまっていますけれど、エラーの際にどのような警告が出るのか(出ないのか)、エラーメッセージの内容はどうなっているかをよく読んで、それに従って対処すれば良いはずです。
質問者様は「できる/できない」だけで判断しているようですが、実際にはいろいろと情報があるはずなので、それらを活用してください。
(これらの情報に関して何の記載もないので、回答者には「できない」という事象しかわかりません)
No.1
- 回答日時:
試したけれど
コピー元のブックは削除されましたが・・・?
出来ないの?
関係ない事ですが
元の様にロジック分けしたいという事でしたので
個別に呼ぶ場合のエラー対策を入れて・・
モジュールレベル変数が分からないという事なので
新しい標準モジュールで試してください
注:他の処理から呼ぶ場合 Application.EnableEvents = True のタイミングを考慮してください
いずれにしても自身で行う事が大事です
’---ここから下全て
Dim Wb1 As Workbook
Dim Wb2 As Workbook
Sub Sample()
Call 提出シートを開く
Call 提出シートコピー範囲
Call 貼り付け
Call 電子提出削除
End Sub
Sub 提出シートを開く()
Dim folderPath As String
Dim fileName As String
folderPath = ThisWorkbook.Path & "\"
fileName = Dir(folderPath & "*(提出用).xlsx")
Do While fileName <> ""
Workbooks.Open (folderPath & fileName)
fileName = Dir()
Loop
End Sub
Sub 提出シートコピー範囲()
Dim ws As Worksheet
If Workbooks.Count > 1 Then
Set Wb2 = Workbooks(2) '別ブック
On Error Resume Next
Set ws = Wb2.Worksheets("提出シート")
If Err.Number <> 0 Then
MsgBox "コピー元ブックの提出シートが見つかりません"
On Error GoTo 0
Wb2.Close False
End
End If
'セルの値を取得する
ws.Range("B1:H47").Copy
Else
MsgBox "コピー元ブックが見つかりません": End
End If
End Sub
Sub 貼り付け()
Dim ws1 As Worksheet
Set Wb1 = Workbooks(1) 'このブック
On Error Resume Next
Set ws1 = Wb1.Worksheets("受付")
If Err.Number <> 0 Then
MsgBox "コピー先ブックの受付シートが見つかりません"
Application.CutCopyMode = False
On Error GoTo 0
If Not Wb2 Is Nothing Then Wb2.Close False
End
End If
Application.DisplayAlerts = False
Application.EnableEvents = False
ws1.Range("B1:H47").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Sub 電子提出削除()
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロについて教えてください。 2 2024/06/14 16:38
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/13 13:39
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/18 09:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) VBA バックグラウンドで別ブックを開いてデータ転記 3 2024/04/04 14:24
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/03/26 18:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
重複確認
-
{ CONTROL Forms.Label.1}が...
-
マクロの記録を使用したマクロ...
-
エクセルのVBAコードについて教...
-
VBAでCOPYを繰り返すと、処理が...
-
vbaにてseleniumを使用したedge...
-
エクセルのマクロについて教え...
-
VBAなくなるの?
-
VBの色を変えるにはどうしたら...
-
VBA一覧取得 再投稿
-
IEを使わないでhtmlテキストを...
-
【VBA】カーソルのある行の1行...
-
Excel 範囲指定スクショについ...
-
vba アクティブシートの名前変...
-
Vba SelStart、SelLen教えてく...
-
for 文の 繰り返し処理に使える...
-
ユーザーフォームに別シートか...
-
久しぶりのプログラミング
-
ExcelのVBAコードについて教え...
-
Excel VBA ダブルクリックで入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAなくなるの?
-
VBAでCOPYを繰り返すと、処理が...
-
vba 削除
-
プログラミング
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
久しぶりのプログラミング
-
ユーザーフォームに別シートか...
-
エクセルVBAコードで教えて下さ...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAコードについて教え...
-
VBAコードについて教えてくださ...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
Geogebraの操作方法について
-
マクロの記録を使用したマクロ...
-
Excel(M365) Vlookup/セル反転(...
-
Excel 範囲指定スクショについ...
おすすめ情報
削除したいファイルは、コピー元のファイルでワイルドカードを使用している「*(提出用).xlsx」になります。
よろしくお願いいたします。
回答ありがとうございます。
おっしゃる通り
少し自分で色々試してみます。
明日になりますが、又、連絡をさせて頂きます。
一日、教えて頂きまして、感謝感謝です。