
いつも大変お世話になっております。m(_ _)m
質問させてください。
エクセルに存在するデータベースのデータを、アクセスにインポートしたいのですが、アクセス側の「取り込み」みたいなボタンを押せば、ある程度自動的にするような仕組みを作りたいです。
「ある程度」というのは、「ボタン1つですべて実行されるように」というところまで自動化されなくても大丈夫です。
参照先、インポート先のテーブル名などのマウス操作は入っても大丈夫です。
そのようなことができますでしょうか?
できるだけ具体的に教えていただけると助かります。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
VBAで、DoCmdオブジェクトのTransferSpreadsheetメソッドでよいのではありませんか?
DoCmd.TransferSpreadsheet acImport,
[シートのタイプ],
[テープル名],
[ファイル名],
[Excel側のフィールドを使うかどうか],
[Excelの範囲]
実際のコード
DoCmd.TransferSpreadsheet acImport, , "TestTable", "D:\Test.xls", True, "Sheet1!A1:D20"
"Sheet1!A1:D20"
これはなくてもよいです。
回答ありがとうございます。
こちらの質問の仕方に不足がありました。
たとえば、エクセルのデータは毎日少しずつ増えていきます。
その「増えた分だけ」インポートする。もしくは、毎回エクセルにあるデータすべて(上書き)するなりを簡素化したいと思います。
頻度はほぼ毎日です。
それを自動化したいのですが、良い方法はないでしょうか?
No.4
- 回答日時:
こんばんは。
#2 のWendy#02 です。確かに、DoCmd.TransferSpreadsheet acImport では、Append は、無理かもしれませんね。Excel側で、差分を別シートに出して、TransferSpreadsheet acImportなら、出来ますが、Access 側が中心になると、差分は、取り出すことは出来ても、フィールド情報がないので、Append できません。そうすると、私の知っているのは、Adoぐらいしか技術がありませんので、以下のようなものを作ってみました。
Const は、それぞれ入力してください。また、テーブル名・フィールド名は、それぞれ入れてください。本来は、テーブルのレコード数を別に数えるつもりだったのですが、いっしょにしてしまいました。
なお、今回は、テーブルは、一旦閉じないと更新が分りません。
'-----------------------------------------
Option Compare Database
Dim myArVal As Variant
Dim RightCol As Integer
Const Fname As String = "Test.xls" 'Excelブック名
Const ShName As String = "Sheet1" 'シート名
Const RightColA1 As String = "D" '右端の列名
Sub Excel_Apend_ImportSample1()
Dim cn As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim mySQL As String
Dim cnt As Long
Dim dbRow As Long
Dim i As Long
Set cn = CurrentProject.Connection
mySQL = "SELECT Count(TestTable.フィールド1) as cnt from TestTable"
rs.Open mySQL, cn, adOpenStatic
dbRow = rs!cnt
rs.Close
Call ExcelOpen(dbRow)
On Error GoTo RsClose
rs.Open "TestTable", cn, adOpenStatic, adLockOptimistic
With rs
For i = LBound(myArVal, 1) + 1 To UBound(myArVal, 1)
.AddNew
!フィールド1 = myArVal(i, 1)
!フィールド2 = myArVal(i, 2)
!フィールド3 = myArVal(i, 3)
!フィールド4 = myArVal(i, 4)
.Update
Next i
End With
RsClose:
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
If Err.Number > 0 Then
MsgBox Err.Number & " " & Err.Description
Err.Clear
Else
Beep
End If
End Sub
Sub ExcelOpen(FirstRow)
Dim xlApp As Object
Dim xlshLastRow As Long
Dim xlshAdd As String
On Error GoTo Quit
'デフォルトの位置にない場合は、ドライブ\フォルダ をつける
Set xlApp = CreateObject("Excel.Application")
With xlApp.Workbooks.Open(Fname)
xlshLastRow = .Worksheets(ShName).Range("A65536").End(xlUp).Row
'dbのレコード数に+2(フィールド行分+1) ~ Excel の最後の行
xlshAdd = "A" & FirstRow + 1 & ":" & RightColA1 & xlshLastRow
myArVal = .Worksheets(ShName).Range(xlshAdd).Value
.Close
End With
Quit:
If Err() > 0 Then
MsgBox Err.Description
End If
xlApp.Quit
Set xlApp = Nothing
End Sub
回答ありがとうございます。
また、返事が遅くなってすみません。
何度もご丁寧な回答をしていただき、本当にありがとうございます。
上記に挑戦してみます。(私自身もVBAには自信がありませんがやってみます)
また分からないことがあったら補足させていただくと思いますので、まだ締め切りませんが・・・
よろしくお願いします。m(_ _)m
No.3
- 回答日時:
アクセスに「外部データの取り込み」「インポート」「エクセルファイル」
の「操作」があるのをご存知ですね。
にもかかわらず、「自動的」に拘るのですか。
であればVBAでの処理になると思いますが、質問の書き方からして不安を覚えますが、VBAの回答を、自分の場合に当てはめて、修正はできますか。
>毎日少しずつ増えていきます。その「増えた分だけ」インポートする。
(#1の補足)データを入力した日付はエクセルデータにありますか。その日単位にアクセスに送ってはどうでしょう。
エクセルで日単位にデータを別シートに分けるのはどうするか判りますか。
回答ありがとうございます。
また、お返事が遅くなりすみません。
アクセスに「外部データの取り込み」があるのはもちろん知っています。
操作する側の問題で、できたら(いや、確実に)「自動化」したい状況です。
お手数おかけしてすみません。
No.1
- 回答日時:
エクセルで作ったデータをCSVで吐き出して、
アクセスでインポートすると理解すればよろしいでしょうか?
アクセスのフォームにインポートボタンを作成してクリックイベントで
VBAが起動するように作ればよいと思います。
詳しくは下記のHPを参考にしてみてください。
http://www.accessclub.jp/bbs3/0067/superbeg25315 …
参考URL:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
回答ありがとうございます。
こちらの質問の仕方に不足がありました。
たとえば、エクセルのデータは毎日少しずつ増えていきます。
その「増えた分だけ」インポートする。もしくは、毎回エクセルにあるデータすべて(上書き)するなりを簡素化したいと思います。
頻度はほぼ毎日です。
それを自動化したいのですが、良い方法はないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- WordPress(ワードプレス) WordPress のブログを初期化したい。リスクは? 1 2023/01/01 05:47
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- その他(IT・Webサービス) EXCELVBAでシートを他のブックにコピーする命令を出すと毎回存在しないシート名の問合わせがある 1 2022/05/07 15:12
- Excel(エクセル) EXCELVBAでシートを他のブックにコピーする命令を出すと毎回存在しないシート名の問合わせがある 2 2022/05/07 17:16
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのテーブルのデータで、...
-
アクセス2000で固定長フィール...
-
アクセスのオートナンバーが飛...
-
ACCESSで改行コードを削除する方法
-
郵便番号の-(ハイフン)等をま...
-
エクセルのデータをアクセスに...
-
Access2003でフィールドのデー...
-
Accessチェックボックス 一度で...
-
EXCEL→ACCESSインポートでセル...
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
-
アクセスのエラー「クエリには...
-
2つのテーブルに共通するレコ...
-
エクセルにおける「フィールド...
-
Accessの日付時刻型から日付、...
-
テキストボックスにクエリ結果...
-
Accessの桁区切りについ...
-
クロス集計クエリの結果をテー...
-
アクセスで追加した項目に全て...
-
ACCESS クエリの抽出条件に他の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのテーブルのデータで、...
-
EXCEL→ACCESSインポートでセル...
-
エクセルのデータをアクセスに...
-
ACCESSで改行コードを削除する方法
-
Accessチェックボックス 一度で...
-
ACCESSで行数を増やすには?
-
ACCESS フォームに入力できる文...
-
郵便番号の-(ハイフン)等をま...
-
アクセスのオートナンバーが飛...
-
ACCESSのカスタマーバーコード...
-
Access2003でフィールドのデー...
-
アクセス2000で固定長フィール...
-
【Win】ファイルメーカー⇔エ...
-
エクセルのデータをアクセスへ...
-
ファイルメーカーのレイアウト...
-
アクセスファイルをtxtファイル...
-
ACCESS 検索置換 にデ...
-
Access2000 テキストデータの...
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
おすすめ情報