## Wordで見出しの一覧からフォルダとファイルを作成するシェルスクリプトの文字列をファイルに書き出すVBA
Sub 見出しのディレクトリーを作成() Dim par As Paragraph Dim title As String Dim lv1 As String Dim lv2 As String Dim lv3 As String Dim lv4 As String Dim i As Integer i = 1 Dim datFile As String Const F_PATH = "\\wsl$\Ubuntu\home\myhome\word_list.txt" ' 出力ファイルのフルパス Dim f_num As Integer ' ファイル番号 f_num = FreeFile Open F_PATH For Output As f_num For Each par In ActiveDocument.Paragraphs If par.OutlineLevel <> wdOutlineLevelBodyText Then Select Case par.OutlineLevel Case 1 i = i + 1 Case 2 i = i + 1 Case 3 i = i + 1 Case 4 i = i + 1 Case Else 'MsgBox "入力が不正です" End Select End If Next par Dim max As Integer max = i i = 0 Dim entryies() As String ReDim entryies(max) MsgBox max For Each par In ActiveDocument.Paragraphs If par.OutlineLevel <> wdOutlineLevelBodyText Then title = Replace(par.Range.Text, vbCr, "") If par.OutlineLevel = 1 Then lv1 = title End If If par.OutlineLevel = 2 Then lv2 = title End If If par.OutlineLevel = 3 Then lv3 = title End If If par.OutlineLevel = 4 Then lv4 = title End If Select Case par.OutlineLevel Case 1 i = i + 1 entryies(i) = "mkdir -p " & lv1 Case 2 i = i + 1 entryies(i) = "mkdir -p " & lv1 & "/" & lv2 Case 3 i = i + 1 entryies(i) = "mkdir -p " & lv1 & "/" & lv2 & "/" & lv3 Case 4 i = i + 1 entryies(i) = "if [ ! -s """ & lv1 & "/" & lv2 & "/" & lv3 & "/" & lv4 & ".md" & """ ]; then touch " & lv1 & "/" & lv2 & "/" & lv3 & "/" & lv4 & ".md" & "; fi" Case Else 'MsgBox "入力が不正です" End Select 'Selection.TypeText par.OutlineLevel & title & vbCr End If Next par For i = 0 To max 'Selection.TypeText Var Print #f_num, entryies(i) Debug.Print ">>" & entryies(i) Next i Close #f_num End Sub
作成されたファイルの一部:
```
[1995] % tail ~/word_list.txt
mkdir -p 被告発人らの犯罪事実(共謀・共犯関係)/被告発人岡田進弁護士(金沢弁護士会)
mkdir -p 被告発人らの犯罪事実(共謀・共犯関係)/被告発人木梨松嗣(金沢弁護士会)
mkdir -p 被告発人らの犯罪事実(共謀・共犯関係)/被告発人長谷川紘之弁護士(金沢弁護士会)
mkdir -p 被告発人らの犯罪事実(共謀・共犯関係)/被告発人若杉幸平弁護士(金沢弁護士会)
mkdir -p 被告発人らの犯罪事実(共謀・共犯関係)/被告発人小島裕史裁判長(平成5年当時の名古屋高裁金沢支部裁判長)
mkdir -p 情報公開のご説明及び参考資料
mkdir -p 情報公開のご説明及び参考資料/書面の作成環境(プラットホーム)
mkdir -p 情報公開のご説明及び参考資料/書面の作成環境(プラットホーム)/Windows10
if [ ! -s "情報公開のご説明及び参考資料/書面の作成環境(プラットホーム)/Windows10/Wordでのアウトラインの作成と,VBAによる対応したフォルダ,ファイルの作成.md" ]; then touch 情報公開のご説明及び参考資料/書面の作
成環境(プラットホーム)/Windows10/Wordでのアウトラインの作成と,VBAによる対応したフォルダ,ファイルの作成.md; fi
```
WSLのLinux環境に合わせ文字コードと改行コードを変換:
% nkf --overwrite -w -Lu ~/word_list.txt