エクセル(2003?)でマクロを使ってファイルを保存するボタンをつくろうと思います。

このQ&Aのポイント
  • エクセル(2003?)でマクロを使ってファイルを保存するボタンをつくろうと思います。保存するところまではできるのですが、今日の月-日-時-分を自動的にファイル名に入れる方法がわかりません。
  • エクセル(2003?)でマクロを使ってファイルを保存するボタンをつくりたいですが、ファイル名に今日の月-日-時-分を自動的に入れる方法がわかりません。
  • エクセル(2003?)でマクロを使ってファイルを保存するボタンをつくりたいのですが、今日の月-日-時-分を自動的にファイル名に入れる方法がわかりません。ご教授ください。
回答を見る
  • ベストアンサー

ファイル名を今日の日付、時刻で保存する

マクロについて教えてください エクセル(2003?)でマクロを使って ファイルを保存するボタンをつくろうと思います。 「ファイル名を今の月-日-時-分で保存する」 という内容を書きたいと思います。 保存するところまではできるのですが、 今日の月-日-時-分を自動的にファイル名に入れる ところをどうしたらよいかわかりません。 Filename = Format(Date, "yyyy-mm-dd") と入れれば日付が入るのはわかったのですが、 時刻も入れたいです Filename = Format(Date,"yyyy-mm-dd",Time,"hh-mm-ss") こんな風に書いてみたのですが、うまく機能しませんでした ご存知の方、ご教授ください。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

Filename = Format(Now(), "yyyy-mm-dd-hh-mm-ss") でOK。

