コメントの投稿
2008年の中頃・・・Accessって便利そうだな〜…。単純な発想から始まったAccessへの挑戦!プログラムなんてしたことない。 VBAって何? そんな自分の備忘録?
2011年08月
07月≪
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ≫09月
'テーブルをエクセルに出力する場合とすることで、エクセルに出力してくれるので簡単です。
Docmd.OutputTo acOutputTable, "テーブル名", acFormatXLS, "", false, ""
'クエリをエクセルに出力する場合
Docmd.OutputTo acOutputQuery, "クエリ名", acFormatXLS, "", false, ""
Public Sub ExcelOut(strSQL As String)基本的にコメントに全て書いていますが、処理の流れをだらだら書くと・・・
On Error GoTo ErrHnd
Dim rsOut As DAO.Recordset 'レコードセット用変数
Dim strErr As String 'エラーメッセージ用変数
Dim intVal As Integer '保存ダイアログの戻り値用変数
Dim strPass As String '保存先用変数
Dim LOut As Long ' Loop用変数(列番号)
Dim xlsApp As Object 'エクセル用オブジェクト変数
'SQLをレコードセットに指定
Set rsOut = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
If rsOut.EOF Then
strErr = "出力するデータが存在しません"
GoTo ErrHnd
End If
'保存のダイアログを表示
FilePick:
WizHook.Key = 51488399
intVal = WizHook.GetFileName(0, "", "", "", strPass, "", _
"Excelファイル(*.xls)|*.xls", _
0, 0, 0, False)
WizHook.Key = 0
'保存キャンセルの処理
If intVal = -302 Then
strErr = "キャンセルしました"
GoTo ErrHnd
End If
'既存ファイルの確認
If Dir(strPass, vbNormal) <> "" Then
MsgBox "同名のファイルが存在します。" _
& "別名で保存してください。", vbOKOnly, "情報"
GoTo FilePick
End If
'エクセルの起動
Set xlsApp = CreateObject("Excel.Sheet")
'エクセルの1行目に項目名を出力
For LOut = 0 To rsOut.Fields.Count - 1
xlsApp.Application.cells(1, LOut + 1).Value = rsOut(LOut).Name
Next
'エクセルにレコードセットを出力
xlsApp.Application.cells(2, 1).CopyFromRecordset rsOut
'エクセルファイルの保存
xlsApp.SaveAs Left(strPass, Len(strPass) - 4)
'クローズ処理
rsOut.Close: Set rsOut = Nothing
xlsApp.Close SaveChanges:=False: Set xlsApp = Nothing
Exit Sub
'エラーハンドル
ErrHnd:
Select Case Err.Number
Case 0 'エラーなし
Case 1004 'フォルダー/ファイルアクセスエラー
strErr = "指定されたフォルダ/ファイルが存在しないか、" & _
Chr(13) & "ファイルにアクセスできない状態です。"
Case 3061, 3075, 3078, 3131 'SQL構文エラー
strErr = "SQL構文エラーです"
Case Else 'それ以外のエラー
MsgBox "ErrNo:" & Err.Number & Chr(13) & "Err:" & Err.Description
End Select
If strErr <> "" Then MsgBox strErr, vbOKOnly + vbExclamation, "情報"
'エラー時のクローズ処理
If Not rsOut Is Nothing Then rsOut.Close: Set rsOut = Nothing
If Not xlsApp Is Nothing Then
xlsApp.Close SaveChanges:=False
Set xlsApp = Nothing
End If
End Sub
ExcelOut "SQL文"で動作してくれるはず・・・(-。-) ボソッ
トラックバック
Author:Genzo
PCは一応自作できるレベル。
ワード・エクセルなら基本的に
扱えるレベル。
プログラム・・・?ん?
VBA・・・?ん?ん??
それって美味しいですか?
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
- | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | - | - | - |
Since 2010/08/01:
Online: