• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付時刻編集して保存する方法教えてください。)

日付時刻の編集・保存方法とCSVファイルのマクロ編集について

このQ&Aのポイント
  • 日付時刻の編集・保存方法を教えてください。本記事では、日付時刻を編集するための具体的な方法を解説します。
  • また、ExcelでのCSVファイルの編集についても触れます。初心者でも理解しやすいよう、具体的なマクロ記述例を使用して解説します。
  • 編集する内容は、日付時刻の数字のみの書き出しや、列の結合・削除、数値の変換などです。ぜひ、記事を参考にしてください。

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

  • ベストアンサー
  • ihyou_P
  • ベストアンサー率35% (50/141)
回答No.9

#4、#7です。 保存するときに、「この場所に・・・という名前のファイルが既にあります。置き換えますか?」 → はい/いいえ/キャンセル というメッセージダイアログが出ても良いなら、↓の1行でよいです。 ActiveWorkbook.SaveAs Filename:="c:\DATA.xls" メッセージを出したくないのなら、↓にしてください。 Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="c:\DATA.xls" Application.DisplayAlerts = True ちなみに、Cドライブに「DATA.xls」というファイル名で保存されます。 ま、これを機会にVBAをボチボチ覚えていくと楽しいですよ。 (探せば色んなHPに解説がありますよ)

clarice44
質問者

お礼

ありがとうございます。 Cドライブに保存出来ましたがxlsでマクロの入ったものになっています。 できればCSVで保存したいのですがよろしくお願いします。 そしてもうひとつこのデータを昇順に並び変えれるならお願いします。 あつかましくてすみません。 明日にでも図書館に行ってVBAの入門書借りてこようと思います。 マクロが動いた時はもう感動して身体全体がしびれました。w(゜o゜)w

すると、全ての回答が全文表示されます。

その他の回答 (8)

noname#204879
noname#204879
回答No.8

[No.5この回答への補足]へのコメント、 》 F1は241630にはならないでしょうか? 失礼しました。提示した式の意味を理解す(るように精進ください)れば、チト簡単になります。 F1: =TEXT(SUBSTITUTE(A1,".","/"),"dd")&TEXT(B1,"hhmm") 》 …マクロでA~Cに書き込みする方法で… 貴方のレベルでは時期尚早かと。ちなみに、私もマクロ音痴です。

clarice44
質問者

お礼

mm消すだけ・・・・・ なるほどですね。ありがとうございました。 これを機に精進いたします。σ(^_^;)アセアセ

すると、全ての回答が全文表示されます。
  • ihyou_P
  • ベストアンサー率35% (50/141)
回答No.7

#4です。 もともと「16:60」のデータが興味深かったので回答したのですが、せっかくなので最後まで面倒見ましょう。 以下、エクセル2000と2003で動作確認済みです。 元になるファイルはCドライブ直下に「TEST.CSV」というファイル名で保存されているとします。 下記マクロを入れたエクセルファイルを作って、実行してください。 Sub テスト2() Sheet1.Select Range("A1").Select With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\TEST.csv", Destination:= _ Range("A1")) .TextFileCommaDelimiter = True .TextFileColumnDataTypes = Array(5, 1, 1, 1) .Refresh BackgroundQuery:=False End With cnt = Application.WorksheetFunction.Count(Range("A:A")) Sheet2.Select Range("A1").Formula = "=(day(Sheet1!A1)*10000)+(HOUR(Sheet1!B1)*100)+minute(Sheet1!B1)" Range("B1").Formula = "=Sheet1!C1*10" Range("C1").Formula = "=Sheet1!D1*10" Range("A1:C1").Select Selection.Copy For X = 2 To cnt Cells(X, 1).Select ActiveSheet.Paste Next Cells.Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select End Sub

clarice44
質問者

お礼

素晴らしいです! バッチリ思っているようにできました。感謝感激です。 もしお時間許されるなら あつかましいですが編集したものを別名で保存(上書きしてゆきます)するにはどのように書けばよいかご指導ください。m(__)m

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.1です! たびたびごめんなさい。 前回のコードではA列がシリアル値で表示形式がお示しの場合のみ可能でした! A列は文字列扱いになっていると思いますので、もう一度コードを載せてみます。 (B列の時刻はシリアル値としています) Sub test() Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row With Cells(i, 1) .Value = DateValue(WorksheetFunction.Substitute(Cells(i, 1), ".", "/")) + Cells(i, 2) .NumberFormatLocal = "ddhhmm" End With Cells(i, 3) = Cells(i, 3) * 10 Cells(i, 4) = Cells(i, 4) * 10 Next i Columns(2).Delete End Sub こんなんではどうでしょうか? 何度も失礼しました。m(__)m

clarice44
質問者

お礼

うまく読み込むことが出来ました。 エラーは文字扱いになっていたためなんですね。 お世話になり本当にありがとうございました。

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.5

添付図参照 F1: =TEXT(SUBSTITUTE(A1,".","/"),"mmdd")&TEXT(B1,"hhmm") G1: =C1*10 H1: =D1*10

clarice44
質問者

補足

仕事で遅くなりお返事が遅くなりました。 簡単に編集できました。F1は241630にはならないでしょうか? そして出来ましたら別ファイルにマクロでA~Cに書き込みする方法がございましたらご教授くださいませ。

すると、全ての回答が全文表示されます。
  • ihyou_P
  • ベストアンサー率35% (50/141)
回答No.4

