2023年6月12日月曜日

【VBScript】エクセル内の文字列を置換して、別名ファイル(プレフィックスつけて)で保存

event_note6月 12, 2023
エクセル無いの文字列を置換した後、ファイルを別名で保存します。 保存名は元のファイルの前に指定の文字列を加えられるようになっています。 検索する文字列と、置換後の文字列、ファイル名の前に付ける文字列は 入力ウィンドウで指定します。

 

Option Explicit

Dim objFSO
Dim excelApp, workbook, worksheet
Dim searchStr, replaceStr, prefix
Dim filePath, newFilePath

' ファイルシステムオブジェクトを作成
Set objFSO = CreateObject("Scripting.FileSystemObject")

' プレフィックスを入力
prefix = InputBox("ファイル名に付けるプレフィックスを入力してください")

' 検索置換文字列を入力
searchStr = InputBox("検索する文字列を入力してください")
replaceStr = InputBox("置換する文字列を入力してください")

' エクセルアプリケーションオブジェクトを作成
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = False
excelApp.DisplayAlerts = False ' メッセージを非表示にする


' ドラッグ&ドロップされたファイルの数だけ処理を繰り返す
For Each filePath in WScript.Arguments
    
    ' エクセルファイルを開く
    Set workbook = excelApp.Workbooks.Open(filePath)
    
    ' ドラッグ&ドロップされたエクセルファイル内のシートの数だけ処理を繰り返す
    For Each worksheet In workbook.Sheets
        ' テキストの置換
        worksheet.Cells.Replace searchStr, replaceStr
    Next
    
    ' 別名で保存
    newFilePath = objFSO.GetParentFolderName(filePath) & "\" & prefix & "_" & objFSO.GetFileName(filePath)
    workbook.SaveAs newFilePath
    
    ' エクセルを閉じる
    workbook.Close
    
    ' エクセルアプリケーションを終了
    excelApp.Quit
    
    ' オブジェクトの解放
    Set worksheet = Nothing
    Set workbook = Nothing
Next

excelApp.Visible = True
excelApp.DisplayAlerts = True ' メッセージを非表示にする

Set excelApp = Nothing
Set objFSO = Nothing
Msgbox "置換処理終了"