Excelファイルの前処理でロボをシンプルに！（パート１）

## はじめに
&nbsp;ファイルサイズの大きなExcelファイルは、BizRobo!のDSで扱えずにDAを使わなければならないケースがあります。
[BizRobo!ナレッジ：ロボットで利用するEXCELのファイルサイズについて](https://knowledge.bizrobo.com/hc/ja/articles/360027878132-%E3%83%AD%E3%83%9C%E3%83%83%E3%83%88%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8BEXCEL%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
しかし、できるだけDSのみでロボを開発したいのが本音です。そもそも、Excelファイルでロボに必要な部分はほんの一部だったりします。その一部だけのExcelファイルをロボ実行時の一時ファイルとして作成すれば、DSで扱えるようになる可能性があります。
BizRobo！には「コマンドライン実行」アクションがあるので、これでVBスクリプトを実行することで、ロボ実行時の一時ファイルを作成することができます。この一時ファイルがDSで扱えることができれば、DAを使わなくても大丈夫です。

## 事前準備
* Typeファイル（VBS.tyep）
    * 読み込みファイル保存パス（ショートテキスト）
        * ファイルの保存場所変更があった際の修正簡単になります。
    * 一時ファイル保存パス（ショートテキスト）
        * 作成した一時ファイルの保存先として必須になります。
    * VBSひな形（ロングテキスト）
        * 元ファイルの保存場所および一時ファイルの保存先を規則に沿った文字列で表現したVBスクリプトを規定値に設定
            * #読み込みファイルパス# 
            * #シート名#
            * #一時ファイル保存パス#
    * VBS実行用（ロングテキスト）
        * VBSひな形から実行用に値変換されたVBスクリプトを格納します。
    * VBスクリプト保存先（ショートテキスト）
        * 規定値で設定（C:\temp\実行用.vbs）


* Excelファイル（c:\temp\sample_収支明細.xlsx）
    * 年月別のシートの支出明細
    * シート名はYYYYMM（例：202008）

## サンプルVBスクリプト
* VBSひな形

```vb
On Error Resume Next
Set objExcel = CreateObject("Excel.Application")
objExcel.ScreenUpdating = false	'--画面描画の停止
objExcel.Visible = false	'--Excel非表示
objExcel.DisplayAlerts = false

'--読み込みファイルを開く
Set objWorkBook1 = objExcel.Workbooks.Open("#読み込みファイルパス#")
Set objWorkSheet1 = objWorkBook1.Sheets("#シート名#")

'--新規Bookの追加
objExcel.Workbooks.Add()
Set objWorkBook2 = objExcel.Workbooks( objExcel.Workbooks.Count )
'--シートをコピー
objWorkSheet1.Copy ,objWorkBook2.Sheets(objWorkBook2.Sheets.Count)
'--不要なシートを削除
objWorkBook2.Sheets("Sheet1").Delete

objWorkBook2.saveAs("#一時ファイル保存パス#")
objExcel.Quit

'--後処理
Set objExcel = Nothing
Set objWorkBook1 = Nothing
Set objWorkSheet1 = Nothing
Set objWorkBook2 = Nothing

Wscript.StdOut.Write Err.Description
Wscript.Quit Err.Number
```
* VBS実行用

```vb
On Error Resume Next
Set objExcel = CreateObject("Excel.Application")
objExcel.ScreenUpdating = false	'--画面描画の停止
objExcel.Visible = false	'--Excel非表示
objExcel.DisplayAlerts = false

'--読み込みファイルを開く
Set objWorkBook1 = objExcel.Workbooks.Open("C:\temp\sample_収支明細.xlsx")
Set objWorkSheet1 = objWorkBook1.Sheets("202008")

'--新規Bookの追加
objExcel.Workbooks.Add()
Set objWorkBook2 = objExcel.Workbooks( objExcel.Workbooks.Count )
'--シートをコピー
objWorkSheet1.Copy ,objWorkBook2.Sheets(objWorkBook2.Sheets.Count)
'--不要なシートを削除
objWorkBook2.Sheets("Sheet1").Delete

objWorkBook2.saveAs("C:\temp\sample_収支明細_抽出.xlsx")
objExcel.Quit

'--後処理
Set objExcel = Nothing
Set objWorkBook1 = Nothing
Set objWorkSheet1 = Nothing
Set objWorkBook2 = Nothing

Wscript.StdOut.Write Err.Description
Wscript.Quit Err.Number
```

## 手順
※1～3の設定はVBS.typeファイルの規定値に設定でも可。サンプルroboファイルは、規定値で設定。
1.読み込みファイル保存パスの値設定
2.一時ファイル保存パスの値設定
3.VBスクリプト保存先の値設定
![Sample001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688482/25328dc1-1db1-614b-501f-c61d5405fbe4.png)
4.実行用のVBスクリプト作成（変数の割当／コンバータ）
※サンプルではシート名は固定値（202008）を設定
![Sample001_変数の割当.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688482/82e3229b-482a-978f-f136-76b93c788b00.png)
5.実行用VBスクリプト保存（ファイル出力）
<font color="RED">※ファイルエンコーディングは「日本語(Shift_JIS)を選択</font>
![Sample001_VBスクリプトの保存.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688482/4b20fd9d-5af9-6b1f-eb93-4b8db3046a57.png)
6.コマンド実行（コマンドライン実行）
![Sample001_VBスクリプトの実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688482/f73c81f6-d84a-d3d0-99c3-c7abb6a696de.png)
7.一時保存ファイルを開く（ファイル読込）
![Sample001_一時ファイルを開く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688482/5f2ae62a-e7b0-cacc-71f6-0b4dee017089.png)
以降で、本来のアクションを設定