VBからCSVにデータを落とす際の日付の変化
- 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のまま、落とす方法があるでしょうか? よろしくお願いいたします。
- Sikabu
- お礼率57% (40/70)
- Visual Basic
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
日付の変数をフォーマット文にて固定してあげればそのまま落ちたと思います。
関連する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ファイルを出力するのに、ファイルのサイズの上限があるのでしょうか?
- ベストアンサー
- Microsoft ASP
- アクセス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
- 締切済み
- Visual Basic
- アクセス 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で作成しています。 今日中に仕上げなければならないので、困っています。 よろしくお願いします。
- ベストアンサー
- Microsoft ASP
- 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がまだ不慣れな為質問やサンプルが分かりずらいと思いますが よろしくお願いします。
- ベストアンサー
- Visual Basic
- 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 -----------------------------------------------
- 締切済み
- Microsoft ASP
- 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文字程度なんですが・・・。 このエラーの意味はどういうものでどういった回避方法があるのでしょうか?
- ベストアンサー
- その他(データベース)
お礼
こんな簡単に落とせると思わなかった、ありがとうございます。大変勉強になりました。