データベース変換
マクロアクションの"データベース変換"も DoCmd.TransferDatabase も呼んでる API は同じだけど、VBA の環境では VBA が式を評価するので、引数に変数やユーザー関数やコントロール参照が指定できる。
DoCmd.TransferDatabase の第一引数でインポート|エクスポート|リンクを選択するけど、この値はシステム定数なので、VBA Editor のオブジェクトブラウザで知ることができる。しかし一般人にマクロを作ってもらうときにいちいちシステム定数を認識させるのは嫌がられるだろうから、"import"|"export"|"link" で指定できるようにしたのがミソといえばミソ。
それさえ判っていれば、あとはファイルパスと、読み書きするテーブル名を指定するだけ。
Function doCmdTransferDB(mode As String, fPath As String, sTbl As String, dTbl As String) Dim myDic As Object Set myDic = CreateObject("Scripting.Dictionary") myDic.Add "import", acImport myDic.Add "export", acExport myDic.Add "link", acLink On Error GoTo ErrorHandle 'Debug.Print "passed:doCmdTransferDB:" & mode; "" DoCmd.TransferDatabase myDic.Item(mode), _ "Microsoft Access", _ fPath, _ acTable, _ sTbl, _ dTbl doCmdTransferDB = True 'Debug.Print "passed:successfull" GoOut: Exit Function ErrorHandle: MsgBox Err.Number & vbCrLf & Err.Source & vbCrLf & Err.Description doCmdTransferDB = False GoTo GoOut End Function