2行目の時間の 16:60 というのが良く分かりませんが…。 このデータが実際にある物として、エクセルで下のマクロを実行すれば、そのままの形で取り込むことができます。 (ファイルはCドライブ直下にTEST.csvというファイル名で置いてあるとします) Sub Macro1() With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\TEST.csv", Destination:=Range("A1")) .Name = "TEST" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub ここまですれば、あとは普通に関数で加工されてはどうでしょう?

clarice44
質問者

補足

仕事で遅くなりお返事が遅くなりました。 すみません。16時30分の間違いでした。 早速にテストさせて頂きましたが.TextFileTrailingMinusNumbers = Trueで実行時エラー438オブジェクトはこのプロパティをサポートしてませんと出ます。 私のやり方がまずいのでしょう。σ(^_^;) 私はおバカなので出来ましたらすべて一つのマクロで実行保存できる記述ご教授頂けましたらありがたいです。 (別ファイルに保存の形でも結構です。)よろしくお願いします。

すると、全ての回答が全文表示されます。
  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

答えではありません この課題はどなたかから提示されたものですか? エクセルでの日付及び時間の取扱いを少し説明します。 日付も時間も同じシリアル値(時間列)という連続した正の実数として取り扱われています。 即ち1900年1月1日(明治33年1月1日)午前0時を0とした正の実数で、これ以前の日付は 対象としていません。 年、月、日、時、分、秒これらすべて同じ数列の中で取り扱われます。 数値か時間列かは表示形式で処理します(西暦表示、和暦表示どちらにも対応) 10進法はご存知ですね、時間列についても繰り上げ、繰り下げ表示がなされます。 1日が1で 1/24日=1時間、1/60時間=1分 、I/60分=1秒 日から月、年へも大の月、小の月、うるう年も織り込んで繰り上がります。 詳しくは参考URLをご覧ください。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/today.htm#hiduke-keisan
clarice44
質問者

補足

仕事で遅くなりお返事が遅くなりました。 参考URL感謝いたします。これからゆっくりと勉強させていただきます。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • juny_jy
  • ベストアンサー率62% (75/120)
回答No.2

どのアプリケーションのマクロを使用したいのですか。 使用するアプリケーションによって、正規表現の 仕様やマクロの記述方法は変わるので、 Excel なのか、特定のテキストエディタなのかを 明確にして質問すべきです。 たとえば、秀丸エディタ (シェアウェア) であれば、 正規表現で置換すれば可能であり、その操作を 記録して保存すれば、マクロファイルも簡単に 作成できます。 B 列 2 行目の「16:60」という時間表現が ありえるのか疑問であり、10 倍したい数値が すべて小数第一位までの値なのかも疑問ですが、 一応そのように仮定した場合、以下のような 正規表現による文字列置換でお望みの編集は 可能です。 置換前文字列 ([^\.]+)\.([^\.]+)\.([^,]+),([^:]+):([^,]+),([^\.]+)\.([^,]+),([^\.]+)\.([0-9]) 置換後文字列 \3\4\5,\6\7,\8\9 上記置換を行う秀丸マクロ =====ここから=====     setcompatiblemode 15;     begingroupundo;     replaceall "([^\\.]+)\\.([^\\.]+)\\.([^,]+),([^:]+):([^,]+),([^\\.]+)\\.([^,]+),([^\\.]+)\\.([0-9])" , "\\3\\4\\5,\\6\\7,\\8\\9" , regular, nocasesense;     if( ! result ) beep;     endgroupundo 1;     saverecord; =====ここまで===== 注意: マクロファイルの各行はタブ文字で始まっていますが、 このサイトで行頭のタブ文字は詰められてしまうので、 2 バイト空白 4 文字で代用してあります。

clarice44
質問者

補足

仕事で遅くなりお返事が遅くなりました。 申し訳ありません。おっしゃるとおりです。 質問の仕方が常識が無くてすみませんでした。 おバカな私はテキストエディタでマクロが使えること自体知りませんでした。 お時間とらせまして・・・ありがとうございました。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 関数でやった方が簡単だと思いますが・・・ 一例です ↓の画像でF2セルに =IF(A2="","",TEXT(A2+B2,"ddhhmm")*1) G2セルに =IF(C2="","",C2*10) として隣のH2セルまでコピー 最後にF2~H2セルを範囲指定し、H2セルにフィルハンドルで下へコピーすると 画像のような感じになります。 尚、どうしてもVBAでの方法をご希望であれば簡単ですがコードを載せておきますので、 操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペースト! Alt+F8キーを押し → マクロ実行 を行ってみてください。 尚、一旦マクロを実行すると元に戻せませんので別Sheetにコピー&ペーストしてマクロを試してください。 データは2行目以降にあるとします。 Sub test() 'この行から Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row With Cells(i, 1) .Value = Cells(i, 1) + Cells(i, 2) .NumberFormatLocal = "ddhhmm" End With Cells(i, 3) = Cells(i, 3) * 10 Cells(i, 4) = Cells(i, 4) * 10 Next i Columns(2).Delete End Sub 'この行まで 参考になれば良いのですが・・・m(__)m

clarice44
質問者

補足

仕事で遅くなりお返事が遅くなりました。 早速に試させていただきましたが(実行時エラー13 型が一致しません)というメッセージが出ます。 私のやり方がまずいのか?それともエクセル2000なのでだめなのかしら。 参考にさせて頂きいろいろ試してみますね。本当にありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A