プロが教える店舗&オフィスのセキュリティ対策術

c:\a01.xls という名前のエクセルファイルがあり、sheet1、sheet2、sheet3 というシートの構成とします。それぞれのシートには何件かの入力があるとします。

この エクセルファイルから Sheet2 の シートのデータを c:\csv01.csv にCSV出力するには どのような test.vbs を作成したらよいのでしょうか?

教えてください。

A 回答 (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
    • good
    • 0
この回答へのお礼

 みなさんの 回答を 参考に

 このような感じで 作成しました。



////////////////////////////////////////////
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
/////////////////////////////////////////////

お礼日時:2005/07/14 13:51

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!