こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

マクロ処理後のファイル名変更について

マクロでいくつかの処理を行った後、もとのファイル名に
「済+ファイル名」としてファイル名を変更して終了をしたいのですが、
どのようにすればできるのかわかりません。
どなたか教えていただけますか?

イメージ)
処理前のファイル名:サラダ.xls、お肉.xls・・・
処理後のファイル名:済サラダ.xls、済お肉.xls・・・


Dim myPath As String
Dim myFile As String
Dim w As Workbook
Dim s As Worksheet

myPath = ThisWorkbook.Path & "\"
myFile = Dir(myPath & "*.xls")
Do Until myFile = ""
If myFile <> ThisWorkbook.Name Then
Set w = Workbooks.Open(myPath & myFile)
For Each s In w.Worksheets
s.Range・・・・・
    ・・・・・・・・
    ・・・・・・・・
Next
w.Close savechanges:=True
End If
myFile = Dir()
Loop
MsgBox "完了しました。"
End Sub

投稿日時 - 2011-02-25 10:43:59

QNo.6548973

すぐに回答ほしいです

質問者が選んだベストアンサー

ん?
ご相談を出し直したのでしたら,継続中の前のご質問は解決して閉じる操作を行っておいてください。


「フォルダにあるファイルを全部処理する」で始めた仕事に「新たにファイルを名前を変えて保存する」という思いつきを付け足してしまったので,追加したファイル(これも同じフォルダにあるので)を再度処理してしまわないように除外する余計な仕組みが必要になります。
そのイミでは,例えばフォルダの中に「済フォルダ」を別途用意しておき,そちらに吐き出すようにした方が簡単は簡単です。

作成例
変更箇所1
If myFile <> ThisWorkbook.Name Then

変更後:
if myfile <> thisworkbook.name and not myfile like "済*.xls" then



変更箇所2
w.Close savechanges:=True

変更後:
w.saveas filename:=mypath & "済" & myfile
w.close false

投稿日時 - 2011-02-25 11:06:08

補足

連日ともにありがとうございます。

すごいっ!できました!

ただkeithinさんの教えていただいたソースに変えてみましたが、
処理前のファイルと同じ場所に、「済ファイル名.xls」ができてしまいます。
「済フォルダ」でも作って新ファイルを入れるのは難しいでしょうか。

投稿日時 - 2011-02-25 11:33:23

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

ブックの名前の変更は、そのブックをとらえてName=を使えば仕舞い。
(1)各々の1ブックの処理が完了した時点がとらえられる(コード上で)ならそこでActiveWorkbook.Name = "済" & ActiveWorkbook.Name
のようなことをやれば仕舞いではないか。
ーー
(2)しかし全部完了してしまってからやるなら、済をつけるべきファイルが、他と混じると、区別できなくなる(区別が必要)。
これを区別できる仕組みはあるのか(例えば名前などで)
出来るだけ、各々の1ブックの処理が完了した時点(コード上の個所)をとらえて、上述(1)に持っていかないと面倒。
ーー
こういう点のことを質問に書いて質問しないとダメではないですか。

色々質問を連発しているようだが、この件は上げているコード以外が判らないとなんとも答えようがない。

投稿日時 - 2011-02-25 11:41:14

お礼

ありがとうございます。
わかりづらくてすいませんでした。

投稿日時 - 2011-02-25 13:07:40

ANo.3

「済フォルダ」は事前に手で作っておきます。
ファイルを保存しているのはsaveasの命令です。ここに「(myPathの下の)済フォルダに保存しろ」と追加します。

変更後:
w.saveas filename:=mypath & "済フォルダ\" & myfile

投稿日時 - 2011-02-25 11:40:21

お礼

なるほど。
ただ手作業でフォルダを作ってもその中に処理後のファイルが入らず・・・
でもなんとなくイメージができてきたので、もう少し格闘してみます。
ご丁寧にありがとうございました。

投稿日時 - 2011-02-25 13:09:31

ANo.2

Dim myPath As String
Dim myFile As String
Dim w As Workbook
Dim s As Worksheet

myPath = ThisWorkbook.Path & "\"
myFile = Dir(myPath & "*.xls")
Do Until myFile = ""
If myFile <> ThisWorkbook.Name Then
Set w = Workbooks.Open(myPath & myFile)
For Each s In w.Worksheets
'処理
w.Close savechanges:=True

’保存して閉じた後に名前変更
’★この行を追加
Name myPath & "\" & myFile As myPath & "\済" & myFile


Next
End If
myFile = Dir()
Loop
MsgBox "完了しました。"

投稿日時 - 2011-02-25 11:09:29

お礼

ありがとうございます!できました♪

投稿日時 - 2011-02-25 11:30:02

あなたにオススメの質問