
Vbaでアクセスからエクセルにリンクテーブルするには?
エクセルの情報:
C:\Users\Desktop¥新規 Microsoft Excel ワークシート.xlsx
シート1の情報:
フィールド1 フィールド2
あああ aaa
いい iii
ううう uuu
なのですが、
アクセスからVBAでリンクするにはどうすれば良いでしょう?
手作業なら
外部データ→エクセル→外部データの取り込み→リンクテーブルを作成してソースデータにリンクする
でリンクできますが、vbaで行いたいです。
Sub Sample01()
Dim db As DAO.Database, tb As DAO.TableDef
Set db = CurrentDb
Set tb = db.TableDefs("Sheet1")
tb.Connect = ";DATABASE=" & CurrentProject.FullName & ";TABLE=Sheet1"
tb.RefreshLink ' リンク情報の更新
End Sub
このコードは意味が違いますよね
エクセルのパスとシート名を指定してリンクする方法を教えてください。
最終定期にはシートをループして複数のテーブルを作成したいのです。
リンクが無理ならインポートでもOKです。

No.2ベストアンサー
- 回答日時:
手作業でExcelへのリンクテーブルを作って
テーブルをデザインビューで開いてプロパティの「説明」を覗いてみた。
Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=D:\DB\SampleData\Small.xlsx;TABLE=Sheet1$
これをConnect に渡せば良いらしい。
IMEX ?
ACCDB ?
分からないのでGoogleと
こちらでも素晴らしい回答をされているkikuさんの
http://kikutips.blog13.fc2.com/blog-entry-107.html
を発見。
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
こちらではIMEXに関わる説明がされています。
docmd.TransferSpreadsheet acLink ,acSpreadsheetTypeEx・・後略でシートの一部分だけだと
(VBAのヘルプで↑を調べてください)
Excel 12.0 Xml;HDR=NO;IMEX=2;ACCDB=YES;DATABASE=D:\DB\SampleData\Small.xlsx;TABLE=sheet2$B5:D16
とかになりました。
直接、接続情報を指定するもよし、docmd.TransferSpreadsheet・・・でもお好きな方で。
今日はとても賢くなった。寝たら忘れるかも。。。
リンク先見ました
いろんなパターンが書かれていてすごく参考になりました。
nicotinism様の回答はいつも参考にしています。
とても賢い方だと思っていて尊敬しています。
No.1
- 回答日時:
試しにやってみました
Access2010で、カレントデータベース(mdb形式)にxls形式のファイルに対してリンクテーブルを作成しました。
excel 8.0のところは、試みに他のバージョン番号(xl2003なら11.0とか)を入れるとエラーになりました。
また、accdb形式のデータベースにxlsx/xlsm形式のワークシートをリンクさせるには、excel 12.0に変更する必要がありました。(mdbへの、xlsx/xlsmのリンクは拒絶されました。)
なお、リンクテーブル作成に成功しても、一旦データベースウィンドウを消して再表示させないと、反映されない事がありました。
以上、ご参考まで。(デスクトップのパス取得はテストの都合でつけてあります、あしからず)
Sub test()
Dim DB As Database
Dim rst As Recordset
Dim tblExcel As TableDef
Set DB = CurrentDb
Set tblExcel = DB.CreateTableDef("linked excel worksheet")
tblExcel.Connect = "excel 8.0;" & "database=" & GetDesktopPath & "\" & "hoge..xls"
tblExcel.SourceTableName = "Sheet1$"
DB.TableDefs.Append tblExcel
DB.Close
Set rst = Nothing
Set tblExcel = Nothing
Set DB = Nothing
End Sub
Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function
参考URL:http://www.moug.net/tech/acvba/0090012.html
すごい!できました!
ご回答ありがとうございました。
しかも自動的に1行目はフィールドになってくれるようですね。
DAOを使うのですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
テーブルリンク エクセルの4行目を先頭行にしたい
Access(アクセス)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
-
4
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
5
Accessのリンク先を相対パスにしたい
その他(データベース)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
11
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
12
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
13
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
14
「#エラー」の回避
Access(アクセス)
-
15
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
16
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
17
AccessVBAで任意の複数リンクテーブルをAccessVBAを動かす際に削除したいと考えておりま
Access(アクセス)
-
18
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
19
FindFirst を複数条件で検索
Visual Basic(VBA)
-
20
Access エクセルシート名変更
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vbaでアクセスからエクセルにリ...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブルの値をテキス...
-
テーブルの存在チェックについて
-
変数が選択リストにありません
-
Oracle 2つのDate型の値の差を...
-
Accessでテーブル名やクエリ名...
-
異なるサーバのDBデータ同士を...
-
ACCESSで400以上のフィールドが...
-
BIOSでAHCIに設定したいが、項...
-
Accessのクエリでデータの入力...
-
SQLで条件指定結合をしたいがNU...
-
Accessのフィールド数が255しか...
-
SUBSTRING 関数に渡した長さの...
-
Accessで、固定アルファベット+...
-
Access テキスト型に対する指定...
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vbaでアクセスからエクセルにリ...
-
Accessにてリンクテーブルの削...
-
エクセルからアクセスのテーブ...
-
accessのセキュリティ
-
アクセスのファイルが重くて保...
-
access2010のruntimeについて
-
Excel 2019 のピボットテーブル...
-
Accessでテーブル名やクエリ名...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
セルの右クリックで出る項目を...
-
Access テキスト型に対する指定...
-
Accessのフィールド数が255しか...
-
テーブルの存在チェックについて
-
Accessのクエリでデータの入力...
-
エクセルグラフの凡例スペース
-
FROM の中で CASE を使えるでし...
-
importについて
-
Accessでテーブルの値をテキス...
おすすめ情報