【ExcelVBA】エクセルの表にある内容でシェルファイルを生成するマクロ
Excel VBAを使用して各行の内容をシェルファイルとして保存し、フォルダを作成するプロセスは以下のステップで行うことができます。
Excel内のデータを読み込む。
シェルファイルとして保存する内容を生成する。
フォルダを作成する。
各行の内容を個別のシェルファイルとしてそのフォルダに保存する。
以下はこのプロセスを実装するVBAの例です。
Sub SaveRowsAsShellScripts()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' 対象のシート名に変更してください
Dim targetFolder As String
targetFolder = "C:\YourFolderPath" ' 保存するフォルダパスに変更してください
' フォルダが存在しない場合は作成
If Not FileSystem.Dir(targetFolder, vbDirectory) <> vbNullString Then
FileSystem.MkDir targetFolder
End If
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' 最後の行を取得
Dim i As Long
For i = 1 To lastRow
Dim content As String
content = ws.Cells(i, 1).Value ' 1列目の値を読み込む、別の列が必要な場合は適宜変更
' シェルスクリプトファイルとして保存
Dim filePath As String
filePath = targetFolder & "\script_" & i & ".sh"
Dim fileNo As Integer
fileNo = FreeFile()
Open filePath For Output As #fileNo
Print #fileNo, "#!/bin/bash" & vbLf & vbLf & content;
Close #fileNo
Next i
End Sub
文字コード問題は、 CreateObject("ADODB.Stream")をつかわないといけない
Sub WriteTextFileUtf8(filePath As String, textData As String)
Dim stream As Object
Set stream = CreateObject("ADODB.Stream")
' ストリームの設定
With stream
.Type = 2 ' テキストデータのタイプ
.Charset = "UTF-8" ' UTF-8エンコーディングを使用
.Open ' ストリームを開く
.WriteText textData ' テキストデータを書き込む
' ファイルに保存
.SaveToFile filePath, 2 ' 2は上書き保存の意味
.Close ' ストリームを閉じる
End With
Set stream = Nothing
End Sub
ただし、シェルはUTF-8では動かず、AscIIで動いているようなのでこの対応は不要だった
この記事が気に入ったらサポートをしてみませんか?