Windows 10 タスク スケジューラを使って Office 365 タスクを実行する方法 - TechRepublic

Windows 10 タスク スケジューラを使って Office 365 タスクを実行する方法 - TechRepublic

画像: アンドレイ・ポポフ、ゲッティイメージズ/iStockphoto

毎日、毎週、毎月、時には毎時間繰り返される定期的なタスクを抱えている人は多いでしょう。ドキュメントを開いて同じタスクを何度も繰り返す必要はありません。VBAプロシージャを使ってタスクを自動化できる場合は、Windows 10のタスクスケジューラからそのプロシージャを実行できます。バックグラウンドで実行されるため、ユーザーは気づかないうちに実行されます。繰り返しのタスクが面倒だと感じたり、頻繁に忘れてしまう場合は、Windows 10のタスクスケジューラを試してみてください。

このソリューションにはMicrosoft Visual Basic Sc​​ripting Edition(VBScript)が必要ですが、この記事では必要な手順をすべて説明しています。このスクリプト言語の汎用性をご理解いただければ、ご自身でさらに詳しく調べることができます。また、Windows 10のタスクスケジューラを使用しますが、このツールを初めてお使いになる方もご安心ください。使い方は簡単です。この記事は、ExcelとVBAの知識があることを前提としています。問題が発生した場合は、この記事の最後にあるトラブルシューティングのセクションをご覧ください。

Windows 10 64ビットシステムでOffice 365とWindows 10タスクスケジューラを使用していますが、以前のバージョンのOfficeとWindowsでも動作するはずです。ダウンロード可能なExcelのデモ用.xlsm、.xls、.bas、.vbsファイルをご利用いただけます。この手法はExcelのブラウザ版には適していません。ファイルの保存場所をメモしておいてください。後で必要になります。

課題

図Aは、データとピボットテーブルを含むシンプルなTableオブジェクトを示しています。ユーザーが1日を通して新しいレコードを入力し、更新されたピボットテーブルのコピーを毎朝8時に印刷またはメールで送信したいとします。ユーザーがピボットテーブルの更新方法を知らないと、最新の情報が得られない可能性があります。そこで、毎朝8時にファイルを開き、ピボットテーブルを更新してから、印刷またはメールで送信します。ここでは基本的な操作にとどめ、印刷だけを行います。

図A

更新されたピボットテーブルを毎朝 8 時に印刷するタスクを自動化します。

Excelで動作するVBAプロシージャを作成することが最初のステップです。次のステップは、メモ帳を使ってExcelのインスタンスを作成し、マクロを実行する短いスクリプトを作成することです。最後に、毎朝8時にVBScriptを実行する基本的なタスクを作成します。

ワークブックと手順

データがテーブルオブジェクト(デモ用の.xlsmファイル)に格納されている場合、ブックを開いたときにピボットテーブルを更新するように簡単に設定できます。設定するには、ピボットテーブル内の任意の場所を右クリックし、表示されるサブメニューから「ピボットテーブルオプション」を選択します。表示されるダイアログで「データ」タブをクリックします。次に、「ピボットテーブルデータ」セクションの「ファイルを開くときにデータを更新する」オプションをオンにします(図B)。このテクニックを使用するためにこの設定は必須ではありませんが、設定できることは覚えておいてください。

図B

ブックを開いたときに、Excel でピボットテーブル オブジェクトを強制的に更新することができます。

現時点では、ワークブックを開くとピボットテーブルが更新されますが、印刷する必要があります。そこでマクロの出番です。Alt+F11 キーを押して、ワークブックの Visual Basic エディター (VBE) を開きます。「挿入」メニューから「モジュール」を選択します。表示されたモジュールに、リスト Aに示すプロシージャを入力します。この Web ページからコードをコピーしないでください。VBE はコードを正しく解釈できません。代わりに、自分で入力するか、ダウンロード可能な .bas ファイルをインポートしてください。

リストA

Sub PrintUpdatedPivotTable()'Update and then print PivotTable1.Dim pt As PivotTableSet pt = Sheets("PivotTable").PivotTables("PivotTable1")'Select PivotTable1.pt.TableRange1.Select'Refresh all pivottables.ThisWorkbook.RefreshAll'Set landscape mode.ActiveSheet.PageSetup.Orientation = xlLandscape'Print PivotTable1.ActiveWindow.SelectedSheets.PrintOutEnd Sub

このコードは、印刷するピボットテーブルを識別して選択します(PivotTable1はデフォルトの名前で、変更していません)。すべてのピボットテーブルオブジェクトを更新した後、この手順は選択されたピボットテーブル(PivotTable1)を横向きで印刷します。PrintOutメソッドを使用することで、複数部数などを指定できます。この手順をテストするには、コード内の任意の場所をクリックし、F5キーを押してください。

ブックを保存して閉じます。リボン版をご利用の場合は、ブックをマクロ有効ファイル(.xlsm)として保存してください。ブックの場所とプロシージャ名をメモしておいてください。これらは、次に記述するスクリプトで必要になります。デモファイルはローカルの「ドキュメント」フォルダに保存されています。

脚本

VBScriptはVisual Basicをモデルにしており、主に管理者によって使用されますが、非常にシンプルなので、ほとんどの人が基本を習得できます。スクリプトエディタにはメモ帳を使用します。メモ帳を開き、リストBに示すスクリプトを入力してください。

リストB

