VBからCSVにデータを落とす際の日付の変化

このQ&Aのポイント
  • VBからCSVにデータを落とす際、日付が変換されてしまう問題があります。
  • 具体的には、日付が#2003-11-06#のように変換されてしまい、2003/11/06のままに落とす方法を知りたいです。
  • 要望としては、日付が変換されずにCSVにデータを落とす方法を教えていただきたいです。
回答を見る
  • ベストアンサー

VBからCSVにデータを落とすときに、日付の変化

前後略 FileName = "C:\My Documents\完成粉末付替明細.csv" Open FileName For Output As #1 Write #1, "事業所名", "日付", "発送量" RSOUT.MoveFirst While Not RSOUT.EOF Write #1, RSOUT!事業所名,RSOUT!日付,RSOUT!発送量 RSOUT.MoveNext Wend Close #1 MsgBox "出力完了しました。", vbOKOnly,Title:="知らせ" Exit Sub  日付のことを聞きたいですが、  CSVにデータを落とすと日付が#2003-11-06#になるですが、2003/11/06のまま、落とす方法があるでしょうか?  よろしくお願いいたします。

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

  • ベストアンサー
  • 7_7_7
  • ベストアンサー率24% (115/469)
回答No.1

日付の変数をフォーマット文にて固定してあげればそのまま落ちたと思います。

Sikabu
質問者

お礼

こんな簡単に落とせると思わなかった、ありがとうございます。大変勉強になりました。

