次のコードを実行しようとすると次のメッセージが表示されます。Excel vba |
Sub Refresh_Pivot()
Dim AWB As Workbook
Dim pvtTable As Object
Dim appAccess As Object
'Save workbook
Set AWB = ActiveWorkbook
AWB.Save
'Open Access Application
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "S:\AMA\MPF\MPF Projects\MPF Loss Emergence\MPFV4.accdb"
appAccess.Visible = True
'Set Message bar in excel t o notify user of update process
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "Retrieving information, please be patient...."
'Execute Access Macro containing lineup of queries and scrubs
appAccess.DoCmd.RunMacro "0_Retrieve_Scrub" '<-- As it appears in the Macro Group in the Access Interface.
'Close Access
appAccess.DoCmd.Quit
'Return message bar to original status
Application.StatusBar = False
Application.DisplayStatusBar = oldStatusBar
Set pvtTable = Worksheets("1. Roll Rate Pivots").Range("C13").PivotTable
pvtTable.RefreshTable
Columns("B:B").EntireColumn.AutoFit
Columns("C:j").Select
Selection.ColumnWidth = 13
'Notify user process has completed
MsgBox ("Update complete")
End Sub
基本的にAccessデータベースを開き、Accessマクロを実行してAccessを終了します。私は、このコードがトリガーされる同じExcelファイル内のマクロによって作成されたテーブルへのODBC接続を持っています。私はこれを2007年のExcelで成功させました。私たちは最近、オフィス2013をアップグレードしました。私たちはこのメッセージを受け取り始めました。デバッグすると、このコード行が強調表示されます。最初は、そのバージョンのオブジェクトライブラリと何か関係がありましたが、最新のものすべてがチェックされています。誰もが同様の問題に遭遇しましたか?どんな助けでも大歓迎です。
appAccess.DoCmd.RunMacro「0_Retrieve_Scrub」
Office 2013は64ビット版ですか?あなたはそれがまだ正しく接続されていることを確認するために、Accessであなたのリンクテーブルマネージャをチェックすることができますか?マクロはVBA関数を実行するためにRunCodeを使用しますか、それともステップスルーアクセスコマンドですか? – dbmitch
私たちはOffice 2013の32ビット版を実行しています。実際には変わったことは、コードを新しいファイルにコピーするときです(もちろんピボットテーブルの更新をコメントアウトする)。 "Docmd"はAccess vbaメソッドです。 – Deanko
おそらくセキュリティ設定ですか? ExcelとAccessの両方でマクロ設定を「すべてのマクロをアクティブにする」に設定してみてください。 – Andre