'Print PivotTable1 in Excel workbook, PivotTable1.xlsm.Set objApp = CreateObject("Excel.Application")Set objwb = objApp.Workbooks.Open("C:UsersSusan HarkinsDocumentsPivotTable1.xlsm")objApp.Visible = FalseobjApp.Run "PrintUpdatedPivotTable"objwb.Close FalseobjApp.QuitSet objApp = NothingMsgBox "PivotTable printed successfully", vbInformation

このシンプルなスクリプトは、Excelインスタンスを作成し、印刷するピボットテーブルを含むブックを特定して、そのファイルを開きます。VisibleプロパティをFalseに設定しているため、ピボットテーブルは表示されません。次に、リストAのマクロを実行し、ピボットテーブルオブジェクトを更新してからPivotTable1を印刷します。印刷後、スクリプトは保存を促すメッセージを表示せずにブックを閉じ、Excelインスタンスを閉じ、ExcelオブジェクトをNothingに設定します。

ファイルをPrintPivotTable1.vbsとして保存します。ファイル名を入力する際に​​、.vbs拡張子を自分で追加する必要があります。ファイルの場所をメモして、ファイルを閉じます。

タスクスケジューラ

タスクスケジューラは、長年愛用されているWindows管理ツールです。使いやすく、柔軟性に優れています。ここでは、その機能のほんの一部だけを紹介します。

Windowsのスタートメニューから「Windows管理ツール」を展開し、「タスクスケジューラ」を選択します。タスクを追加するには、以下の手順に従います。

  1. [アクション] メニューから [基本タスクの作成] を選択します。
  2. タスクに PrintPivotTable1 などのわかりやすい名前を付けます。
  3. 簡単な説明を追加します(図C)。この手順を省略したくなるかもしれませんが、自動的に実行されるタスクは忘れやすく、他の人にもメリットがあります。「次へ」をクリックします。
  4. このタスクに「毎日」を選択し、「次へ」をクリックします。
  5. 右側の「開始」コントロールに「午前8時00分00秒」と入力します。「繰り返し間隔」は図Dに示すように1(デフォルト)のままにしておきます。「次へ」をクリックします。
  6. 「アクション」セクションでは、デフォルトの「プログラムを起動する」オプションのままにしておきます。設定は変更せず、「次へ」をクリックしてください。
  7. 先ほども述べましたが、ファイルの場所を知っておく必要があります。「参照」ボタンを使って PrintPivotTable1.vbs を見つけてください。
  8. 「アクション」→「プログラムの開始」コントロールに「C:\Windows\System32\script.exe」と入力します。ほとんどのユーザーにとって、これはVBScriptプログラムを識別するためのもので、特に問題はありません。言語について学習していくうちに、cscript.exeが表示されるようになるかもしれません。cscript.exeはコンソールから操作できます。この.exeファイルが見つからない場合は、Cortanaに「where wscript」と入力してください。
  9. 「引数の追加」コントロールで、ワークブックのパス「C:\Users\Susan\Harkins\Documents\Print\PivotTable.vbs」(図E参照)を指定します。引用符は必須です。パスは私のものと異なるので、適宜修正してください。
  10. 「次へ」をクリックし、「完了」をクリックします。

図C

タスクに名前を付けて説明します。

図D

ピボットテーブルを印刷する時刻を入力します。

図E

スクリプト言語とワークブックのパスを識別します。

スクリプトをテストするには、タスク リストでスクリプトを右クリックし、[実行] を選択します。

トラブルシューティング

多くの処理が実行されるため、ミスが発生しやすいです。最も起こりやすいエラーは、.vbs、.xlsm、マクロの名前と場所を正しく指定していないなどのタイプミスです。幸いなことに、VBScript はエラーメッセージを表示するので、実際のステートメントを特定するのは簡単です。オブジェクトエラーメッセージが表示された場合は、スクリプト内の変数名を確認してください。Windows がファイルまたはマクロを見つけられないというエラーが表示された場合は、名前とパスを確認してください。問題が権限にあると思われる場合は、管理者のサポートが必要になる可能性があります。実験中は、ファイルをネットワークサーバーではなくローカルに保存することをお勧めします。

例えば夜中など、印刷する時間帯が不規則な場合、タスクが実行されない場合は、タスクのセキュリティオプションを確認してください。デフォルトの「ユーザーがログオンしている場合にのみ実行する」設定を、「ユーザーがログオンしているかどうかに関係なく実行する」に変更することをお勧めします(図F)。

図F

ログオンしていない場合でもタスクを実行する場合は、このオプションを変更します。

VBScriptはエラー処理をサポートしていますが、このシンプルなスクリプトには含まれていません。ネットワークプリンターが予期せずオフラインになったり、その他の問題が発生する可能性がある場合は、適切なエラー処理を追加することをお勧めします。

Officeに関するご質問をお送りください

読者の質問には可能な限りお答えしますが、必ずお答えできるとは限りません。リクエストがない限り、ファイルは送信しないでください。添付ファイル付きの初回サポートリクエストは未読のまま削除されます。ご質問を明確にするために、データのスクリーンショットを送信していただくことも可能です。お問い合わせの際は、できるだけ具体的にご記入ください。例えば、「ワークブックのトラブルシューティングを行い、問題点を修正してください」といった質問では返答がないかもしれませんが、「この数式が期待どおりの結果を返さない理由を教えていただけますか?」といった質問であれば、回答が得られるかもしれません。ご使用のアプリとバージョンを明記してください。読者サポートにあたり、TechRepublicから時間や専門知識の報酬を受け取ることはありません。また、サポートした読者から料金を請求することもありません。お問い合わせは[email protected]までお願いいたします。

Tagged: