SAS(統計プログラミングソフトウェア)からExcelファイルをリモートで操作できるように、VBAでプログラムを作成しようとしています。プログラムで次のことを達成したい:
- 指定したエクセルファイルを開く
- ヘッダー行のすべての空白を見つけて何もないものに置き換えます (たとえば、"Test Name" は "TestName" になります)。
- 行の最初のセル (つまり、A2) が空白の場合、2 行目を削除します
- ファイルをcsvとして保存します
私は VBA を知りませんが、少し手を出したことがあり、他のプログラミング言語をいくつか知っていて、これをつなぎ合わせようとしました。1 と 4 を機能させるためにコードを盗みました。2 と 3 が機能しません。これは私が持っているものです:
vbaプログラムを呼び出すために、SASに次を入れました-
x 'cd C:\Location';/*change to location of VBS file*/
x "vbsprogram.vbs inputfile.xls outputfile.csv";
VBA プログラム -
'1 - Open the specified excel file
if WScript.Arguments.Count < 2 Then
WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
'2 - Find and Replace
oBook.Worksheets(1).Range("A1:G1").Select
Selection.Replace What:="* *", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
'3 - Delete second row if blank
oBook.Cell("A2").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'4 - Save as csv
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"
私を正しい方向に向ける助けがあれば、大歓迎です。
また、行1のすべてのデータを範囲として選択し(パート2)、セルの範囲を指定する必要がない方法はありますか?