現在開いているエクセルのファイルにマクロを記述し、
1 「処理済」というフォルダーに、開いているエクセルファイルを移動して、同じ名前でエクセルを保存する。
2 「CSV」というフォルダーに、開いているエクセルファイルをCSVファイルに変換して名前を「処理.csv」とし保存する。
3 現在開いているエクセルファイルは削除する。
以上の三つの処理をさせようと、以下のようにしましたが、1,2の処理は出来ましたが、3の開いているエクセルファイルが残ってしまいます。
以上三つの処理が一度に出来るマクロの記述を教えて下さい。
よろしくお願いします
Sub マクロ()
ActiveWorkbook.SaveAs Filename:="C:\処理済\" & ActiveWorkbook.Name
ChDir"C:\CSV"
ActiveWorkbook.SaveAs Filename:= "C:\CSV\処理.csv" _
, FileFormat:=xlCSV, CreateBackup:=False
Application.DisplayAlerts = False
If Workbooks.Count = 1 Then
Application.Quit
Else
ActiveWorkbook.Close
End If
Application.DisplayAlerts = False
End Sub
No.2ベストアンサー
- 回答日時:
Excel2010では下記のような感じで出来ます。
それ以外のバージョンでも雰囲気はつかめるかと。
標準モジュールに
Sub killTest()
Dim orgBK As String
orgBK = ThisWorkbook.FullName
ThisWorkbook.SaveAs "e:\tmp\newBook.xlsm"
ThisWorkbook.SaveAs "e:\tmp\newCSV.csv", xlCSV
Kill orgBK
Application.DisplayAlerts = False
Application.Quit
End Sub
ファイルを適当な名前で保存。
再度開いて、killTest を実行。
上記の場合ではE:\tmp にファイルが保存されオリジナルは削除されています。
No.4
- 回答日時:
ANo1ですが。
訂正。
できました・・・。
ただし
1 「処理済」というフォルダーに、開いているエクセルファイルを移動して、同じ名前でエクセルを保存する。
2 「CSV」というフォルダーに、開いているエクセルファイルをCSVファイルに変換して名前を「処理.csv」とし保存する。
3 現在開いているエクセルファイルは削除する。
の処理は変更します。
1 開いているエクセルファイルを「処理済」というフォルダーに、名前をつけて保存する。
(xlsで。)
⇒これで、元のファイルの排他制御が解除される。
2 「CSV」というフォルダーに、開いているエクセルファイルをCSVファイルに変換して名前を
「処理.csv」とし保存する。
・・・これは影響しない。
3 元のエクセルファイルは削除する。
・・・開いているエクセルファイルではないことに注意!
★できたプログラム(保存と削除だけですけど)
C:\temp\test111.xls
というファイルにボタンを作って処理してます。
Private Sub CommandButton1_Click()
Dim OLDNAME As String
OLDNAME = ActiveWorkbook.FullName
ChDir "C:\temp\済"
ActiveWorkbook.SaveAs Filename:="C:\temp\済\TEST111.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Kill OLDNAME
End Sub
No.3
- 回答日時:
何のために何をしたいのか良く分からない部分があります・・。
新規ファイルを一度も保存していない場合は
ディスク上にファイルが存在しません。
Excel上では仮の名前でBook1にはなっていますけどね。
なので、前回回答の、Kill orgBK はエラーになりますし
そもそも存在しないので削除の必要もありません。
ですので、ファイルを適当な名前で保存して・・と回答した次第です。
既にディスク上にあるファイルを開いて
前回回答のコードを標準モジュールにコピペして即座に実行した場合は
エラーにはなりません。
ただ、この場合はマクロ付きで保存されてしまいますので
>現在開いているエクセルのファイルにマクロを記述
ではなくて
個人用マクロブックを作成して使用すれば
http://detail.chiebukuro.yahoo.co.jp/qa/question …
↑2010の場合
Sub killTest()
Dim trgBKName As String, trgBKFullName As String
trgBKName = ActiveWorkbook.Name
trgBKFullName = ActiveWorkbook.FullName
If MsgBox(trgBKName & "ですか?", vbOKCancel) = vbCancel Then
Exit Sub
End If
Workbooks(trgBKName).SaveAs "e:\tmp\" & trgBKName
Workbooks(trgBKName).SaveAs "e:\tmp\newCSV.csv", xlCSV
Workbooks(trgBKName).Close
Kill trgBKFullName
Application.DisplayAlerts = False
Application.Quit
End Sub
のような感じで良いのかなと思います。
毎回モジュールにコピペする手間も必要ありませんし。
。。って、Siegrune さんが回答されていますね。
No.1
- 回答日時:
>現在開いているエクセルのファイルにマクロを記述し、
>・・・
>3 現在開いているエクセルファイルは削除する。
実行しているマクロが登録されているExcelファイルを削除しようと考えていませんか?
無理です。
開いているExcelファイルは排他使用されていますので、削除できませんし、
実行しているマクロのあるファイルを閉じるとマクロが終了して続きが処理できません。
(閉じて削除するという処理もできません。)
書かれているやりたいことをするためには、普通、
実行するマクロだけを格納した別のExcelファイルを用意して、
そのExcelファイルから、目的のExcelファイルを開いて処理して、閉じてから削除する
方法をとります。
ありがとうございました。
開いているファイルが現在あるフォルダーからなくなればいいので、ファイルを処理済ファイルに移動して、そこで閉じて保存してもよいのですが、そのようなことは出来ますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの特定行の削除
-
vbsからのExcelマクロ呼び出し...
-
Excel: ファイル名になぜ、[...
-
EXCELVBAにて文字列にして「01...
-
docxをmht形式で保存したファイ...
-
Excelファイルを比較し、差分箇...
-
OneDrive必要なものでしょうか
-
VBSでフォルダ内の最新のファイ...
-
CSVファイルの暗号化
-
ファイルが移動してもリンクの...
-
WINDOWS CMDからゴミ箱のファ...
-
batでファイル名を変更したい(...
-
VBAにおいて、ファイルの移...
-
C# リッチテキスト形式のファイ...
-
FTPのgetとputの使いわけ。
-
Googleドライブについて
-
エクセルで移動したシートを復...
-
共有エクセルファイルでのユー...
-
VBA ファイル一覧を取得して全...
-
エクセルの固定範囲にCSVを貼り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iCloud for Windowsをアンイン...
-
vbsからのExcelマクロ呼び出し...
-
CSVファイルの特定行の削除
-
EXCELVBAにて文字列にして「01...
-
OneDrive必要なものでしょうか
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
複数のExcelファイルにある同名...
-
VBAにおいて、ファイルの移...
-
彼女の過去の恋愛に嫉妬してし...
-
Googleドライブについて
-
WINDOWS CMDからゴミ箱のファ...
-
[Unity]シーンファイルの中が消...
-
エクセルの拡張子XLSのファイル...
-
batでファイル名を変更したい(...
-
Excelに貼り付けた画像を圧縮す...
-
エクセルのファイル:「自分」が...
-
5000個のtiffファイルをpdfへ変...
-
VBA ファイル一覧を取得して全...
-
HTMLのリンクで、EXCELをIEでは...
おすすめ情報