エクセルのマクロを使い 名前の決まっている特定のシートを
新規ブックにして名前をつけて保存をしたいのです.
色々参考にして以下のようなマクロを書いたのですが
これだと元々のファイル名が変わって保存されてしまいました。
どなたかお知恵をお貸しください。
今作ったマクロ
Sub p()
Worksheets("印刷用日誌").Copy
MsgBox Year(Now) & "-" & Format(Now(), "yy-mm") & "-" & Range("k7")
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Year(Now) & "-" & Format(Month(Now), "00") & "-" & Format(Day(Now), "00")
Application.DisplayAlerts = True
On Error GoTo 0
End Sub
よろしくお願いします
No.1ベストアンサー
- 回答日時:
>ThisWorkbook.SaveAs Year(Now) & "-" & Format(Month(Now), "00") & "-" & Format(Day(Now), "00")
ThisWorkbook はコードが書かれているブックの事。
新規Bookに対してなら、
ActiveWorkbook.SaveAs Year(Now) & "-" & Format(Month(Now), "00") & "-" & Format(Day(Now), "00")
ではないかな?
新規にブックを作ったのでそちらがアクティブになっている
という理解が出来ました。
なぜかactiveだとコードが書かれているブックの意味だと思い込んで
しまい使う事すら考えませんでした。
落ち着いて考えると全くその通りです。
めからうろこがおちました。
どうも ありがとうございます。
No.5
- 回答日時:
>これで何をしたかったというと利用者が意識しないでシートのコピーを保存する作業をしたかったんです。
なるほど!
そうすると そのブックはあなたが使うのではなく 別の方が使うという事ですね?
そうすると、まず「マクロを有効にして開く」必要がありますよね?(無効にして開かれたら何にもならないです)
で、マクロを有効にして開く為には「マクロのセキュリティレベルを中にする」必要がありますが大丈夫なんでしょうか?
その辺は きちんと意識して(有効にして開く)いただかないといけないと思うのですが、
その辺は大丈夫でしょうか?
この回答への補足
そうですね、マクロを有効にしなければなりませんです。
このマクロは全体の一部分なので、いずれにしてもマクロを使わなければ
やりたい作業が出来ないのでした。
まあ、どっかから得体の知れないマクロ入りのエクセルファイル貰ってきて実行されてしまった場合の問題は有りますけど、マクロを使う事による便利さも捨てがたいですから色々啓蒙する必要はあると思います。
いろいろありがとうございます。
No.4
- 回答日時:
#3さんのおっしゃる事が ごもっともですね。
上記の操作が そんなに面倒ですか?
シートを新規ブックに移すには。シートを右クリックで「移動またはコピー」→「新しいブック」
を選択すればOKだし、「名前をつけて保存」は新しいブックがアクティブになってる状態で「F12キー」を押せばダイヤログボックスが出てくるし。
まぁでも毎日毎日やる分には面倒でしょうか?
僕もシートを新しいブックにコピーまでは「ボタン」にマクロを登録してますからね。
なので僕の場合、単純に
Sheets("印刷用日誌").Copy
これだけです。
名前をつけるのもそんなに面倒な作業だとは思わないんですけどねぇ?
Excelのメニューバーのヘルプでも色んなサイトでも様々なショートカットが掲載されてるので
ご覧になられてはいかがですか?
いろいろありがとうございます
実際に作成した部分を記載します。
Sub saveascopy()
Worksheets("印刷用設備日誌").Copy
On Error Resume Next
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Format(Now(), "yy-mm") & "-" & Range("k7")
ActiveWorkbook.Close
Application.DisplayAlerts = True
On Error GoTo 0
End Sub
これで何をしたかったというと利用者が意識しないでシートのコピーを
保存する作業をしたかったんです。
No.3
- 回答日時:
ここへ質問する前に、マクロの記録モードにして、質問の操作をして
、そのコードをみて、疑問があれば、質問すべきだ。ファイル名を年月と関連付ける行は別として、他はコードの骨格原型が判るはず。どうしてマクロの記録を重用しないのかな。マクロの記録など問題にせずというレベルではないでしょう。
>名前の決まっている特定のシートを新規ブックにして名前をつけて保存・・
意味があいまい。
開いているブックのシート名AAのシートをコピーして
シートタブで右クリック
移動またはコピー
(移動先ブック名)新しいブック
コピーを作成する
の操作をする、
この操作を思いつきましたか。エクセルVBAはまづエクセルの知識ありきなんです。
ーー
マクロの記録は
Sub Macro1()
Sheets("Sheet1").Select 'A
Sheets("Sheet1").Copy
Range("C2").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\XXXX\My Documents\Book2.xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub
となった。
--
Aの行はSheet1はWorkSheets("XXX")とシート名xxxにする。
Book2.xlsの部分は年月指定のファイル名指定コードで置き換えた文字列を作る。
マクロの記録で余分なコードは削除
Range("C2").Select
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
Application.DisplayAlerts = Falseなどを入れる
この回答への補足
すいません、エクセルまともに使った事無いのでした。
日本語の説明も下手なのですいませんです。
マクロの記録も使いますが、何が余分で何が必要か
考えるより、始めから作った方が勉強になると思って
トライした結果でした。
んでは
No.2
- 回答日時:
すでに回答が出ていますが、ちょっと気になった所があったので
>MsgBox Year(Now) & "-" & Format(Now(), "yy-mm") & "-" & Range("k7")
MsgBox Format(Now, "yyyy-yy-mm-") & Range("k7")
>ThisWorkbook.SaveAs Year(Now) & "-" & Format(Month(Now), "00") & "-" & Format(Day(Now), "00")
ActiveWorkbook.SaveAs Format(Now, "yyyy-mm-dd")
と、した方がスッキリすると思います
このあたりの構文は参考書等に記載あったのをアレンジしたのです。
yy-mm-でセルの値をつなげるやり方が出来るとは思いませんでした
実は&”ー”&を付けてつなげるのはなんだかなーと思っていた所でした
どうもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 2 2022/11/18 15:34
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
WorkBooksをオープンさせずにシ...
-
VBAでブックを非表示で開いて処...
-
エクセルで「ディスクがいっぱ...
-
フォルダ内の複数ファイルから...
-
Excelで複数ブックの同一セルに...
-
ブックの保護ができないんです...
-
エクセルで参照しているデータ...
-
Excelでブックの共有を掛けると...
-
エクセルで別ブックをバックグ...
-
Excel(2010)のフィルターが保...
-
エクセルにおける,「ブック」...
-
Excel VBAでブックを閉じる時、...
-
エクセルでウィンドウの枠固定...
-
Excel起動時に特定のワークシー...
-
エクセル 複数のブックを一度...
-
エクセルファイルをオープンし...
-
エクセルファイルを開かずにpdf...
-
エクセルシートの一部を送りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
ブックのピボットを別ブックに...
-
Excelで複数ブックの同一セルに...
-
Excel(2010)のフィルターが保...
-
エクセルで「ディスクがいっぱ...
-
Excelでブックの共有を掛けると...
-
エクセルファイルを開かずにpdf...
-
エクセルで別ブックをバックグ...
-
同じフォルダへのハイパーリン...
-
エクセルシートの一部を送りたい
-
エクセルにおける,「ブック」...
-
複数ファイルから特定シートの...
-
エクセル 複数のブックを一度...
-
エクセルで50行ごとに区切った...
-
エクセル2016です。「ブッ...
-
複数エクセルから特定シートの...
おすすめ情報