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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Accessのリンク先を相対パスにしたい
その他(データベース)
-
テーブルリンク エクセルの4行目を先頭行にしたい
Access(アクセス)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
-
4
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
5
ACCESS VBAで、エクセルファイルの更新
その他(プログラミング・Web制作)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
8
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
9
ACCESS側からEXCELの書式を設定するには?
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
「RunSQL」と「Execute」の違い
Access(アクセス)
-
12
アクセスVBAのMe!と[ ]
Access(アクセス)
-
13
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
14
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
15
Access サブフォームでの選択行の取得
その他(データベース)
-
16
アクセスでリンクしたエクセルを更新したい
Access(アクセス)
-
17
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
18
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
19
ACCESSのデータに自動で半角スペースを入れたい
その他(データベース)
-
20
Access VBAよりシート名を取得したい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vbaでアクセスからエクセルにリ...
-
accessのセキュリティ
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
Accessで数値型にNULLをInsert...
-
Accessのフィールド数が255しか...
-
Access テキスト型に対する指定...
-
ORACLEでLONG項目からCHAR項目...
-
ACCESSで和暦を西暦に・・・
-
他テーブルで一致する列から名...
-
Access IF文でテーブルに存在し...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
-
アクセス エラーを数値「0」に...
-
Accessの表形式のフォームについて
-
accessで重複を防ぎたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vbaでアクセスからエクセルにリ...
-
エクセルからアクセスのテーブ...
-
accessのセキュリティ
-
Accessにてリンクテーブルの削...
-
アクセスのファイルが重くて保...
-
エクセルからアクセスへADO...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Accessでコードを入れると名前...
-
Oracle 2つのDate型の値の差を...
-
Accessでテーブルの値をテキス...
-
Access テキスト型に対する指定...
-
作番ってどういう意味でしょうか?
-
セルの右クリックで出る項目を...
-
テーブルの存在チェックについて
-
変数が選択リストにありません
-
アクセス エラーを数値「0」に...
-
ACCESSでの改行コード
-
異なるサーバのDBデータ同士を...
おすすめ情報