関連するQ&A

  • ASPでCSV出力をするときにエラーが...

    ASPを使ってデーターベースにあるデーターをCSVファイルとして出力するスクリプトを組んでいます。 単純に Response.ContentType = "text/csv" Response.AddHeader "Content-Disposition","filename=" & "Data.csv" Response.Write "Date,Name,Code" & vbNewLine Do  Date=rsDataOutput("Date")  Name=rsDataOutput("Name")  Code=rsDataOutput("Code")  Response.Write Date & "," & Name & "," & Code & vbNewLine  rsDataOutput.MoveNext  If rsDataOutput.EOF Then   Exit Do  End If Loop といった形で出力しているのですが、出力されるファイルサイズが4Mを越えると、「HTTP500内部サーバーエラー」と表示されて出力できません。 ASPでCSVファイルを出力するのに、ファイルのサイズの上限があるのでしょうか?

  • アクセス2013MoveNextでエラーになります

    Me.Recordset.MoveFirst i = 1 While (Not Me.Recordset.EOF) Me.フィールド = i i = i + 1 Me.Recordset.MoveNext Wend >Me.Recordset.MoveNext ここで、アクセス2010ではエラーになりませんが、アクセス2013でエラーになります。 > i = i + 1 この箇所にブレークポイントを入れて1回1回ストップ、再実行させるとエラーになりません。 なぜでしょう?対処法がありましたらご教授を。

  • VB テーブルのデータを出荷先ごとにcsv出力

    お世話になります。 VBは素人で、自分なりにネットでいろいろ調べて、下記の物を作ってみたのですが、 うまくいかず、とても悩んでおります。 知ってる方、どなたか教えて頂けませんか? よろしくお願いいたします。m(_ _)m ------------------------------------------------------------------ 目的: (1)テーブルのフィルド名を、各CSVの一行目に出力したい。 (2)テーブルのフィルドは30項目ぐらいあるため、下記のように個別出力ではなく、   一括で出力できるようにしたいです。 (3)すべての項目には、” ”で囲み、カンマで区切りをしたいです。 ------------------------------------------------------------------ Option Compare Database Option Explicit Private objDB As DAO.Database Private objExcel As Object 'EXCELオブジェクト Private objWorkBook As Object 'WORKBOOKオブジェクト Private objSheet As Object 'SHEETオブジェクト Public Sub CSVsyuturyoku() Dim db As DAO.Database Dim rs1 As DAO.Recordset Dim rs2 As DAO.Recordset Dim flag As Boolean Set db = CurrentDb Set rs1 = db.OpenRecordset("SELECT DISTINCT 氏名 FROM 出荷データ") Do Until rs1.EOF Set rs2 = db.OpenRecordset("SELECT * FROM 出荷データ" _ & " WHERE Nz(氏名) = '" & rs1!氏名 & "'") flag = True Open CurrentProject.Path & "\ファイル" & rs1!氏名 & ".csv" _ For Output As #1 Do Until rs2.EOF 'Print #1, Nz(rs2!商品名) Print #1, rs2!商品コード & "," & rs2!商品名 & "," & rs2!単価 ' ↑フィルド項目数が多すぎたため、全部書ききらず。。。 rs2.MoveNext Loop Close #1 rs1.MoveNext Loop rs1.Close: Set rs1 = Nothing If flag Then rs2.Close: Set rs2 = Nothing db.Close: Set db = Nothing ' 終了の表示 MsgBox "ファイル出力が完了しました。" End Sub

  • アクセス sqlで自動加算したい

    アクセス2010です 現在 Me.Filter = グループ別 Me.FilterOn = True Me.OrderBy = 速い順 Me.OrderByOn = True jj = 1 Me.Recordset.MoveFirst While (Not Me.Recordset.EOF) Me.順番 = jj jj = jj + 1 DoCmd.RunCommand acCmdSaveRecord Me.Recordset.MoveNext Wend これをSQLで jj=0 UPDATE テーブル SET 順番 = Inc(jj) Where ~~ Order ~~~~ なんて書けないですか?

  • VBScriptの関数化

    私のしたいことは、 (1)リンクボタンを押すと、 (2)csvファイルを作成し、 (3)作成したcsvファイルのダウンロードを行う というものです。 そこで、以下のようなプログラムを作成したのですが、上手くいきません。 まず、リンクボタンは <% Response.Write "[<a href=" & FileName & " onclick='set()'>保存</a> ]" %> 次に、関数化したプログラムは、 <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> <!-- sub set() Dim i, fs,csv,flnm flnm=<% = Request.Form("FileName") %> Set fs = CreateObject("Scripting.FileSystemObject") Set csv = fs.CreateTextFile(flnm,True) '項目名を書き込む 'Serverからデータを取得 strSQL="select * from dtTbl " Set rs = db.DbCreateDynaset(strSQL,0) rs.MoveFirst 'データがなくなるまで繰り返す Do Until rs.EOF=True dtSQL="" For i=0 to 17 dtSQL = dtSQL & rs.fields.item(i).value & "," Next dtSQL=dtSQL & rs.fields.item(18).value 'ファイルに書き込む csv.WriteLine(dtSQL) '次の行を読み込む rs.MoveNext Loop 'ファイルを閉じる csv.Close end sub --> </SCRIPT> このプログラムは関数にしなければ正常に動作していました。 簡単なJavaScriptの関数を変わりにおいてみたところ、 そのプログラムは正常に動作したので、onclickは使えると思うのですが・・・ どこが間違っているのでしょうか? ちなみにこの他の部分も、VBScriptで作成しています。 今日中に仕上げなければならないので、困っています。 よろしくお願いします。

  • CSVファイルの読み込み

    お世話になります。 VBAでCSVファイルを読み込んで処理をしたいのですが、 たとえば下記のようなCSVファイルの場合 2つめの項目が金額セットされており、あらかじめ通貨編集(カンマ編集) がされていて 金額を1つの項目として読み込む事が出来ません。 金額は""でくくってあるのですが、 カンマ区切りのデータと""でくくってあるデータを うまく区別して3つの項目をそれぞれ抽出する事は可能でしょうか? -----以下CSVの内容------ 日付,金額,データ 2007/03/09,"1,200",TEST1 2007/03/09,"12,200",TEST2 2007/03/09,"76,00",TEST3 2007/03/09,"4,5600",TEST4 --------------------------- ちなみに現在はこのようにカンマ区切り指定でデータを抽出してるので うまく出来ません。   'FileNameにはオープンするファイル名がセットされています   Open FileName For Input As   'textlineに1行を読み込む   Line Input #ch1, textline   csvline() = Split(textline, ",") VBAがまだ不慣れな為質問やサンプルが分かりずらいと思いますが よろしくお願いします。

  • wshでcsvファイルのソートを行いたい

    wshのプログラムで困っているため教えてください。 wshでcsv(カンマ区切り)のファイルのソートを行い、Escel形式で保存するプログラムを書いています。 調べてみたところ、wshではソート関数がないようで、 adodbのsort関数を使用して対処しようとしていますが、どうもうまくいきません。 (※adodbの必要はないのですが、ExcelVBAのsortのコードを書こうとするとエラーになってしまったので、adodbにしています。) <仕様> csvファイルのソートのキーになるのは、「判定区分」の値で昇順に行いたいです。 csvファイルの一行目は、カラム名としてソート対象にはなりません。 読み込んだcsvファイルをexcel形式に保存したいです。 ■csvファイルの形式は、以下のような形です。 性別,年代,判定区分,生年月日,日付 女性,10,0,2010/01/10,2013/7/7 23:57 男性,50,2,2000/03/30,2013/7/7 13:7 女性,10,0,1990/01/20,2013/7/7 15:22 女性,20,1,2001/12/10,2013/7/7 8:10 *----------------------------------- <ソース> Set con = CreateObject("ADODB.Connection") With con .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";" _ & "Extended Properties='text;HDR=Yes;FMT=Delimited'" .Open End With Set rec = CreateObject("ADODB.Recordset") rec.Open "select * from " & csvfile & " order by 判定区分", con *----------------------------------- うまくいかないため ↓でも書いています。 *----------------------------------- Const adDate = 7 Const adVarChar = 200 Dim ans Set objADO = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") Set re = CreateObject("VBScript.RegExp") rs.Fields.Append "性別", adVarChar, 255 rs.Fields.Append "年代", adVarChar, 255 rs.Fields.Append "判定区分", adVarChar, 255 rs.Fields.Append "生年月日", adDate rs.Fields.Append "日付", adDate rs.Open ans = "" rs.Sort ="判定区分 ASC" rs.MoveFirst Do While Not rs.EOF ans = ans & rs.Fields(0).Value & vbCrLf rs.MoveNext Loop MsgBox ans エラーになってしまいます。 ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。 どうぞ宜しくお願いいたします。

  • CSVファイルのダウンロードができたりできなかったり・・

    ASPで、サーバー側で動的に作成したCSVファイルをクライアント側にダウンロードさせたいと思っていますが、 ダウンロードできるときとできないときがあり困っています。 「ファイルのダウンロード」ダイアログが表示され、うまくダウンロードできるときと、 「Internet Explorer では、[サイト名]-[aspファイル名]をダウンロードできません。このインターネットのサイトを開くことができませんでした。要求されたサイトがしようできないか、見つけることができません。後でやり直してください。」のメッセージが表示され、ダウンロードできない場合があります。 どちらもサーバー上にダウンロードすべきCSVファイルは作成されているので、ダウンロード部分に問題があると思うのですが、原因がわかりません。 ひとつ気づいたのが、csvファイルの容量が4.0MBを超えるとダウンロードできないような気がするのですが、関係ありますでしょうか? よろしくお願い致します。 --------出力のためのスクリプト----------------- Response.ContentType = "application/octet-stream" Response.AddHeader "Content-Disposition", "attachment; filename = " & CSVファイル名 Set fs = Server.CreateObject("Scripting.FileSystemObject") CSV_DATA = Server.MapPath(CSVファイル名) If fs.FileExists(CSV_DATA) Then Set ts = fs.OpenTextFile(CSV_DATA, 1) Do Until ts.AtEndOfStream Response.Write ts.ReadLine() & vbCrLf Loop ts.Close End If Response.End -----------------------------------------------

  • Excel VBA ADOでのCSV取込みについて

    下記は、Excel VBAでADOを使って、CSVデータを取り出すソースです。ソースは、とあるサイトからほぼ丸写しです。 Sub main()   Const DRIVER As String = "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ="   Const PROVIDER As String = "Provider=MSDASQL;Extended Properties="""   Dim cn As New ADODB.Connection   Dim rs As New ADODB.Recordset   Dim idx As Integer   Dim strSQL As String   cn.ConnectionString = PROVIDER & DRIVER & "C:\"""   cn.Open   '全件数取得   strSQL = "SELECT * FROM Sample.csv"   'CSVファイルの内容を取得   Set rs = cn.Execute(strSQL)   rs.MoveFirst   Do Until rs.EOF     For idx = 0 To rs.Fields.Count - 1       Debug.Print rs.Fields(idx).Value '←ここ     Next idx     rs.MoveNext   Loop   Set rs = Nothing   cn.Close   Set cn = Nothing End Sub ここで、「'←ここ」と示した行のrs.Fields(idx).Valueって、実際には「001」と書かれた値は、ダブルクォーテーションでも入ってない限りは「1」と変換されちゃいますよね?これをちゃんと、実際の値「001」のまま取得することって出来ないのでしょうか?

  • ExcelからADOでCSVに接続しているのですが・・・

    Excel2002 WindowsXP CSVファイルにスペックリストがあり、そこへADOで接続しています。 また、エクセルのA列に製品名があり、RecordsetのFindもしくはFilterで該当するスペックを見つけられるようにしています。 ソースとしては次のような感じです。 For i = 1 to 100   RS.MoveFirst   RS.Find "製品名='" & Cells(i,1) & "'"   If Not RS.EOF Then     Cells(i,2)=RS("重量")   End If next i このソースの実行中にいつも特定の製品名のところで次のエラーのどちらかで止まってしまいます。 [Microsoft][OEBC Text Driver] UPDATE ステートメントの構文エラーです。 [Microsoft][OEBC Text Driver] このISAMでは、リンクテーブル内のデータを更新することはできません。 この製品名を省くと最後まで問題なく進みます。製品名は単に半角アルファベットで8文字程度なんですが・・・。 このエラーの意味はどういうものでどういった回避方法があるのでしょうか?