あるYというフォルダ内にエクセルファイルが複数入っています。
Xという別のエクセル(データベース)があり、A列(A2~Axx)にYフォルダ内に入っているエクセルファイル名が記載しており、そのファイルを上から順に開き、ある処理をしたあとZというファルダに保存することを繰り返します。その際、A列に同じ名前のファイルもある(同じ名前のものでも処理が異なる。Xのエクセルファイルの行の方でコントロール)ため、一度処理したものの場合、上書き、もしくはエラー?になってしまう?と思われる為、同じファイルの処理の場合、エクセルファイル名の後ろに-1、-2、-3・・・・みたいな感じで保存したいのですが、そのようなことは可能でしょうか?
No.1ベストアンサー
- 回答日時:
Countifを使って処理中のファイルと同名ファイルが前にいくつあったか調べ、1個あったら-1、
2個あったら-2を追加します。
Sub Macro1()
Dim YFolder As String
Dim ZFolder As String
Dim myName As String, myExtension As String, dup As Long
Dim i As Long
YFolder="Yフォルダパスと¥マーク"
ZFolder="Zフォルダパスと¥マーク"
With Activesheet
For i=2 To .Cells(.Rows.Count, "A").End(xlUp).Row
Workbooks.open filename:= YFolder & Cells(i,"A").Value
'何らかの処理
'保存ファイル名の決定
dup=WorksheetFunction.Countif(Range("A2", .Cells(i-1,"A")),.Cells(i,"A").Value)
If i>2 And dup>0 Then
myName=Sprit(.Cells(i,"A").Value,".")(0)
myExtension=Sprit(.Cells(i,"A").Value,".")(1)
SaveFileName=ZFolder & myName & "-" & dup & "." & myExtension
Else
SaveFileName=ZFolder & .Cells(i, "A").Value
End If
’保存
Workbooks(.Cells(i,"A").Value).SaveAs filename:=SaveFileName
Workbooks(.Cells(i,"A").Value).Close
Next i
End With
End Sub
No.2
- 回答日時:
> そのようなことは可能でしょうか
それなりの処理を記述すれば可能です。
A列には拡張子を含むファイル名が入っていると仮定します。
( . の数は問わない)
以下は1つのファイル名を求めるだけのものです。
同じ処理を何回実行しても、同じファイル名にはならないと思います。
(求めたファイル名で随時ファイルを作成していたらの話ですけど・・・)
Z = "D:\Hogehoge\"
sA = Cells(2, "A").Value
i = InStrRev(sA, ".")
sC = Mid(sA, i)
sA = Z & Left(sA, i - 1)
sB = ""
i = 1
While (Dir(sA & sB & sC) <> "")
sB = "-" & i
i = i + 1
Wend
sA = sA & sB & sC
※
> 同じ名前のものでも処理が異なる
のなら、
> sA = Z & Left(sA, i - 1)
部分で処理パターンを示すものを付加しても良いかも
sA = Z & Left(sA, i - 1) & "_処理A"
とか
sA = Z & "処理A_" & Left(sA, i - 1)
とかとか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- PDF エクセルのVBAでファイルをpdfで保存するとソフトによっては開けなくなる 3 2022/06/08 10:20
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どうやってもFor文を抜けてしま...
-
IF文に時間(何時から何時ま...
-
【C#/Java?】try-catchでcatch...
-
iPhoneのニューラルエンジンっ...
-
特定の名前のオートシェイプの...
-
Excel VBA セルの名前があるか...
-
VB6にてネットワーク上にある共...
-
StatusStripの表示が更新されな...
-
エクセルVBAでロックをかけたい
-
ListViewから選択中の文字列を取得
-
特定のファイルを他のプロセス...
-
vbaのエラー対応(実行時エラー...
-
UWSCのTHREADについて
-
決まった時刻に処理を行いたい
-
Functionで戻り値を複数返す方法
-
C++ Builder6.0 TNMFTPコンポー...
-
C# 指定時間(秒間)の間処理を...
-
VBAの進捗状況をリアルタイ...
-
検索サイトで、検索結果に広告...
-
Windows APIのメソッドをPInvok...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
Word VBA。各マクロの間に待ち...
-
【VBA】エラー処理で別プロシー...
-
UWSCのTHREADについて
-
シェルスクリプトでファイル内...
-
ドリブン??
-
Functionで戻り値を複数返す方法
-
iPhoneのニューラルエンジンっ...
-
エクセル VBAで複数セル選択時...
-
COBOL OCCURSで指定したデータ...
-
どうやってもFor文を抜けてしま...
おすすめ情報