
こんばんわ!
VBAでエクセルファイルをバックアップしながら使用しているのですが、10個以上ファイルが溜まったら一番古いものを消したいです。
途中まではできているのですが、古いファイルを選択する方法が分かりませんToT
途中までのソースを乗せますので、アドバイスの程よろしくお願いいたします。
==================
Private Sub backup_bot_Click()
Dim Path As String, WSH As Variant
Dim fc As Long
Dim fn As String
'マイドキュメントにバックアップ
Set WSH = CreateObject("WScript.Shell")
Path = WSH.SpecialFolders("MyDocuments") & "\test"
If Dir(Path, vbDirectory) = "" Then
MkDir (Path)
End If
'ファイルコピー
FileCopy "c:test_date\aaa.xls", Path & "\aaa" & Format(Now, "yyyymmdd") & ".xls"
'ファイル数確認
fn = Dir(Path & "\aaa*.xls")
Do While fn <> ""
fc = fc + 1
fn = Dir()
Loop
'10件以上消去
If fc > 10 Then
'ここが分かりません!
End If
End Sub
==================
あ~ちなみにoffice2003エクセルを使用しています。
XP以降のOSで動かしたいです!
No.1ベストアンサー
- 回答日時:
以下の様に一度日付の情報を配列に入れていって、古いもの(数字の小さいもの)から削除すればOKかと思います。
Private Sub backup_bot_Click()
Dim Path As String, WSH As Variant
Dim fc As Long
Dim fn As String
Dim AD() As Long
Dim I As Integer
'マイドキュメントにバックアップ
Set WSH = CreateObject("WScript.Shell")
Path = WSH.SpecialFolders("MyDocuments") & "\test"
If Dir(Path, vbDirectory) = "" Then
MkDir (Path)
End If
'ファイルコピー
FileCopy "c:\test_date\aaa.xls", Path & "\aaa" & Format(Now, "yyyymmdd") & ".xls"
'ファイル数確認
fn = Dir(Path & "\aaa*.xls")
Do While fn <> ""
'日付の部分のみ配列に入れる
ReDim Preserve AD(fc) As Long
AD(fc) = Val(Mid(fn, Len("aaa") + 1, 8))
fc = fc + 1
fn = Dir()
Loop
'古いものを11件以上消去
For I = 11 To fc
Kill Path & "\aaa" & WorksheetFunction.Large(AD, I) & ".xls"
Next I
End Sub
No.2
- 回答日時:
osarusan0214さん
こんにちは。
EXCEL2003のVBAの機能で「FileSearch」があり、それを使うと便利です。
該当データを全件取得するし、名前順や作成順に並べ替えもします。
※必要ならヘルプを参照してください
今回は作成順(新しい順)に並べ替え、古いファイル11件以上を削除をサブルーチン化してみました。
【使い方】
'ファイル数確認
Call 古いファイル削除(Path , "aaa*.xls")
End Sub
Sub 古いファイル削除(フォルダ As String, ファイル名 As String)
Dim I As Long
Dim 件数 As Long
With Application.FileSearch
.NewSearch
.LookIn = フォルダ
.Filename = ファイル名
.SearchSubFolders = False
件数 = .Execute(msoSortByLastModified, msoSortOrderDescending)
If 件数 <= 10 Then Exit Sub
For I = 11 To 件数
Kill .FoundFiles(I)
Next I
End With
End Sub
失礼いたしました。
説明不足でした^^;
フォルダの中には他にもいくつかファイルが入っております^^;
そのため、ファイル全てを並べ替えるご提示いただいたソースだと駄目そうですToT
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共有ファイルを誰かが勝手に操...
-
「ファイル情報が不正です」が...
-
EXCELで特定ファイルの動作が重い
-
R-Groupのサポート受付窓口はど...
-
同じファイルを保存してもSSDと...
-
2台のpcを使っていてもう一台の...
-
「WININET.DLLが見付か...
-
Mobile SyncによるPCのCドライ...
-
DVD shrinkでのISOファイル作成...
-
Excelの履歴を、過去1月に渡っ...
-
仮想isoイメージファイルの書き...
-
hardcopy.log って何ですか?
-
ZOOM によるパソコン会議について
-
コマンドプロンプト 閉じた時の...
-
Docuworks(ドキュワークス)の不...
-
フォルダの削除について
-
C:\\Windows\\SoftwareDistribu...
-
VBAでキャッシュを削除するには
-
VBA ファイルを開くダイアログ...
-
アイコン右下の盾を消す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DVD shrinkでのISOファイル作成...
-
アウトルックをアンインストー...
-
VCFファイル内の同一ファイルを...
-
リアルプレーヤーでダウンロー...
-
HDD等のホルダー・ファイル名の...
-
共有ファイルを誰かが勝手に操...
-
thunderbirdのメールが見れなく...
-
Excelの履歴を、過去1月に渡っ...
-
CD Manipulatorで肝心のcueファ...
-
R-Groupのサポート受付窓口はど...
-
hardcopy.log って何ですか?
-
「WININET.DLLが見付か...
-
EXCELで特定ファイルの動作が重い
-
EXIF情報の削除をした後、プロ...
-
CD-Rの読み取りがおかしい
-
2台のpcを使っていてもう一台の...
-
重複ファイルの検索と抽出
-
PC内のファイルを、iTunesへ...
-
重複ファイルもコピーしたい
-
IsoCreatorで起動CD用のisoを作...
おすすめ情報