アクセスの外部データ(エクセル)の取り込み。VBAの質問です。
アクセス2003 エクセル2003
不要な行・列がある場合の外部データ取り込みVBAを教えて下さい。
今は、エクセルで削除して取り込んでいます。
アクセスに「得意先リスト」というテーブルを作っています。
コード(テキスト型)主キー
名称(テキスト型)
フリガナ(テキスト型)
郵便番号(テキスト型)
住所1(テキスト型)
住所2(テキスト型)
TEL(テキスト型)
FAX(テキスト型)
エクセルブック[得意先リスト.xls]
シートは「リスト形式」のみです。
1~4行は不要。
5行目が見出しです。
A~AZ列までデータがあります。
必要な列は、B・C・D・F・G・H・M・N列です。
セルの書式設定は「文字列」です。
[アクセス エクセル インポート 行 列 削除]などでサンプルVBAを探しましたが見つからなかったので質問させて頂きました。
申し訳ありませんが、教えて下さい。
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/ …
nicotinism様、
基本的な起動・終了処理のサイトのご紹介ありがとうございます。
作成して頂いたVBAにコメントを追加して使わせて頂きました。
Set oSH = oBK.Sheets("リスト形式")
tmpXls = CurrentProject.Path & "\得意先リストtmp.xls"
リスト形式を開き、行・列の削除処理
得意先リストtmp.xlsに名前を変えて保存
得意先リストtmp.xlsをTransferSpreadsheetメソッドを使いインポートするのですね。
完成しました。ありがとうございました。
No.1
- 回答日時:
『エクセルのシート全体』を取りこむ、機能であって、融通は利かないでしょう。
『CSVファイル』は1レコード目、2レコード目や、各項目の定義はあるから対応可能。
案1)
このままシート全体を取りこんで、
クエリ実行で、テーブルの先頭4レコードを削除する、フィールドを削除する。
案2)
シートをCSV形式にしておいて、VBAでレコード、項目を判断して取り込む。
案3)
エクセル側でエクスポート用の別シートを編集する
layy 様
アドバイスをありがとうございます。
クエリ実行で、テーブルの先頭4レコードを削除する、フィールドを削除する。
CSV形式にする。
という方法もありのですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Access 削除クエリが重い
-
Accessでの禁止文字チェック
-
かねやんMysqlでレコードの修正
-
excel テーブル
-
主キーの変更
-
ACCESSのSQLで、NULLかNULLでな...
-
ACCESSでのエクセルインポート...
-
更新クエリでキー違反
-
ユニオンクエリの結果をテーブ...
-
accessでSQL実行時のテーブル名...
-
ビューで引数を使いたい
-
同時書き込み
-
不動産検索サイトのような複数...
-
【Excel】月々のデータを年間通...
-
Access2000 選択クエリで最新...
-
スクリプトファイルの一括実行
-
二つの表の項目を比較して値を...
-
Select ~ into ~ で作成した...
-
VBAの実行時エラー'2522'について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessにインポートしたら並び...
-
3つ以上のテーブルをUNIONする...
-
データの二重表示の原因
-
Accessで重複したデータを一件...
-
SQLServerで同一条件レコードの...
-
2つの項目が重複するレコード...
-
Access 1レコードずつcsvで出力...
-
Access VBA Me.Requery レコー...
-
ACCESSのBookmarkプロパティの...
-
Access カレントレコードがあり...
-
Accessでの排他制御
-
Access 削除クエリが重い
-
数百万件レコードのdelete
-
ManagementStudioからのデータ削除
-
(ACCESS)並び替えをしないで...
-
ACCESS【更新クエリの中断がで...
-
Accessでの禁止文字チェック
-
SQLデータ修正時に『このレコー...
-
非連結サブフォームのレコード...
-
ACCESSファイルを開こうとする...
おすすめ情報