こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルの各シートをアクセスで縦に結合するには

お世話になります。
1つのエクセルファイルに同じ書式のシートが複数あります。1行目がタイトル行で2行目以降にデータが入っています。
この各シートのA2セルからM列の最終行までの範囲のデータを順番にアクセスに取り込み一つのテーブルを作成したい。各シートのデータを縦に結合するイメージです。行数は各シートバラバラです。また各シートの列数はM列より多いが必要なのはM列までです。
最初のシートだけタイトルが必要なのでA1セルから取り込みます。
縦に並べるとエクセルの最大行数を超える可能性があるので一旦エクセル上で縦に並べることは考えません。
アクセスに取り込んだ際、主キーになる項目がないので左端に1からの連番の列を作ります。

以上のことをするためにはどのようにすれば良いのでしょうか?シートがかなりあるので自動化できればうれしいです。
よろしくお願いします。

投稿日時 - 2006-05-24 23:40:03

QNo.2173253

HGK

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

突っ込みどころ満載の危ういコードです
Accessから開いてます。

Sub test(xlsName As String)
Dim xls As Object
Dim wkb As Object
Dim sht As Object
Dim shtCount As Integer
Dim i As Integer

Set xls = CreateObject("excel.application")
Set wkb = xls.Workbooks.Open(xlsName)

'For Each sht In wkb.Worksheets
'Debug.Print sht.Name
'Next

shtCount = wkb.Worksheets.Count
wkb.Close , acSaveNo
Set xls = Nothing
'Stop

For i = 1 To shtCount

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
"testTable", xlsName, True, "sheet" & i & "!A:M"

Next

End Sub

連番はオートナンバーフィールドを後で追加

危惧するところ。
空のシートがあった場合。
セルの行が虫食い状態だった場合。
セルの中に適当でない部分が(数値型列中に文字など)があった場合。
エクセルの並び順は保障されているのか・・などなど
正直やったこと無いので・・・

投稿日時 - 2006-05-25 01:33:41

お礼

ありがとうございました。

投稿日時 - 2006-06-08 20:17:07

あなたにオススメの質問