1

Access マクロをトリガーすることにより、Windows タスク スケジューラがデータベースからデータをエクスポートするために使用できる VBS ファイルを正常に作成しました。今、インポートする必要があります - ほとんどの手順は簡単で、Access マクロで実行できますが、最初にテーブル リンクを再作成する必要があります (フィールド名と位置はソース ファイルで頻繁に変更され、最初に削除してから削除しない限り、混乱するようです)リンクを再作成してください。) VBA コードは次のとおりです。見逃した対応するマクロ アクションはありますか?

'delete and recreate links to Account and Company
Dim db As DAO.Database

' Re-link the CSV Table
Set db = CurrentDb
On Error Resume Next:   db.TableDefs.Delete "Contact":   On Error GoTo 0
db.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="Contact", _
    FileName:="c:\db\contact.csv", HasFieldNames:=True
db.TableDefs.Refresh

On Error Resume Next:   db.TableDefs.Delete "Account":   On Error GoTo 0
db.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="Account", _
    FileName:="c:\db\account.csv", HasFieldNames:=True
db.TableDefs.Refresh

db.Close
Set db = Nothing
4

1 に答える 1

1

はい、見逃したマクロ アクションは ですRun Code

唯一の注意点は、Run CodeVBA 関数しか呼び出せないことです。したがって、コードをマクロに貼り付けることはできません。代わりに、次のように MS Access モジュールの VBA 関数に入れる必要があります。

Public Function ReCreateTableLinks()

    'delete and recreate links to Account and Company
    Dim db As DAO.Database

    '... paste the rest of your code here

End Function

ところで、VBS ファイルを呼び出し、Access データベースを開いてマクロを実行する Windows タスク スケジューラを使用しているということですか。

私はこれを正しく理解していますか?
はいの場合: Access データベースを開くだけであれば、VBS ファイルはまったく必要ありません。
Windows タスク スケジューラを使用して、Access データベースを直接実行するだけです。
マクロに という名前を付けるとautoexec、Access データベースが開いたときにマクロが自動的に実行されます。

于 2013-08-15T20:34:58.877 に答える