• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスの外部データ(エクセル)の取り込み。VBA)

アクセスの外部データ(エクセル)の取り込み。VBA

このQ&Aのポイント
  • アクセスの外部データ(エクセル)をVBAで取り込む方法を教えてください。
  • アクセス2003とエクセル2003を使用しています。不要な行や列がある場合、VBAを使って外部データを取り込む方法を教えてください。
  • 現在、エクセルで行や列を削除してからデータを取り込んでいますが、VBAを使用して簡単に外部データを取り込む方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

手作業でやっていることを、そのまま置き換えるのが一番簡単そうです。 Access からオートメーションでExcelのBookを開き Access で取り出しやすいように整形してから取り込む。 こんな感じ ※MDB ファイルと XLS ファイルは同じフォルダにあると仮定しています。 Sub test()   Dim oXL As Object   Dim oBK As Object   Dim oSH As Object   Dim tmpXls As String   Set oXL = CreateObject("excel.application")   Set oBK = oXL.Workbooks.Open(CurrentProject.Path & "\得意先リスト.xls")   Set oSH = oBK.Sheets("リスト形式")   tmpXls = CurrentProject.Path & "\得意先リストtmp.xls"   With oSH    .Rows("1:4").Delete Shift:=xlUp    .Columns("O:AZ").Delete Shift:=xlToLeft    .Columns("I:L").Delete Shift:=xlToLeft    .Columns("E:E").Delete Shift:=xlToLeft    .Columns("A:A").Delete Shift:=xlToLeft   End With   If Dir(tmpXls) <> "" Then    Kill tmpXls   End If   oBK.saveas filename:=tmpXls   oBK.Close SaveChanges:=False   oXL.Quit   Set oXL = Nothing   'CurrentDb.Execute ("delete * from 得意先リスト")   '↑既存レコード削除ですので必要に応じて!!   DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _   "得意先リスト", tmpXls, hasFieldNames:=True   DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _   "得意先リスト参考までに", tmpXls, hasFieldNames:=True   MsgBox "終了" End Sub 参考になるかと思われるところ(私も以前どっぷりとハマリましたorz) http://hanatyan.sakura.ne.jp/vbhlp/ExcelErr.htm http://homepage1.nifty.com/rucio/main/technique/teq_15.htm

wai-girl
質問者

お礼

nicotinism様、 基本的な起動・終了処理のサイトのご紹介ありがとうございます。 作成して頂いたVBAにコメントを追加して使わせて頂きました。   Set oSH = oBK.Sheets("リスト形式")   tmpXls = CurrentProject.Path & "\得意先リストtmp.xls" リスト形式を開き、行・列の削除処理 得意先リストtmp.xlsに名前を変えて保存 得意先リストtmp.xlsをTransferSpreadsheetメソッドを使いインポートするのですね。 完成しました。ありがとうございました。

その他の回答 (1)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

『エクセルのシート全体』を取りこむ、機能であって、融通は利かないでしょう。 『CSVファイル』は1レコード目、2レコード目や、各項目の定義はあるから対応可能。 案1) このままシート全体を取りこんで、 クエリ実行で、テーブルの先頭4レコードを削除する、フィールドを削除する。 案2) シートをCSV形式にしておいて、VBAでレコード、項目を判断して取り込む。 案3) エクセル側でエクスポート用の別シートを編集する

wai-girl
質問者

お礼

layy 様 アドバイスをありがとうございます。 クエリ実行で、テーブルの先頭4レコードを削除する、フィールドを削除する。 CSV形式にする。 という方法もありのですね。

関連するQ&A