- ベストアンサー
エクセル マクロ コピーについて
過去の質問も見ましたがしっくりくるものが無くて・・教えて下さい。 例) Aフォルダがあります。Aを開くとシート(a)のところにボタンを作成。 そのボタンを押すと、丸ごとBフォルダの中にコピーさせたい。 ファイル→名前をつけて保存 ・・その手間を無くす為に簡略化させたいです。 これは、Aを原本として、勤務表を作成しています。 例えば、Aで6月分を作成。これをBに丸ごとコピーして またAで7月分を作成して、Bへと具合にしたいのです。 Aフォルダのエクセルは、原本としたいのです。 ボタンクリックだけで、このような事が出来るでしょうか? 記述を教えて下さい。 エクセル2000です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問内容を整理しますと Aというフォルダ内に勤務表雛形のブックAがあり、シートaにボタンを作成 ボタンをクリックすることで、Bと言うフォルダに名前を付けてほぞんする という内容でよろしいでしょうか まず「名前をつけて保存」を自動化とあります。 原本であるAのファイル名をそのまま使用すると、翌月には既にあるファイルを上書きしてしまいます。 つまりファイル名は自動生成しなければなりません。 特にこういったファイル名という指定がありませんので、勤務表YYYY-MM分.XLSというふうに日付を使用することにします。 ここではBフォルダをC:\Bとしておきます。 原本のシートを開きマクロを実行させるためのボタンを作成します。 表示メニューからツールバー - コントロールツールボックスを選択 コマンドボタンをシートの適当な空き領域に作成 作成したボタン上で右クリック、メニューからプロパティを選択 ボタンに表示されているテキストをCaptionの項目で変更(内容は適当に) 再度ボタン上で右クリック、コードの表示を選択 表示されたPrivate Sub CommandButton1_Click() ~ End Subの間に下のソースをコピー 表示されているVisualBasicEditorを閉じ、コントロールツールボックスの オレンジ色になっている、デザインモードの終了をクリックします ソースはファイル名を上記の通り生成してC:\Bフォルダにほぞんするものです。 マクロを実行した時点の日付が2008/6であればファイル名は 勤務表2008-06.XLS となります。 途中ファイルを確認変更するための窓を表示しますが、不要であれば'====~'====の部分を削除してもかまいません。 Dim FileName As String Dim FileExt As String FileName = "勤務表" & Format(Now, "yyyy-mm") & ".XLS" '==== FileName = InputBox(FileName & "と言う名前で保存します" & vbCr & "よろしければこのままOKをクリックしてください", "保存ファイル名の確認", FileName) If FileName = "" Then Exit Sub Else If Right(FileName, 4) <> ".XLS" Then MsgBox "ファイル名が異常です。" Exit Sub End If End If '==== FileName = "C:\B\" & FileName If Dir(FileName) <> "" Then '##ファイルが既に存在する If MsgBox("既に指定のファイルが存在します。 上書きしますか?", vbOKCancel, "上書きの確認") = vbCancel Then '##保存せずに終了 Exit Sub ElseIf ThisWorkbook.FullName = FileName Then '##現在開いているファイルと同じなら上書き保存 ThisWorkbook.Save Else '##指定ファイルを削除した後保存 Kill FileName ThisWorkbook.SaveCopyAs FileName:=FileName End If Else '##ファイルを新規保存 ThisWorkbook.SaveCopyAs FileName:=FileName End If ThisWorkbook.Saved = True
その他の回答 (1)
- Masa2072
- ベストアンサー率51% (94/182)
> 記述にC:\B\保存と指定しましたが > Bフォルダにしかコピー出来ません。 上記の記述ですと C:\B のフォルダに保存勤務表200806.xlsなどのファイル名で保存されていませんか? FileName = "C:\B\" & FileName の部分を変更するのであれば FileName = "C:\B\保存\" & FileName のように保存フォルダへのパスの最後に\を付けるのを忘れないでください。
お礼
>C:\B のフォルダに保存勤務表200806.xlsなどのファイル名で保存されていませんか? しっかり出来ていました。 >保存フォルダへのパスの最後に\を付けるのを忘れないでください。 ありがとうございました。 本当に感謝しています。 私もまだまだ勉強したいです。 今後もよろしくお願いします。 出来れば、本当に色々教えて欲しいです。 困った時に助けて下さい。
お礼
本当にありがとうございます。 直ぐに出来る事が出来ました。 ちなみに BフォルダをC:\B で勿論できるのですが、Bフォルダにまとめやすくする為に 保存フォルダを作成 記述にC:\B\保存と指定しましたが Bフォルダにしかコピー出来ません。 どうしてなんでしょうか?