• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WSHでExcelをCSV出力)

WSHでExcelをCSV出力

このQ&Aのポイント
  • WSHを使用してExcelをCSV形式で出力する方法について質問です。
  • 現在、ExcelをCSV形式で出力することができていますが、指定した範囲のデータを簡単に出力する方法を知りたいです。
  • 例えば、C~Zの行の5行目から存在する全てのデータを出力する際にどのように実装すれば良いか教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

Excelが手元にないのでソースは提示出来ませんが、 出力したい範囲を新しいワークシートにコピーして、そのワークシートをCSV出力すればいいのではないでしょうか?

takashi_it
質問者

補足

これで動きました↓ ファイ名:ExcelToCSV.vbs ' ------------------------------------------------------------------------------ ' 名称:ExcelToCSV ' 概要:ExcelからCSVに出力する ' :CSVに出力する範囲指定が出来る ' 引数1:投入Excel名 ' 引数2:出力CSV名 ' 引数1:範囲スタート列(A~IV) ' 引数1:範囲スタート行(1~65535) ' 引数1:範囲エンド列(A~IV) ' 使用例:ExcelToCSV.vbs 入力.xls 出力.csv B 5 C ' ------------------------------------------------------------------------------ '内部変数 Dim objXL Dim RangeStr '引数 Dim InPath Dim OutPath Dim RangeStartClm Dim RangeStartRow Dim RangeEndClm '引数Check If WScript.Arguments.Count < 5 Then MsgBox "usage: wscript ExcelToCSV.vbs 投入Excel名 出力CSV名 範囲スタート列 範囲スタート行 範囲エンド列" WScript.Quit End If '引数を格納 Path = Replace(WScript.ScriptFullName,WScript.ScriptName,Trim(WScript.Arguments(0))) OutPath = Replace(WScript.ScriptFullName,WScript.ScriptName,Trim(WScript.Arguments(1))) RangeStartClm = Trim(WScript.Arguments(2)) RangeStartRow = Trim(WScript.Arguments(3)) RangeEndClm = Trim(WScript.Arguments(4)) '引数からコピーするレンジを作成  例 ⇒ "C5:E65536" RangeStr = RangeStartClm & RangeStartRow & ":" & RangeEndClm & "65536" 'ExcelからCSVを作成 Set objXL=CreateObject("Excel.Application") objXL.DisplayAlerts=False objXL.Workbooks.Open Path,,True objXL.Worksheets(1).Range(RangeStr).Copy objXL.Worksheets.Add objXL.Worksheets(1).Range("A1").Select objXL.ActiveSheet.Paste objXL.Worksheets(1).SaveAs OutPath, 6 objXL.ActiveWorkBook.Close objXL.Quit 'Scriptの終了 WScript.Quit

関連するQ&A