
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
Accessのリンク先を相対パスにしたい
その他(データベース)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
-
4
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
5
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
6
AccessVBAでExcelをリンクテーブルにインポートできますか?
その他(データベース)
-
7
AccessVBAで任意の複数リンクテーブルをAccessVBAを動かす際に削除したいと考えておりま
Access(アクセス)
-
8
Accessのテーブルを既存のExcelファイルへエクスポートしたいんですが
Access(アクセス)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
11
テーブルリンク エクセルの4行目を先頭行にしたい
Access(アクセス)
-
12
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
13
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
14
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
15
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
16
Access VBAからExcelシートの削除
Excel(エクセル)
-
17
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
18
テーブルリンク リンク元を知りたい
Access(アクセス)
-
19
Access VBAよりシート名を取得したい
その他(データベース)
-
20
他のMDBのテーブルに追加したい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「テキストデータで送ってくだ...
-
Microsoft 365 Basic サブスク...
-
ACCESS VBA でのエラー解決の根...
-
Accessのクエリで、replace関数...
-
Accessのクエリの結果を、既存...
-
Access VBA [リモートサーバー...
-
access2021 強制終了してしまう
-
access2021 VBA メソッドまたは...
-
accessデータを指定したExcel、...
-
accessでlaccdbファイルが削除...
-
Access DAOのExecuteメソッドの...
-
Arduinoで温湿度と時刻を1分ご...
-
Accessでフォームに自動入力し...
-
Access DTPickerの初期表示月を...
-
Accessのスプレッドシートエク...
-
ACCESSでの、データの並び替え...
-
列が255以上のCSVファイルをAcc...
-
Access Error3061 パラメータが...
-
Access VBA を利用して、フォル...
-
Accessのリンクテーブルのパス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vbaでアクセスからエクセルにリ...
-
Accessにてリンクテーブルの削...
-
アクセスのデーターベースの共有
-
エクセルからアクセスのテーブ...
-
アクセスのファイルが重くて保...
-
エクセルからアクセスへADO...
-
Acess97、インポートについて・...
-
access2010のruntimeについて
-
【マクロ】列を折りたたみ非表...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
Oracle 2つのDate型の値の差を...
-
テーブルの存在チェックについて
-
Access テキスト型に対する指定...
-
INSERT INTO ステートメントに...
-
ワードで4段組みで文章を書い...
-
エクセルグラフの凡例スペース
-
変数が選択リストにありません
おすすめ情報