Excelを規定した列ごとに折り返すツール。
データのダンプをExcelに貼り付けて保存する場合に項目数が多いと
印刷時に改ページされて印刷枚数が増えるので、折り返して印刷枚数を減らすのを目的に作成。
'-------------------------------------------------------------------------------------- ' ' Excel 折り返しツール ' (指定ファイルを定義した列数ごとに折り返す) ' ' 注意点 スクリプト実行前にすべてのExcelアプリケーションを終了してください。 ' スクリプト実行中はマウス、キーボードを使用しないでください。 ' このスクリプトが異常終了した場合はExcelのプロセスを手動で終了してください。 ' データは1行目から入力してください。 ' '-------------------------------------------------------------------------------------- 'パラメータの受取(ファイルのドラッグ&ドロップで可) If WScript.Arguments.Count > 0 Then targetPath = WScript.Arguments(0) End if 'パラメータがない場合、ダイアログで入力を促す if targetPath = "" then targetPath = InputBox("処理対象のファイルを入力","ファイルの指定","") end if if targetPath = "" then msgbox "出力を中止しました。" else Const MAX_COLUMN = 10 '折り返しを行う列数 Const EXCEL_EXT = ".xls" '拡張子 Set Excel = CreateObject("Excel.Application") Set wkBook = Excel.WorkBooks.Open(targetPath) '最後のシートまでループ For wkSheetCnt = 1 To wkBook.Sheets.Count Set xlsSheet = wkBook.WorkSheets(wkSheetCnt) Call DumpFormat(xlsSheet) Set xlsSheet = Nothing Next 'ファイルを別名で保存 wkBook.SaveAs replace(targetPath,EXCEL_EXT,"") & "_format" & EXCEL_EXT 'Excelを終了する。 wkBook.Close Excel.Quit msgbox "出力を完了しました。" end if function DumpFormat(xlsSheet) Dim wkRow Dim wkDataCnt Const xlCellTypeLastCell = 11 xlsSheet.Activate wkRow = 1 wkDataCnt = xlsSheet.Cells.SpecialCells(xlCellTypeLastCell).Row For i = 1 To 256 Step MAX_COLUMN IF xlsSheet.Cells(1,i) <> "" AND i > 1 THEN wkRow = wkRow + wkDataCnt + 1 xlsSheet.Range(xlsSheet.Cells(1,i),xlsSheet.Cells(wkDataCnt,i + MAX_COLUMN -1)).Cut xlsSheet.Range(xlsSheet.Cells(wkRow,1),xlsSheet.Cells(wkRow,1)).Select xlsSheet.Paste END IF Next end function
動作確認環境:Excel 2007,Window XP sp2