2017-11-28 5 views
1

私は最初にOutlookにマクロを書いており、いくつかのExcel機能が必要です。だから、私はツール>参照に移動し、 "Microsoft Excel 15.0オブジェクトライブラリ"を選択し、直接のウィンドウでそれをテストします。以下は、私はすぐに窓に書いたものです:Outlook VBAでExcel関数を呼び出すときに時間がかかるのはなぜですか?

? WorksheetFunction.Weekday(Now(), 2) 

あり、それは答えを表示するためのいくつかの観察可能なものの、最小限の遅れが(ちょうど0.2S以下であってもよい)であるが、私は同じことをしようとした場合、このケースではありません優れた私はこれがマクロをあまり傷つけないと認めなければならないが、私は好奇心が強い。なぜOutlookはワークシート関数オブジェクトを遅くしましたか?ライブラリを間違った方法で追加していますか?

更新:非修飾参照を防ぐ約 、WorksheetFunctionオブジェクトのExcel Applicationオブジェクトのメンバーである

Dim oExcel As Excel.Application 
Set oExcel = CreateObject("Excel.Application") 
'main body here 
oExcel.Quit 
Set oExcel = Nothing 

答えて

3

以下のように、私はいくつかのコードを使用する必要があることです。 OutlookからWorksheetFunctionメンバーに電話すると、暗黙的にExcelのインスタンスが作成されます。これは、読み込みに時間がかかります。

あなたは平日の機能が必要な場合は、VBAライブラリで似た何かがすでにあります:

機能平日(日、[VbDayOfWeek = vbSundayとしてfirstdayofweekの])VBA.DateTime

メンバー

+0

そのような非修飾リファレンスを使用すると、Excelタスクがバックグラウンドで実行されている可能性があります。 – Rory

+0

コードが正規化されていない参照である理由は何ですか? – betapig

+0

WorksheetFunctionオブジェクトとApplicationオブジェクトは両方ともグローバルのメンバーです。つまり、自動的に自分自身を作成し​​ます。変数への参照を割り当てないと、完了したらアプリケーションを破棄する信頼できる方法がありません。 – ThunderFrame

関連する問題