
教えて下さい。
ACCESSであるテーブルのデータをCSV出力しようとして、以下のような記述をしました。
結果、問題なく出力されましたが、データだけでなく、項目も出力しようと考えています。
その際にはどのような記述をすれば良いでしょうか?
初歩的な質問で申し訳ありません。
教えて下さい。
《内容》
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stSQL As String
Dim stTBL As String
Dim myWSH As Object 'WScript
Dim myDesktopPath As String
Dim stPath As String 'フルパス
Dim objFSO As Object 'FileSystemObject
Dim fsoTS As Object 'TextStream
Dim tmp As Variant 'データ
Dim re As Variant 'データ件数
Dim stDocName As String
Const ForAppending = 8
stTBL = "t_合算" 'テーブル名
'開始メッセージ
stDocName = "「" & stTBL & ".CSV」 ファイルをデスクトップに作成します"
If MsgBox(stDocName, vbYesNo) = vbNo Then Exit Sub
'デスクトップパス取得
Set myWSH = CreateObject("WScript.Shell")
myDesktopPath = myWSH.SpecialFolders("Desktop")
Set myWSH = Nothing
'フルパス
stPath = myDesktopPath & "\" & stTBL & ".CSV"
'読み取り専用でセット
Set cnn = CurrentProject.Connection
stSQL = "SELECT * FROM " & stTBL
Set rst = cnn.Execute(stSQL)
If rst.EOF Then
stDocName = "出力するデータがありませんでした"
Else
'文字列データ格納 (全データ出力、カンマ区切り)
tmp = rst.GetString(adClipString, , ",", vbNewLine)
'出力
Set objFSO = CreateObject("Scripting.FileSystemObject")
With objFSO
If .FileExists(stPath) Then
'既存ファイル削除
Call .DeleteFile(stPath)
End If
Set fsoTS = .OpenTextFile(stPath, ForAppending, True)
'文字列一括書き出し
fsoTS.WriteLine tmp
re = fsoTS.Line - 2
End With
Set fsoTS = Nothing: Set objFSO = Nothing
stDocName = re & " 件の CSVデータを出力しました。"
End If
MsgBox stDocName, vbOKOnly
No.3ベストアンサー
- 回答日時:
rs.GetStringというのは初めて見ました。
ひとつ物知りになったお礼にフィールド名の取得を盛り込んでみました。フィールド名はループで個々に取得するしかなさそうです。
Accessお仕着せのオートナンバーフィールドのあるデータで試験したところ、エクセルに読み込む時にエラーになって悩みました。バイナリエディタまで引っ張り出してみても分からない...。結局CSVファイルの頭にID...という文字があると、エクセルはSYLKファイルと判断してエラーを出すという事が分かりました。強行すればCSVとして開く事は可能でしたが。
Sub test()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stSQL As String
Dim stTBL As String
Dim stPath As String 'フルパス
Dim objFSO As Object 'FileSystemObject
Dim fsoTS As Object 'TextStream
Dim tmp As Variant 'データ
Dim re As Variant 'データ件数
Dim stDocName As String
Dim buf As String
Dim i As Long
Const ForAppending = 8
stTBL = "Table1" 'テーブル名
'開始メッセージ
stDocName = "「" & stTBL & ".CSV」 ファイルをデスクトップに作成します"
If MsgBox(stDocName, vbYesNo) = vbNo Then Exit Sub
'フルパス
stPath = myDesktopPath & "\" & stTBL & ".CSV"
'読み取り専用でセット
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
stSQL = "SELECT * FROM " & stTBL
rst.Open stSQL, cnn, adOpenForwardOnly, adLockReadOnly
If rst.EOF Then
stDocName = "出力するデータがありませんでした"
Else
re = rst.RecordCount
For i = 0 To rst.Fields.Count - 1
If buf = "" Then
buf = rst.Fields(i).Name
Else
buf = buf & "," & rst.Fields(i).Name
End If
Next i
'文字列データ格納 (全データ出力、カンマ区切り)
tmp = rst.GetString(adClipString, , ",", vbNewLine)
tmp = buf & vbCrLf & tmp
'出力
Set objFSO = CreateObject("Scripting.FileSystemObject")
With objFSO
If .FileExists(stPath) Then
'既存ファイル削除
Call .DeleteFile(stPath)
End If
Set fsoTS = .OpenTextFile(stPath, ForAppending, True)
'文字列一括書き出し
fsoTS.WriteLine tmp
End With
Set fsoTS = Nothing: Set objFSO = Nothing
stDocName = re & " 件の CSVデータを出力しました。"
End If
MsgBox stDocName, vbOKOnly
End Sub
Function myDesktopPath() As String
Dim myWSH As Object 'WScript
'デスクトップパス取得
Set myWSH = CreateObject("WScript.Shell")
myDesktopPath = myWSH.SpecialFolders("Desktop")
Set myWSH = Nothing
End Function
mitarashi様、返事が遅くまって申し訳ありません。
教えて頂いたように記述したところ、問題なく項目を出力する事ができました。
ありがとうございました!
No.2
- 回答日時:
No.1
- 回答日時:
出力用の仮テーブル作って、
transfertextをつかって、hasfieldnamesをtrueに設定する
のが簡単かな。
参考URL:http://www.feedsoft.net/access/tips/tips92.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerPointのスライドの途中で...
-
パワーポイントの表
-
パワーポイント「スライドショ...
-
皆さん、おはようございます♪ ...
-
27歳の彼氏と電化製品を見に行...
-
Microsoft Outlook本文に、パワ...
-
PowerPointで、作成されたファ...
-
【画像あり】パワーポイントの...
-
Microsoft Office2016をOffice2...
-
エクセル・パワーポイントなど...
-
パワーポイントで説明しながら...
-
パワーポイントのLabel1に日付設定
-
PowerPoint で動画を再生中に表...
-
パワーポイントをプロンプター...
-
パワーポイントの使い方 70前...
-
パワーポイントの自動開始方法
-
リカバリー後のマイクロソフトo...
-
MS Officeソフト
-
PPT 印刷時の設定
-
パワーポイントの使い方につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
コマンドプロンプトのテキスト...
-
Thunderbird 受信メールからの...
-
COBOL、項目末尾に空白がある場...
-
エクセルが裏で動いたままなん...
-
Acrobat参照設定
-
iTextでPDFを表示させたら日本...
-
VBA 参照先で選んだファイルを...
-
CSV形式で保存するとファイ...
-
COBOL FILLER
-
accessのリポートを、excelに出...
-
excel vbaでのxml出力がわかり...
-
エクセル:VBAで自動的にCSV形...
-
クエリー出力からEXCELに吐き出...
-
テキストファイルをエクセルで...
-
ショートカットで起動した場合...
-
VB6.0でExcel,PDF,Word出力方法
-
AccessのレポートからPDFをペー...
-
マックで作ったPDFファイル...
おすすめ情報