
No.2ベストアンサー
- 回答日時:
一応、作ってみましたが、以下は、自分用に作ったものですから、あえて、
「c:\a01.xls を c:\csv01.csv にする、」
という規則には従いませんでした。もし、必要でしたら、以下のコード直してください。確か、全角空白は、エラーの原因になるという話を聞いたことがありますので、入れていません。
この使い方は、エキスプローラ等から、Excelのファイルをこのファイル(.vbs)にドラッグ&ドロップすると、シート番号を聞いてきますので、入れてください。
ファイル名は、例えば、「c:\a01.xls」でしたら、最初は、「c:\a01.csv」となり、同じものを、ドラッグ&ドロップすると、c:\a011.csv → c:\a012.csv となっていきます。
'ExcelCsvOut.vbs
'05/05/04
Dim objFso
Dim Fname
Dim myBaseName
Dim NewMyBaseName
Dim myPath
Set objFso = CreateObject("Scripting.FileSystemObject")
Fname = WScript.Arguments.Item(0)
If objFso.GetExtensionName(Fname) <> "xls" Then
MsgBox "Excelのファイルではないようです", 64
Wscript.Quit
End If
ShNum = InputBox ("シート番号","シート番号の入力")
If ShNum =0 or ShNum ="" Then
Msgbox "入力が間違っています。",16
Wscript.Quit
End if
'
myPath = objFso.GetParentFolderName(Fname)
myBaseName = objFso.GetBaseName(Fname)
NewMyBaseName = myBaseName
'
Do
flg =objFso.FileExists(myPath & "\" & NewMyBaseName & ".csv")
If flg = True Then
NewMyBaseName = myBaseName & i
Else
Exit Do
End if
i = Clng(i) + 1
Loop
Set objExcel = Wscript.CreateObject("Excel.Application")
On Error Resume Next
With objExcel
.WorkBooks.Open Fname
With .ActiveWorkbook
If .Sheets.Count <= Clng(ShNum) Then
MsgBox ShNum &" は、シートインデックスには見つかりません。",16
Else
.Sheets(Clng(ShNum)).Select
.SaveAs NewMyBaseName & ".csv", 6
.Close False
End If
End wiTh
End With
If Err.Number = 0 Then
MsgBox myPath & NewMyBaseName &".csv" &" を出力しました。"
Else
MsgBox Err.Description
End if
Set objExcel = Nothing
Set objFso = Nothing
みなさんの 回答を 参考に
このような感じで 作成しました。
////////////////////////////////////////////
rem エクセルデータ を CSVで 保存
Dim para
Dim xlApp
Dim sheet
rem パラメータ セット
rem 0: エクセルファイル
rem 1: 出力シート名
rem 2: 出力ファイル名
Set para = WScript.Arguments
Set xlApp = CreateObject( "Excel.Application" )
xlApp.DisplayAlerts = False
xlApp.Workbooks.Open ( para.item( 0 ) )
Set sheet = xlApp.ActiveWorkBook.Worksheets( para.item( 1 ) )
rem カンマ区切り 6 タブ 3
sheet.SaveAs para.item( 2 ), 6
xlApp.ActiveWorkBook.Close
Set xlApp = Nothing
/////////////////////////////////////////////
No.1
- 回答日時:
const xlCSV = 6
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = false
objExcel.Workbooks.Open("c:\a01.xls")
objExcel.Sheets("Sheet2").Select
objExcel.ActiveWorkbook.SaveAs "c:\csv01.csv", xlCSV
objExcel.ActiveWorkbook.Close false
objExcel.Workbooks.Close
Set objExcel = nothing
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
【マクロ】並び替えの範囲が、...
-
vba textboxへの入力について教...
-
ワードの図形にマクロを登録で...
-
エクエルのVBAコードについて教...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Excel VBA 選択範囲の罫線色の...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】開いているブックの...
-
えくせるのVBAコードについて教...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
-
【ExcelVBA】5万行以上のデー...
-
VBA ユーザーフォーム ボタンク...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
【ExcelVBA】300万件越えCSVか...
-
Excelマクロ 空白セルを無視し...
-
LibreOffice Calcのマクロで、...
-
ファイル名を変数で書きこむfwr...
-
シート内容の文字列を置換してV...
-
EXCEL→CSV保存時のダブルクォー...
-
バッチファイルでcsvファイルに...
-
VBAで文字列を引数とするアドイ...
-
VBScript等で、CSV内の各文字列...
-
pythonによるcsv出力がうまくい...
-
VB.netでShellExecuteがしたい
-
IPアドレスのゼロパディング
-
CSVファイルの比較と結果の取得...
-
パイソン文法で ファイルオープ...
-
fortranでデータの抜き出しをし...
-
pythonのこのエラーがわかりません
-
pythonでリストをCSVに出力する...
-
FileListBoxで出すものを絞り込...
おすすめ情報