【質問】
A. EXCELファイルに任意のシートがあるかチェックする方法はあるか。
※ただし、「任意のシートをアクティブにして、アクティブになれば有る、エラーになれば無い」のようなエラーを利用する以外の方法。
B. また、EXCELファイルにあるシートの数を求める方法はあるか。
【回答】
A. 下記の方法でEXCELファイルにあるシート有無の確認・アクティブにすることが可能です。
1. [OpenDocumentスプレッドシート-ブックを開く/作成する]でEXCELファイルを指定
2. [OpenDocumentスプレッドシート-ワークシートのリスト化]を利用してデータセットを作成
3. [OpenDocumentスプレッドシート-ブックを閉じる]
4, 手順2で取得したデータセットで[Loop-Dataset]アクションで走査処理を行う
5. 手順4のLoopブロック中でIFブロックで確認対象のワークシートと等しいかどうかをチェック
「%データセット名.WorksheetName%」を指定することでデータセット内のワークシート名を比較できる
6. IF文内にExcelのワークシートをアクティブにする処理を記述
B. 下記の方法でEXCELファイルにあるシートの数を取得可能です。
1. [OpenDocumentスプレッドシート-ブックを開く/作成する]でEXCELファイルを指定
2. [OpenDocumentスプレッドシート-ワークシートのリスト化]を利用してデータセットを作成
3. [OpenDocumentスプレッドシート-ブックを閉じる]
4. 手順2で取得したデータセットで「%データセット名.TotalRows%」を指定することでワークシート数を取得
なお、いずれの場合においても、Excelファイルが開かれた状態ではOpenDocumentスプレッドシートアクションで同じブックを開こうとするとエラーになります。
そのため、シート一覧を取得する際にはExcelファイルが閉じられている必要があります。
以下、一例です。
A.
<!--デスクトップ上のExcel「Book1.xlsx」のシートをデータセット化-->
<AMODS ACTIVITY="list_worksheet" WORKBOOK="%GetDesktopDirectory()%\Book1.xlsx" SAVETYPE="do_not_save" RESULTDATASET="ds_worksheets" />
<!--「Sheet1」という名前のワークシートが存在する場合はメッセージを出す-->
<AMLOOP ACTIVITY="dataset" DATASET="ds_worksheets" />
<AMIF EXPRESSION="%ds_worksheets.WorksheetName% = "Sheet1"" />
<AMSHOWDIALOG MESSAGE="指定された名前のワークシートが見つかりました" COUNTDOWNDELAY="5" />
<AMBREAK />
<AMIF ACTIVITY="end" />
<AMLOOP ACTIVITY="end" />
B.
<!--デスクトップ上のExcel「Book1.xlsx」のシートをデータセット化-->
<AMODS ACTIVITY="list_worksheet" WORKBOOK="%GetDesktopDirectory()%\Book1.xlsx" SAVETYPE="do_not_save" RESULTDATASET="ds_worksheets" />
<!--「Sheet1」という名前のワークシートが存在する場合はメッセージを出す-->
<AMSHOWDIALOG COUNTDOWNDELAY="5">指定されたブックに存在するワークシートの数は
「%ds_worksheets.TotalRows%」
です。</AMSHOWDIALOG>