街中で見かけて「グッときた人」の思い出

Excel で、[ファイル][名前を付けて保存]をマクロで行うようにしました。
新しいファイル名にはマクロで日付記号を付加してあります。
このあと、すぐにもとのファイルを開き、新しくできたファイルを閉じる操作を、マクロで行いたいのですが、どうしたらよいでしょうか。
あるいは、別名コピーという方法はあるのでしょうか。
教えて下さい。よろしくお願いします。

A 回答 (7件)

> メッセージボックスでの確認は、どのみち上の空になって、手間がかかるだけですから、ファイルコピーは直接実行したいと考えています。



変数Fnをメッセージボックスで取り出せるんだから、ファイル名に持っていけばいいだけの話じゃないですか?
#3のコードに付け加えると以下の通りです。」

Sub test02()

dv = IIf(Day(Date) < 11, Date, Date + 21)
fn = Format(dv, "YYMM") & ".xls"

Sheets.Copy

ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\ユーザー名\デスクトップ\" & fn

ActiveWindow.Close

End Sub

この回答への補足

merlionXXさん ありがとうございます。

試してみましたら、次のようなエラーメッセージが出ました。

--------------------
実行時エラー'1004'
ファイル'c:\MyDocuments\Trrec'にアクセスできません。次のいずれかの理由が考えられます。
・ファイル名またはパス名が存在しな可能性があります
・開こうとしているファイルは、ほかのユーザーまたはプログラムによって開かれています。他のプログラムで開いている場合、ファイルを閉じた後、もう一度実行してください。
・保存しようとしているファイルと同じ名前のファイルが、既に読み取り専用のファイルと
--------------------

ブック内の全シートがコピーされた \book1 ができています。
\Trrec は、記録用に作ったフォルダーです。

補足日時:2007/06/30 16:47
    • good
    • 0
この回答へのお礼

merlionXXさん ありがとうございました。

お礼日時:2007/07/01 11:31

> ファイル'c:\MyDocuments\Trrec'にアクセスできません。



このパスの記述が間違っているのでは?
自分でマクロの記録で\Trrec にファイルを保存してみて、どういう記述になるか確認してみたらどうでしょう?
    • good
    • 0
この回答へのお礼

merlionXXさん いろいろありがとうございました。
下記のとおりで巧くいきました。
Filename:= の尻尾のところを書き間違えていたようです。.xls の記述はこの場合不要でした。
------------------------------------------------
Sub 別名保存()
'もとのファイル名のあとに年月(セルA10の値:0707表示)を加え、シートのデータのみ保存
Dim fn As Long
fn = Format(Sheets("Sheet1").Range("A10").Value, "yymm")
Sheets.Copy
ActiveWorkbook.SaveAs Filename:="C:\My Documents\Trrec\MacroTest" & fn
End Sub

お礼日時:2007/07/01 11:29

一文字抜け落ちてました! Σ( ̄ロ ̄lll)


訂正です。

dv = IIf(Day(Date) < 11, Date, Date + 21)
fn = Format(dv, "YYMM") & ".xls"
MsgBox fn
    • good
    • 0
この回答へのお礼

merlionXXさん ありがとうございました。

お礼日時:2007/06/30 11:12

毎月、10日までなら当月を、11日以降なら翌月を"yymm" 形式で、今なら 0707のようにしたいということですね?



dv = IIf(Day(Date) < 11, Date, Date + 21)
fn = Format(d, "YYMM") & ".xls"
MsgBox fn

ではいかが (^∇^)?

この回答への補足

merlionXXさん ありがとうございます。

> 毎月、10日までなら当月を、11日以降なら翌月を"yymm" 形式で、今なら 0707のようにしたいということですね?

いいえ、そういうふうに値を取り出せる関数のセルが作ってあって、そこから出した値"yymm"をコピー先のファイル名のうしろに書き加えたいということです。
なお、メッセージボックスでの確認は、どのみち上の空になって、手間がかかるだけですから、ファイルコピーは直接実行したいと考えています。
よろしくお願いします。

補足日時:2007/06/30 08:44
    • good
    • 0
この回答へのお礼

merlionXXさん ありがとうございました。

お礼日時:2007/07/01 11:32

#2です。


もとの全シートをコピーして名前をつけて保存するサンプルです。
もとのシートは閉じません。

Sub test01()

fn = Format(Now(), "hhmmss") & ".xls"

MsgBox fn & "(現在時間)として保存します。"

Sheets.Copy

ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\ユーザー名\デスクトップ\" & fn

ActiveWindow.Close

End Sub

この回答への補足

merlionXXさん ありがとうございます。

Format () の使い方がよくわからないので、教えてください。

実はすることがちょっと込み入っておりまして、このファイルコピーを実施する日が中旬以降の場合には翌月の表示になるようにしてあります。
表示形式は、m"月"とし、今日 07/06/29 現在なら 7月 となります。
関数は =IF(MONTH(NOW()-10)>=12,1,MONTH(NOW()-10)+1) です。

このセルから値を "yymm" 形式で取り出し、今なら 0707 として、ファイルコピーするとき、今のファイル名のあとに加えたいのです。

よろしくお願いします。

補足日時:2007/06/29 12:19
    • good
    • 0
この回答へのお礼

merlionXXさん ありがとうございました。

お礼日時:2007/07/01 11:33

もとのファイル全体を名前を付けて保存するのではなく、必要なシートだけをコピーして日付記号を付加した名前で保存し、終了させれば、もとのファイルは終了せずに開いたままですよ。

この回答への補足

merlionXXさん ありがとうございます。

よくわからないので教えて下さい。

> 必要なシートだけをコピーして日付記号を付加した名前で保存

1.シートのコピー先は新しいブックですか?
2.一つのシートだけを抜き出して直接保存はできませんか?

補足日時:2007/06/29 09:13
    • good
    • 0
この回答へのお礼

merlionXXさん ありがとうございました。

お礼日時:2007/07/01 11:34

えーザックリですが・・・


-----
(1)本体ブック(A)から、ファイル名を指定して複製ブック(B)を保存
 ※ここで自分自身は複製ブック(B)になっている
(2)本体ブック(A)を開きなおす
(3)複製ブック(B)を閉じる(保存確認なし)
-----
の手順で可能だと思います

例)-----
Administratorでログイン状態でデスクトップにBook1.xlsを作成し
マクロ(sub test())内に下記を書けば動くかと・・・

(1)
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Administrator\デスクトップ\Book2.xls"

(2)
Workbooks.Open Filename:="C:\Documents and Settings\Administrator\デスクトップ\Book1.xls"

(3)
ThisWorkbook.Close False
    • good
    • 0
この回答へのお礼

nullnullpoさん ありがとうございました。

お礼日時:2007/07/01 11:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!