VBA 日付型を8桁数値へ変換

このQ&Aのポイント
  • VBAの中で、Date型の日付を8桁数値へ変換したいです。具体的には、0埋めを含めたフォーマット「yyyymmdd」に変換したいです。
  • 現在、日付を8桁数値へ変換する方法が分からず困っています。日付は月や日が一桁の場合も考慮して変換する必要があります。
  • また、8桁数値への変換は、日付型の変数をバッチファイルに渡す際に使用する予定です。
回答を見る
  • ベストアンサー

VBA 日付型を8桁数値へ変換

VBAの中で、Date型の日付をバッチファイルに渡す時に、8桁数値へ変換したいのですが、0埋めのやり方が分からずに困っております。 Date型 yyyy/mm/dd 8桁数値 yyyymmdd Private Sub cmdBSubmit_Click() Dim rc As Integer Dim sDate As Date Dim eDate As Date '開始日・終了日処理 sDate = DateAdd("d", -5, txtsDate) eDate = DateAdd("d", 5, txteDate) Debug.Print "----------------------" Debug.Print "開始日-5:" & sDate Debug.Print "終了日+5:" & eDate 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) Debug.Print "----------------------" Debug.Print "開始日:" & sDateP Debug.Print "終了日:" & eDateP rc = MsgBox("開始日 : " & sDate & vbCrLf & _ "終了日 : " & eDate & vbCrLf & _ "抽出を開始します宜しいですか?", vbYesNo + vbQuestion, "確認") If rc = vbYes Then '集計バッチを実行 'MsgBox "実行" Call 抽出 Else '中止 MsgBox "中止" End If End Sub 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) この書き方だと、月・日が一桁の場合、例えば「2013/01/01」だと、”201311”になってしまいます。 これを、"20130101"にしたいのですが、どう書けば宜しいでしょか? 最初から、8桁日付で入力すればよいのでしょうか、入力した日付の前後5日を自動的に増やす必要がある為に上記の仕様にしてます。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

sDateP = Format(sDate, "YYYYMMDD") eDateP = Format(eDate, "YYYYMMDD")

sujinosuke00
質問者

お礼

mt2008様 ありがとうございます、希望通りの結果でした。 Format関数使えば良いのですね、勉強になりました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

dim sDateP as long dim eDateP as long sdatep = format(sdate, "yyyymmdd") edatep = format(edate, "yyyymmdd") とかで。

sujinosuke00
質問者

お礼

keithin様 希望とおりになりました、ありがとうございました。

