- 締切済み
エクセルの各シートをアクセスで縦に結合するには
お世話になります。 1つのエクセルファイルに同じ書式のシートが複数あります。1行目がタイトル行で2行目以降にデータが入っています。 この各シートのA2セルからM列の最終行までの範囲のデータを順番にアクセスに取り込み一つのテーブルを作成したい。各シートのデータを縦に結合するイメージです。行数は各シートバラバラです。また各シートの列数はM列より多いが必要なのはM列までです。 最初のシートだけタイトルが必要なのでA1セルから取り込みます。 縦に並べるとエクセルの最大行数を超える可能性があるので一旦エクセル上で縦に並べることは考えません。 アクセスに取り込んだ際、主キーになる項目がないので左端に1からの連番の列を作ります。 以上のことをするためにはどのようにすれば良いのでしょうか?シートがかなりあるので自動化できればうれしいです。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nicotinism
- ベストアンサー率70% (1019/1452)
突っ込みどころ満載の危ういコードです 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 連番はオートナンバーフィールドを後で追加 危惧するところ。 空のシートがあった場合。 セルの行が虫食い状態だった場合。 セルの中に適当でない部分が(数値型列中に文字など)があった場合。 エクセルの並び順は保障されているのか・・などなど 正直やったこと無いので・・・
お礼
ありがとうございました。