VBScriptで一太郎をExcelに変換する

環境　windows10
　　　一太郎Pro2

#やりたいこと
　一太郎をHTML形式で保存して、そのHTMLファイルをExcelから開けば、罫線表をExcelにできます。
https://www.ichitaro.com/tech/0305/n_178.html
(一太郎マル秘テク)
<img width="900" alt="2020-06-27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622636/da4720e7-02cb-f068-87ca-b187780e446d.png">
　手動でならこうです。HTMLファイル(標準のwebエンジンのアイコンになります)は，Excelから開くことができます。
<img width="900" alt="2020-06-27 (2).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622636/de7316ea-c94b-c8cb-1036-eb5a9e80f918.png">

　これを誰でもすぐにできるようにVBScriptにしました。
#コード
```vb:VBScript

Option Explicit
Dim taroFilePath
    If Wscript.arguments.Count = 0 Then
        MsgBox "Excelに変換したい一太郎ファイルをドラッグ＆ドロップしてください"
        Wscript.Quit
    Else
        taroFilePath = Wscript.arguments(0)
    End If
Dim taro
Set taro = CreateObject("JXW.Application")
Dim withoutExtensionPath
withoutExtensionPath = Split(taroFilePath, ".")(0)
taro.Documents.Open (taroFilePath)
taro.TaroLibrary.SaveDocumentAsHTML (withoutExtensionPath & ".html")

Dim excel
Set excel = CreateObject("Excel.Application")
excel.Visible = True
excel.Workbooks.Open withoutExtensionPath & ".html"
MsgBox "編集後，ファイルの種類を「Excelブック(*.xlsx)」にして保存してください"
taro.TaroLibrary.CloseDocumentWindow()
MsgBox "一太郎の空のウインドウを閉じてください"
```
　Excelとして保存後、残ったhtmlファイルは削除してください。
<img width="900" alt="2020-06-27 (1).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622636/4b1da707-6205-abca-4e6d-cb178f4bc902.png">
　文字コードを標準のUTF-8で保存すると，VBScriptのメッセージが文字化けするので，ANSIに変更して保存します。
#VBSでドラッグ＆ドロップ実行
　ドラッグ＆ドロップで動かすときは，ダブルクリックで実行したときにドラッグ＆ドロップで実行することをメッセージで出すと親切です。
　いかに説明文で「ドラッグ＆ドロップで実行」と書いていても，条件反射でダブルクリックしてしまうものです。

```vb:VBScript
    If Wscript.arguments.Count = 0 Then
        MsgBox "Excelに変換したい一太郎ファイルをドラッグ＆ドロップしてください"
        Wscript.Quit
    Else
        taroFilePath = Wscript.arguments(0)
    End If
```
　ダブルクリックされたか，ファイルをドラッグ＆ドロップされたか判定するには，Wscript.arguments.Countを使います。
　ドラッグ＆ドロップされると，そのファイルの絶対パスがWscript.argumentsに配列の引数として渡されてスクリプトが実行されます。その数が0であれば，引数なし，つまり，ダブルクリック実行と判断できるのです。

#一太郎をVBScriptから操作する
```vb:VBScript
Dim taro
Set taro = CreateObject("JXW.Application")
Dim withoutExtensionPath
withoutExtensionPath = Split(taroFilePath, ".")(0)
taro.Documents.Open (taroFilePath)
taro.TaroLibrary.SaveDocumentAsHTML (withoutExtensionPath & ".html")
```

　一太郎SuperPlayRiteを別言語から扱う方法は，マクロバイザーの付録タブ，「他社環境での動作」ファイルが手がかりになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622636/c9a745b0-62eb-4910-4d10-59f6bdec339c.png)
　もちろん，『一太郎8 for Windows95/NT マクロリファレンス』にも載っております。一太郎SuperPlayRiteの本の入手方法等につては以前まとめましたのでそちらをご覧ください。
https://qiita.com/harryyuni/items/61166bc490332c06bd51
　ただ，一太郎8より後に追加された機能・関数（HTML保存がそうです）については，本に載っていません。その場合は，手作業で機能を使ってみた上で，それらしい関数をマクロバイザーで探し，説明を読み，『一太郎8 for Windows95/NT マクロリファレンス』に載っているよく似た関数の解説から動作を推測し，使うしかありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/622636/8990c420-f03e-7108-8c5c-2a061dd38ca7.png)
　古文書の解読のようではありますが，今回はただ保存するだけなので成功しました。

#なぜ一太郎をExcelにするのか
　一太郎の罫線表は文字の改行に合わせて行幅が広がることからベタ打ちしやすく、Excelのように印刷時に文字が切れることもありません。
　単純に、単発の表をゼロから作るだけなら、一太郎の方が楽なのです。
　ただ、毎回同じ形式の書類を作るのに一太郎が適しているかというのは別問題で、Excelに落とし込めば関数やマクロを駆使して別シートに反映、転記するなどして効率化できることがままあります。そんなとき，書式をExcelに落とし込むのに使ってみてください。