AccessからExcelワークシートをリンクテーブルとしてリンクさせる際のサンプル
-
リンクテーブルを追加する
-
リンクテーブルを削除する
-
リンクテーブルのリンク先を変更する
上記3点に絞って実装。
Option Compare Database
Option ExplicitSub TestLinkExcelSample()
Call LinkExcelDAO_ADD("C:\都道府県.xls", "sheet1", "Linked Sheet1")
Call LinkExcelDAO_DEL("Linked Sheet1")
Call LinkExcelDAO_ADD("C:\都道府県.xls", "sheet1", "Linked Sheet2")
Call LinkExcelDAO_MOD("C:\都道府県2.xls", "sheet1", "Linked Sheet2")Call LinkExcelDAO_CHK
End Sub‘リンクの追加
Private Function LinkExcelDAO_ADD(ByVal ExcelBookPath As String, ByVal SheetName As String, ByVal LinkedSheetName As String) As Boolean
On Error GoTo EXCEPTION
Dim DB As Database
Dim tblExcel As TableDef
LinkExcelDAO_ADD = False
Set DB = CurrentDb
Set tblExcel = DB.CreateTableDef(LinkedSheetName)
‘EXCELのファイル名とシート名を指定(リンクモード、1行目をヘッダとする)
tblExcel.Connect = "excel 8.0;;HDR=YES;IMEX=2;DATABASE=" & ExcelBookPath
tblExcel.SourceTableName = SheetName & "$"
DB.TableDefs.Append tblExcel
‘成功
LinkExcelDAO_ADD = True
FINALLY:
DB.TableDefs.Refresh
Application.RefreshDatabaseWindow
Set tblExcel = Nothing
Set DB = Nothing
Exit FunctionEXCEPTION:
Resume FINALLYEnd Function
‘リンクの削除
Private Function LinkExcelDAO_DEL(ByVal LinkedSheetName As String) As Boolean
On Error GoTo EXCEPTION
Dim DB As Database
LinkExcelDAO_DEL = False
Set DB = CurrentDb
Call DB.TableDefs.Delete(LinkedSheetName)
‘成功
LinkExcelDAO_DEL = TrueFINALLY:
DB.TableDefs.Refresh
Application.RefreshDatabaseWindow
Set DB = Nothing
Exit FunctionEXCEPTION:
Resume FINALLY
End Function‘リンクの変更(削除→新規)
Private Function LinkExcelDAO_MOD(ByVal Path As String, ByVal SheetName As String, ByVal LinkedSheetName As String) As Boolean
LinkExcelDAO_MOD = False
If LinkExcelDAO_DEL(LinkedSheetName) = True Then
If LinkExcelDAO_ADD(Path, SheetName, LinkedSheetName) = True Then
LinkExcelDAO_MOD = True
End If
End If
End Function‘リンクの設定確認(一覧、デバッグ用)
Private Sub LinkExcelDAO_CHK()
Dim DB As Database
Dim tblExcel As TableDef
Set DB = CurrentDb
For Each tblExcel In DB.TableDefs
Debug.Print "Name:" & tblExcel.name & vbTab & "Connect:" & tblExcel.Connect
Next tblExcel
Set tblExcel = Nothing
Set DB = Nothing
End Sub
コメント