4、完成したBookを保存します。 又、バックアップ用に直近10日分のデータを別フォルダに自動的に保存していきます。
■テキストファイルの取り込み〜表作成〜印刷で一連の作業を終えたBookの保存処理を実行します。
※Cドライブの「Uriage」フォルダにdata.xlsとして保存します。(常に最新のファイルが1つだけ上書き保存されます) 同時に「Save」フォルダに直近10日分のデータを保存します。 尚、予めCドライブに「Uriage」と「Save」フォルダを作成し、一番最初のBookの保存は手処理で行う事とします。 【最初の保存】 → 現在開いているファイルのツールバーから「ファイル」→名前を付けて保存→Uriageフォルダを選択→ファイル名は「data」、 ファイルの種類は「Microsoft Excelブック」になっている事を確認して「保存」ボタンを押して実行します。
<プロシージャ例> →sample-code
■メッセージボックス関数 MsgBox(prompt,buttons,title,helpfile,context) prompt・・・ダイアログボックスに表示する文字を示す文字列を指定。 buttons・・・表示するボタンの種類などを定数、または値で指定。[省略可] title・・・タイトルバーに表示する文字列を指定します。[省略可] heipfile・・・ヘルプファイルを指定。[省略可] context・・・表示するヘルプの内容に対応したコンテキスト番号を指定します。[省略可] ※上のプロシージャ「mysave」の3〜5での例 ↓ mymsg = "data.xlsの終了処理を実行します。" & Chr(13) & _ Chr(13) & _ "上書き保存とCドライブのSaveフォルダにバックアップします。" & Chr(13) & _ Chr(13) & _ "宜しいですか?" mytitle = "終了確認" mybtn = MsgBox(mymsg, vbOKCancel + vbInformation, mytitle) メッセージの表示内容↓ 引数「buttons」で設定可能な定数一覧
■ボタンの戻り値 MsgBox関数で、ボタンによる戻り値を使用する場合は、引数を()で囲む必要があります。
■改行文字に付いて 上のメッセージボックスではChr関数を利用して、改行しています。 Chr関数は文字コードに対応する文字列を取得する関数で、引数Charcodeに対応したASCllコードに対応する文字や制御文字返します。
Windows環境で使用する場合、Chr(13) のみで使われる事が多いようです。 ■SaveCopyASメソッド/指定したブックのコピーを保存する SaveCopyAS(Filename) Filename ・・・コピーするブックのファイル名を指定します。既に同じファイル名がある場合は、そのまま上書き保存しますので、注意が必要です。 ■Format関数/文字列を指定した表示形式に変換する Format(Expression,Format,FirstDayOfWeek,FirstWeekOfYear) Expression ・・・書式を変換したい数値や文字列を指定します。 Format・・・変換後の書式を定義済み書式または表示書式指定文字を使用して指定します。[省略可] FirstDayOfWeek・・・週の第1日目の曜日をVbDayOfWeekクラスの定数を使用して、指定します。省略した場合は、定数VbSundayが指定されます[省略可] FirstWeekOfYear・・・年度の第1週目の週をVbFirstWeekOfYearクラスの定数を使用して指定します。省略した場合は、定数VbFirstJan1が指定されます[省略可] 【 例 】※当日が2008年6月9日の場合(Date関数は現在の年月日を取得します。) Format(Date, "yyyy年m月d日")・・・2008年6月9日 Format(Date, "ggge年m月d日(aaa)")・・・平成20年6月9日(日) Format(Date, "yyyymmdd") & "-data.xls"・・・20080609-data.xls ■Dir関数/ファイル・フォルダを検索する Dir(Pathname,Attribute) Pathname ・・・検索したいファイル/フォルダを指定します。ドライブ名、フォルダ名を含めて指定できます。ワイルドカードの使用も可能です。 Attribute ・・・定数、または値で属性を指定します。フォルダを検索する場合は、vbDirectory を指定。省略した場合は、vbNormal が指定されます[省略可] 引数「Attribute」に指定する定数
Dir関数は、引数Pathnameに指定したファイル、またはフォルダ名に一致するファイル、フォルダが見つかった場合、その名前を返す関数になります。一致する名前が見つからない時は、長さ0の文字列 "" を返します。 また、一致するファイル、フォルダが複数ある時は、引数を指定せずに再びDir関数を記述して、2つ目以降のファイル、フォルダ名を取得する事ができます。 上の、Sub mysave() を例にします。(現在が2008年6月9日とします。) 8、のステートメントで、C:\Saveフォルダ に、20080609-data.xls という名で現在開いているブック(C:\Uriage\data.xls)のコピーファイルが作成されます。 そして、9 の myfile = Dir("C:\Save\*-data.xls") のステートメントで、変数myfileに最初に一致した、 20080526-data.xls のファイル名が格納されます。※下図参照 次の、delfile = myfile で、その値をdelfileに渡します。(削除対象) 次に、変数 i を初期化して、Do While myfile <> "" で、Dir関数が長さ0の文字列以外を返している間は、変数 i に1を足す事を繰り返します。 下図の場合ですと、 i は11になります。(結果的に*-data.xlsというファイル数を取得します) ■Killステートメント/ファイルを削除する。 Kill Pathname Pathname ・・・削除したいファイル名を示す文字列式を指定します。ドライブ名、フォルダ名を含めて指定できます。ファイル名だけ指定した場合は、カレントフォルダが対象フォルダになります。ファイル名には「*」任意の文字列 「?」任意の1文字、のワイルドカードを使用できます。 例えば、上の図のファイルを全て削除する場合、 Kill "C:¥Save\*.xls" ← 全てのxlsファイルの削除 Kill "C:¥Save\*-data.xls" ← 頭に任意の文字列-data.xlsファイルの削除 Kill "C:¥Save\????????-data.xls" ← 頭に任意の8文字-data.xlsファイルの削除 2008年5月分を削除する場合 Kill "C:\Save\200805*-data.xls" または Kill "C:\Save¥200805??-data.xls" になります。 16〜18、のステートメントは、12〜15で取得した変数 i の値が11だったら、delfile(この場合、20080526-data.xls)を削除する構文になります。※保存用に直近の10日分のファイルを保存する為、それより古い分を削除します。 5日分のバックアップなら、16〜18のステートメントを下記に変更すればOKです。 If i = 6 Then Kill "C:\Save\" & delfile End If ■Saveメソッド/ブックを上書き保存する。 オブジェクト.Save ブックを上書き保存するときはSaveメソッドを使用します。一度保存してあるブックの場合は、そのまま上書き保存されます。新規の場合はカレントフォルダ(一般的にはマイドキュメント)に「Book1.xls」のように保存されます。
|