dポイントプレゼントキャンペーン実施中!

VBSでソート処理を行っています。
Excel2007以上の環境では、正常に動作したのですがExcel2003環境では
どうもうまく動きません。
とても困っています。
ご教示いただけないでしょうか。


'ソート処理
'// エクセルオブジェクトを使用して実行
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Workbooks.Open "C:\test.csv"

objXL.ActiveSheet.Sort.SortFields.Clear
objXL.ActiveSheet.Range("A1:M" & iLine).Sort objXL.ActiveSheet.Range("K1"), , , , , , , 0, 1, False, 1, 1, 0
objXL.ActiveSheet.Sort.SetRange objXL.ActiveSheet.Range("A1:O5000")
objXL.ActiveSheet.Sort.Header = 1
objXL.ActiveSheet.Sort.MatchCase = 0
objXL.ActiveSheet.Sort.Orientation = 1
objXL.ActiveSheet.Sort.Apply

Excel2003では、「Clear」がサポートされていないようで、
その処理を抜いて実行してみましたが、「438のエラー」が表示されてしまいます。

根本から理解できておらず申し訳ありません

どうぞよろしくお願いいたします。

A 回答 (1件)

SortオブジェクトはExcel2007で追加されたものだとのことです。


http://msdn.microsoft.com/ja-jp/library/office/f …
http://officetanaka.net/excel/vba/tips/tips148.htm
つまり、Excel2003にはSortオブジェクトはないということのようです。
そのため、質問者様のコードをExcel2003で実行すると、
objXL.ActiveSheet.Sort.
で始まる行はすべてエラーになると思われます。

かわりにRange.Sortメソッドを使ってください。
http://msdn.microsoft.com/ja-jp/library/office/f …
それで対応できなければオートフィルタを使ったりVBAで書いたりしなければならないと思います。

それを踏まえて質問者様のコードを見ると、Range.SortメソッドとSortオブジェクトのApplyメソッドの両方が書いてありますね。2回ソートしているということでしょうか。

以上いかがでしょうか。さらに解説が必要であればその旨補足ください。

参考URL:http://msdn.microsoft.com/ja-jp/library/office/f …
    • good
    • 0
この回答へのお礼

ご回答いただきましてありがとうございます。

Range.Sortメソッドのみで正常に動作しました。

2回ソートしている、ご指摘をありがとうございました。
Excel2003と2007で使えるメソッドがかなり違うことがわかりました。
どうもありがとうございました。

お礼日時:2013/09/12 12:13

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

このQ&Aを見た人はこんなQ&Aも見ています