関連するQ&A

  • ACCESS97のモジュールで 日付の計算をしたい

    以前の例題を検索したのですが 改めて質問します。 ACCESS97のモジュールで 日付の計算をしたいのです。 例えば ある日付を入力すれば、その2週間後の日付を取得したいのです。  テキストボックス "日付"で入力するとします Dim Sdate As Date  Dim Edate As Date Sdate = Format(Me.日付, "yy/mm/dd") Edate = Format(Sdate+14, "yy/mm/dd") ← ではエラーになります。 Q どうすればいいのでしょうか?

  • Excel VBAで「date」関数を使いたい

    VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?

  • vba 「02」を返したいのですが

    Sub test() Debug.Print Month(Date) End Sub のようなコードの時に 月の表記を02のように2桁で返すにはどうすればいいですか? Debug.Print Format(Month(Date), "mm") これだと、なぜか「01」が返ります。 「02」を返したいのですが、どうすればいいでしょうか?

  • ホームページ上の複数のCSVファイルを、エクセルに自動取り込みする方法

    ホームページ上のCSVファイルをダウンロードし、そのデータをエクセルに貼り付けるマクロで、1回のマクロ起動で、複数のダウンロードファイルを同ブック内で別々のシートに貼り付けていくにはどのようにすればよいのでしょうか? 以下のマクロを教えて頂き、個々のデータを取る事は分かったのですが、新たに、複数の銘柄を一回のマクロで処理する方法を考えております。 以下のマクロであれば、IBMの株価をダウンロードして終了となるところを、DELLの株価、AAPLの株価と一回のマクロで同ブック内で別のシートにデータを貼り付けをしていきたいと思っています。 Sub sample1() Dim url As String Dim sDate As String Dim eDate As String Dim Symbol As String Dim i As Integer sDate = "1000/1/1" '開始日 eDate = "2010/12/31" '終了日 Symbol = "IBM" '銘柄 url = "​http://ichart.finance.yahoo.com/table.csv?g=d&ignore=.csv"​ url = url & "&s=" & Symbol url = url & "&a=" & Month(sDate) - 1 & "&b=" & Day(sDate) & "&c=" & Year(sDate) url = url & "&d=" & Month(eDate) - 1 & "&e=" & Day(eDate) & "&f=" & Year(eDate) 'データ読み込み With ActiveSheet .Cells.Delete For i = 1 To .QueryTables.Count .QueryTables(1).Delete Next With .QueryTables.Add(Connection:="TEXT;" & url, Destination:=.Range("A1")) .TextFileCommaDelimiter = True .Refresh End With End With End Sub

  • 日付のオートフィル

    Sheet1(開始設定)B4=平成21年8月1日 Sheet2A1=DATE(YEAR(開始設定!$B$4),MONTH(開始設定!$B$4),DAY(開始設定!$B$4))→平成21年8月と表示させている。 Seet2B1=DATE(YEAR(開始設定!$B$4),MONTH(開始設定!$B$4)+1,DAY(開始設定!$B$4))→平成21年8月 以下Z1まで平成○年×月と表示させたい。 が、オートフィルが使えないのでMONTH(開始設定!$B$4)+1の+○をセルごとに 変えなければならない。 どうにかオートフィルを使える方法はありませんか? =EDATE(開始設定!$B$4,0)でも試しましたがオートフィルできませんでした。

  • Access クエリのデータ型について

    AccessでPablic変数を日付範囲指定、クエリの抽出条件に指定したのですが、「抽出条件でデータ型が一致しません。」とのエラーメッセージで抽出出来ません。 【処理フロー】 1.フォームで、開始日と終了日をPublic変数へ格納 2.データ抽出クエリの日付条件に"GetData()"Public Functin VBAで変数を格納した値をクエリの抽出条件に返す。 《変数》 '開始日の宣言 Public sDate As Date '終了日の宣言 Public eDate As Date 《GetData()》 Public Function GetDate() MsgBox "開始日は、" & sDate & vbCrLf & "終了日は、" & eDate GetDate = ">=#" & sDate & "# And <=#" & eDate & "#" MsgBox ("Where文は、" & GetDate) End Function デバッグの為、"GetDate()"の戻り値を、メッセージボックスで表示してますが、戻り値は正常とおもわれますが、「抽出条件でデータ型が一致しません。」でクエリが実行できません。 ここを参考に、上記仕様にしました。 http://www.tsware.jp/tips/tips_369.htm どうすれば、日付範囲をPablic変数から指定出来るか、お教え頂けましたら幸いです。 ちなみに、Pablic変数にしているのは、他のクエリでもこの日付範囲を使いたい為です。 もし、ほかに良い処理方法が有れば、ご教授ください。

  • SQL文の書き方

    イベント情報をキーワード検索できるページを制作しており、下記テーブルからデータを取得したいのですが、日付関係の条件指定の方法が分かりません。 下記のような条件で取得したい場合どのようにすればよいでしょうか?(キーワード検索の部分はわかります) テーブル event  date_s:開始日(Ymd形式の8桁 もしくは md形式の4桁)  date_s_year:開始日の年(Y形式の4桁 もしくは NULL値)  date_s_month:開始日の月(m形式の2桁)  date_s_day:開始日の日(d形式の2桁)  date_e:終了日(Ymd形式の8桁 もしくは md形式の4桁 もしくは NULL値)  date_e_year:終了日の年(Y形式の4桁 もしくは NULL値)  date_e_month:終了日の月(m形式の2桁 もしくは NULL値)  date_e_day:終了日の日(d形式の2桁 もしくは NULL値)  ※複数日に渡って行われるイベントには終了日が入っていて、単日のイベントの終了日はNULL値です。  ※その年だけに行われる単発のイベントには年と月と日がすべて入っています。毎年決まった日に行われるイベントには月と日のみが入っており、年はNULL値です。 ・検索対象は今日から1年先までのデータ ・開催中(開始日が本日以前で終了日が本日以降)のイベント → 開始日が今日に近いイベントという順番で並べたい。 MySQL:5.1.22-rc PHP:5.2.5 説明が分かりにくいかもしれませんが、アドバイスをいただければ幸いです。

    • ベストアンサー
    • MySQL
  • 日付書式のString型からData型への変換

    引数での日付データを加工して、変換させたいのですがエラー("String型からData型への変換は無効です。")がでます。 対処方法をアドバイスいただけないでしょうか? コードを下記に示します。 VS 2010を使用しています。 Dim From As Long Dim Year As Integer Dim Month As Integer Dim Day As Integer From = CLng(Format(DateAdd("d", 1, DateAdd("m", -1, CDate(CStr(Year) & "/" & CStr(Month) & "/" & CStr(Day)))), "yyyyMMdd"))

  • エクセル VBAの日付計算?について

    現在sheet1にある表をsheet2に転記してゆくVBAを作成しております。sheet1にある日付データセルA1(日のみ)が入っているセルと月初を求めるVBA(DateSerial(Year(Date), Month(Date), 1))を加算して西暦/月/日にしたいのです。 例えば、DateSerial(Year(Date), Month(Date), 1)の答は、2005/05/01になってきます。そこに日付データセルA1が20だとすれば、表示は、2005/05/20となると思います。それをsheet2 セルA1に表示させたいのです。 よろしくお願いします。

  • 日付の比較について

    最近PHPの勉強を始めた初心者です。 はじめて質問させていただきます。 2005-1-1から2020-12-31の間で入力した日付の曜日を表示するプログラムを作成しています。 2005-1-1から2020-12-31の間以外ならエラー表示するようにしたいのですが、 入力した日付との比較がうまくいかず、思うように動きません。 どのように直せばいいのかを教えていただけないでしょうか?よろしくお願いします。 <?php $year=$_POST["year"]; $month=$_POST["month"]; $day=$_POST["day"]; $date_str="$year-$month-$day"; $date_time=strtotime($date_str); $firstdate_str="2005-1-1"; $firstdate_time=strtotime($firstdate_str); $lastdate_str="2020-12-31"; $lastdate_time=strtotime($lastdate_str); if ($date_time < $firstdate_time || $date_time> $lastdate_time)  {  echo "Please enter a date between 1/1/2005 and 12/31/2020.";  } else  {  $finddate=date('l', mktime(0,0,0,$month, $day, $year));  echo "The day entered in on $finddate";  } ?>

    • 締切済み
    • PHP

専門家に質問してみよう