関連するQ&A

  • 一番古い更新日付をチェックする

    OS:RedHatLinuxES3.0 下記についてご存知お方がいらっしゃいましたら教えてください。 [file.log]と言うファイルがあります。 このファイルは、5MBになると、5MBに達した時の、年月日時分秒を付けたファイル名[file-YYYY_MM_DD-hh_mm_ss.log]になります。 また、このファイルは5世代管理とするので、[file.log]が一つ、残り4つは[file-YYYY_MM_DD-hh_mm_ss.log]となります。 そこで、質問ですが、この5つのファイルの中で一番古い更新日付を持つファイルのみを他のディレクトリにコピーしようと思っています。 つまり、[file-YYYY_MM_DD-hh_mm_ss.log]ファイル名の一番古い日付を持つファイルを選択したいのですが、いい方法がありましたら教えて下さい。

  • 「EXCEL」VBAで日付を変換

    ファイルを保存する際に現在時刻を元にファイル名を作成しそれで保存する、というものを作っています。 ですが、 yyyy/mm/dd hh:mm:ss ↓ yyyymmddhhmmss というような変換がウマくいかずに困っています。 どなたか、ご教授頂きたいです。

  • ファイル名に日付・時刻を付与したい

    Cプログラミングの経験はあるのですがperlのソースを初めて 改造することになりました。 変数「$i」にはシェルのファイル名が入ります。 #FS000.csh このファイル名に日付・時刻を付与して、 FS000mm(月)dd(日)hh(時)mm(分)ss(秒).csh というファイル名にしたいのですが、どうしたらいいのでしょうか?? C言語だったら、配列を宣言して、その配列にファイル名を格納、という 書き方をしようかと思うのですが、 perlでの書き方がさっぱりわかりません・・・。 変数(C言語では配列)を定義したりしなくてもいいのでしょうか? わかりにくい質問ですみませんがどうか宜しくお願いします!

    • ベストアンサー
    • Perl
  • 日付や時刻の"01"を" 1"に変換したいです。

    下記のような問題で悩んでいます。何かよいアイディアがありましたら教えて下さい。 【要件】 ・SimpleDateFormatで指定された書式の文字列にした後、年月日時分秒ミリ秒の"01"~"09"を" 1"~" 9"のように前0を半角スペースに一括変換したい(年は書式がyy形式の場合のみ)。 ・SimpleDateFormatへの書式はエラーが起きない限りどんなものでも受け入れる(通常、書くわけがない書式についても)。 例) "yyyy/MM/dd HH:mm:ss:SSS" "'yyyy/MM/dd HH:mm:ss:SSS形式:'yyyy/MM/dd HH:mm:ss:SSS"  ※''の中にあるMMはテキストなので英字のまま。 "yyyy/MMMMMMMMMMMMMMMMMMMM/dd HH:mm:ss:SSS"  ※Mの数は不明 "yyyy/MM/dd MM MM HH:mm:ss:SSS"  ※月の表示指定が複数 引数 :日付(yyyyMMddHHmmssSSS形式), SimpleDateFormatへの書式 戻り値:SimpleDateFormatで変換後に"01"~"09"を" 1"~" 9"にした文字列 自分なりの検討案としては下記になります。 a.引数の書式をそのままSimpleDateFormatに引き渡ずに、一部修正してから呼び出す。 例)"yyyy/MM/dd HH:mm:ss:SSS"→yyyy/_M/_d _H:_m:_s:__S" ※"_"は半角スペースです。 実際はMやdなどが2桁になる場合は変換しません。 かなりごりごり200行ぐらい試しに書いたのですが、対応できないケースが出てきてその都度エンドレス状態です。 ちょっとこのまま実装するわけにいきません。いつバグがでるか・・・。 b.SimpleDateFormatで変換後に年月日時分秒ミリ秒に該当する箇所に"01"~"09"があったら置換する。  引数の書式からMMやddのindexを保持して、SimpleDateFormatで変換後の該当indexに置換。 例) 書式:"yyyy/MM/dd_HH:mm:ss:SSS" 日付:"20090101010101001" "2009/01/01_01:01:01:001"→"2009/_1/_1__1:_1:_1:__1" ※"_"は半角スペースです。 但し前提として、書式とSimpleDateFormatで変換後の文字列が1対1になっている必要があります。 単純な例ですと 書式:"yyyy/MMMM/dd HH:mm:ss:SSS" 書式のddは11~12桁目ですが、SimpleDateFormatで変換後は下記のようにインデックスがずれます。 "2009/1月/01 01:01:01:001" "2009/12月/01 01:01:01:001" もしかしたら下記のような感じで吸収できるのかもしれませんが、ちょっと個人的に出来そうに思えませんでした。 月が1桁 かつ 書式が"M"の場合 月が1桁 かつ 書式が"MM"の場合 月が1桁 かつ 書式が"MMM"の場合 月が1桁 かつ 書式が"MMMM"の場合 月が1桁 かつ 書式が"Mxn"の場合 月が2桁 かつ 書式が"M"の場合 月が2桁 かつ 書式が"MM"の場合 月が2桁 かつ 書式が"MMM"の場合 月が2桁 かつ 書式が"MMMM"の場合 月が2桁 かつ 書式が"Mxn"の場合 ここ1,2週間ほど煮詰まっています。どなたかアドバイス頂けると助かります。 自分的なネックは書式が限りなくフリー形式なところです。

    • ベストアンサー
    • Java
  • バッチファイル 時間変数 短縮化

    バッチファイル 時間変数 短縮化 お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- set BAT_FILE=TIME.bat set LOG_DIR=D:\test set LOG_FILE=LOG.txt set LOG_FILENAME=%LOG_DIR%\%LOG_FILE% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理A(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理B(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% コード-------------------------------------------------------------------------------- 上記プログラム内の処理A及び、処理Bは比較的長い処理である為、その前後の処理時間帯を上記のように時間変数で取ってログに出力されています。 しかし、上記のように最新の処理時間帯をわざわざ何行もある各時間変数を宣言して取得するのはプログラム的に長くなってしまい、かつ醜いです。 上記方法以外に時間変数のスッキリとした取得方法は無いのでしょうか? ご存知の方がいれば、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • 【PL/SQL】DATE型の時刻の表示と非表示

    PL/SQLでのDATE型の取扱いについて教えてください。 初期化パラメータNLS_DATE_FORMATが'YY-MM-DD'で、 ある列を'YYYY/MM/DD HH24:MI:SS'形式でDBにINSERTしたい場合、 dtWorkEndDate := to_date(charWorkEndDate, 'YYYY/MM/DD HH24:MI:SS'); としてINSERTにdtWorkEndDateを用いると、 YY-MM-DD形式でDBに登録されてしまいます。 (dtWorkEndDateはDATE型。) ORACLEの設定かPL/SQLの問題なのかわからないのですが、 なにかアドバイスを頂けないでしょうか。 よろしくお願いします。

  • ファイル名が日付のファイルの存在を確認する方法

    OK Waveにお世話になっております。 VB6でソフト製作している初心者ですが、ファイル名が日付の場合に、 そのファイルの存在を確認する方法がわかりません。 対象物に設定完了後にログ作成で、ファイル名を日付でTxtファイルを作成して2行書き込むのですが、再度違う対象物に設定完了時は同じファイル名が存在するなら(同じ日付なら)1行だけ書き込みたいのです。 (1日に10回くらい設定する予定ですので、全て一つのファイルにログを残したい。。。) <やりたいこと> 1.設定完了 ↓ 2.ログ作成作業開始 ↓ 3."C:\Log\"がなければフォルダを作成する ↓ 4.同じファイル名がなければ2行書き込んで保存 ↓ 5.同じファイル名があれば1行だけ書き込んで保存 ↓ 6.以後繰り返し。 4~5がどうしても出来ません。 ファイル名が日付で流動的なので、存在の確認の方法がわかりません。 下記に現在の4~5のコードを書きます。 毎回毎回2行書き込んでしまいます・・・。 ----------------------------------------------------------------------------------- Dim fileNo As Integer Dim FileName As String Dim IDNumber As String If Dir("C:\Log\", vbDirectory) = "" Then 'C:\Logフォルダがあるか確認 MkDir ("C:\Log\") 'なければフォルダ作成する End If 'ファイル番号の取得 fileNo = FreeFile 'ファイルを追加モードで開く (ファイル名の生成) Open "C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt" For Append As #fileNo 'txtファイルへ書き込む Print #fileNo, "設定日時,対象番号,設定値" Print #fileNo, Format(Now, "hh:mm:ss") + "," + Format(IDNumber) + "," + Format(check, "000000") Close #fileNo 'ファイルを閉じる ----------------------------------------------------------------------------------- ちなみに下記のようにやってみましたがDate.txtの存在を認識してくれません。。。 If Dir(Date.txt) = "" Then Print #fileNo, "設定日時,対象番号,設定値" Print #fileNo, Format(Now, "hh:mm:ss") + "," + Format(IDNumber) + "," + Format(check, "000000") Close #fileNo Else Print #fileNo, Format(Now, "hh:mm:ss") + "," + Format(IDNumber) + "," + Format(check, "000000") Close #fileNo End If あとここだけなんです。 6/13(月)納期なので、どなたかわかる方、助けてください! よろしくお願いいたします!

  • バッチファイル 2つのログに出力 短縮版

    お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- rem === 変数設定 =============================================================== rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% rem --- フォルダ変数 --- set LOG_DIR1=D:\test rem --- ファイル変数 --- set LOG_FILE1=LOG.txt set LOG_FILE2=LOG_ALL.txt set LOG_FILENAME1=%LOG_DIR1%\%LOG_FILE1% set LOG_FILENAME2=%LOG_DIR1%\%LOG_FILE2% set BAT_FILE1=test.bat rem コマンド拡張機能有効化 setlocal ENABLEEXTENSIONS rem === 変数設定 =============================================================== REM <開始処理>=============== call :TIME echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% rem 現在の日付/時間を取得 :TIME set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% exit /b コード-------------------------------------------------------------------------------- 上記プログラムは日付を2つのログに出力していますが、 echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% と二重になっている無駄なコードとなり、見栄えが良くないです。 これを1つのコードで2つのログファイルに出力可能な短縮プログラムは可能でしょうか? ご存知の方がいましたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • javaで時刻の判定

    String型のtimeに YYYY-MM-DD HH:MM:SS の形式である時刻が入っているとします. この時刻がYYYY年MM月DD日の20時00分00秒~23時59分59秒内であるかどうかを判定するにはどうしたらよいでしょうか? 文字列のままでは大小比較は困難な気がしますし、GregorianCalendar型もみてみたのですが、いまいち大小比較の仕方がわかりませんでした。 よろしくおねがいします

  • MS-DOSでの日付表示

    MS-DOSコマンドで、日付や時刻の%date% %time%ですと、 yyyy/mm/dd hh:mm:ssの表示になります。 バッチファイルを作成して、フォルダ名の頭に日付時刻をつけたいんですが、 yyyymmdd hhmmss の表示形式にする方法が分かりません。 よろしかったら教えて頂けませんでしょうか。

専門家に質問してみよう