ここから本文です

お世話になります。 ネットでいろいろ調べながらaccessの勉強をしております...

dar********さん

2015/11/1211:28:42

お世話になります。

ネットでいろいろ調べながらaccessの勉強をしております。
なかなか難しくて、質問せずには、自分の力ではどうしても進まなくなりました。

どうか教えて頂けますよう、よろしくお願いいたします。


下記のように、モジュールで作りました。
会社別にexcelシートを分けてます。
1)各シートの最初に、accessのフィールドを出したいです。
2)各シートの最後に集計を出したいです。


よろしくお願いします。

----------------------------------------------------
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓モジュール↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
----------------------------------------------------

Option Compare Database

Function SheetWrite()

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim objXLS As Object
Dim wstXLS As Excel.Worksheet 'エクセル ワークシート
Dim rngXLS As Excel.Range 'エクセル 全範囲

Dim mydb As DAO.Database
Dim myrs As DAO.Recordset
Dim varData As Variant
Dim mySQL As Variant

'テーブル削除用変数などを定義します。
Dim strSQL As String 'SQL文格納用

DoCmd.SetWarnings False '警告を無効にします。-----A

'tbl_groupテーブルを作成します。
DoCmd.RunSQL "SELECT [出荷先] INTO [tbl_group] FROM [tbl_sample] GROUP BY [出荷先];"

Set mydb = CurrentDb()
Set myrs = mydb.OpenRecordset("tbl_group", dbOpenTable)

'出力先のExcelを利用できるように設定します。
Set objXLS = Excel.Application
'新しいブックを作成します。
objXLS.Workbooks.Add '-----B

Do Until myrs.EOF

varData = myrs!出荷先 '-----C

mySQL = "SELECT 出荷日, 商品名, 商品名2, 数量, 単価, 金額 "
mySQL = mySQL & "FROM tbl_sample WHERE 出荷先 = '" & varData & "';" '-----D

Set db = CurrentDb
Set rs = db.OpenRecordset(mySQL)
Set wstXLS = Worksheets.Add 'ワークシートを追加します。
wstXLS.Name = varData 'ワークシート名を命名します。

'以下-----E
Set rngXLS = wstXLS.Range(Cells(2, 1), _
Cells(rs.RecordCount + 1, rs.Fields.Count))
rngXLS.CopyFromRecordset rs 'Excelにデータを書き込みます。

myrs.MoveNext

Loop
'以下-----F
objXLS.Visible = True
ActiveWorkbook.SaveAs ("C:\Users\****\Desktop\temp.xls")

DoCmd.SetWarnings True '警告を有効に戻します。


Set rs = Nothing
Set db = Nothing
Set objXLS = Nothing
Set wstXLS = Nothing
Set rngXLS = Nothing
Set mydb = Nothing
Set myrs = Nothing



'データベースを現在のMDBファイルに設定します。
Set daoDB = CurrentDb

'削除用のSQL文1を作成します。
'テーブルを削除
strSQL = "Delete * From 出荷システム"

daoDB.Execute strSQL

'作成したSQL文を実行します。
daoDB.Execute strSQL



'削除用のSQL文2を作成します。
'テーブルを削除
strSQL = "Delete * From tbl_sample"

daoDB.Execute strSQL

'作成したSQL文を実行します。
daoDB.Execute strSQL




'削除用のSQL文3を作成します。
'テーブルを削除
strSQL = "Delete * From tbl_group"

daoDB.Execute strSQL

'作成したSQL文を実行します。
daoDB.Execute strSQL



'データベースを解放します。
Set daoDB = Nothing

End Function

Set rngXLS,From tbl,Set objXLS,Set wstXLS,Set daoDB,wstXLS.Range,rs.RecordCount

この質問は、30代の男性に回答をリクエストしました。

閲覧数:
112
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

umi********さん

2015/11/1212:42:17

ここから
--------------------------------------
For i = 0 To rs.Fields.Count - 1
wstXLS..Cells(1, i + 1).Value = rs.Fields(i).Name
Next i
--------------------------------------
この上まで
Set rngXLS = wstXLS.Range(Cells(2, 1), _
Cells(rs.RecordCount + 1, rs.Fields.Count))
rngXLS.CopyFromRecordset rs 'Excelにデータを書き込みます。

この質問は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる