
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も見ています
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
-
4
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
5
Accessのリンク先を相対パスにしたい
その他(データベース)
-
6
テーブルリンク エクセルの4行目を先頭行にしたい
Access(アクセス)
-
7
AccessVBAで任意の複数リンクテーブルをAccessVBAを動かす際に削除したいと考えておりま
Access(アクセス)
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
10
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
11
Access サブフォームでの選択行の取得
その他(データベース)
-
12
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
13
AccessVBAでExcelをリンクテーブルにインポートできますか?
その他(データベース)
-
14
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
15
ODBCリンクの際にACCESSでは読み取り専用にしたい!
Oracle
-
16
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
17
ACCESSのBookmarkプロパティの使い方
その他(データベース)
-
18
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
19
「#エラー」の回避
Access(アクセス)
-
20
access vbaにてテンポラリーテーブルが作りたいです。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vbaでアクセスからエクセルにリ...
-
accessのセキュリティ
-
Accessにてリンクテーブルの削...
-
エクセルVBAで5行目からオート...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
テーブルの存在チェックについて
-
SQLServer2005のSQL文での別名...
-
エクセルグラフの凡例スペース
-
変数が選択リストにありません
-
Accessのクエリでデータの入力...
-
Accessでテーブル名やクエリ名...
-
Accessファイルを作成者以外は...
-
INSERT INTO ステートメントに...
-
Accessで、複数のテーブルで随...
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
アクセスのテーブルを分ける理...
-
AccessのクエリをExc...
-
ACCESSのSQLで数値型に変換する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vbaでアクセスからエクセルにリ...
-
Accessにてリンクテーブルの削...
-
エクセルからアクセスのテーブ...
-
アクセスのファイルが重くて保...
-
エクセルからアクセスへADO...
-
accessのセキュリティ
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
Oracle 2つのDate型の値の差を...
-
テーブルの存在チェックについて
-
エクセルグラフの凡例スペース
-
Accessのクエリでデータの入力...
-
Access テキスト型に対する指定...
-
セルの右クリックで出る項目を...
-
FROM の中で CASE を使えるでし...
-
Accessのフィールド数が255しか...
-
INSERT INTO ステートメントに...
-
変数が選択リストにありません
おすすめ情報