以下のような表を、Excelに作成しております。
| A | B | C
--------------------------------------------------
1| 1 | 2 | 3
--------------------------------------------------
2| 4 | 5 | 6
--------------------------------------------------
2| 7 | 8 | 9
このExcel表を、VBScriptからAutofilterを設定し、値を抽出させたいと思っております。
作成したVBScriptは以下の通りです。
Dim objXL
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Workbooks.Open "D:\home\vbs\0301-0305.xls"
objXL.Visible = true
objXL.ActiveSheet.Select
objXL.Range("A2").Select
objXL.Selection.AutoFilter
objXL.Selection.AutoFilter "Field:=1,Criteria1:=1 ,Operator:=1"
実行したところ、以下のようなエラーが出ます。
エラー:RangeクラスのAutoFilterメソッドが失敗しました。
コード:800A03EC
AutoFilterに渡すパラメータの渡し方がまずいのか?と思い、
いろいろいじってみたのですが、うまく動きません。
どなたかご教授お願いします。
今手元のExcelでやってみたら、こうなってました。
書いてあるとおりメソッドをプログラムに書いているのなら、ダブルクォートする場所が悪いと思います。
Selection.AutoFilter Field:=2, Criteria1:="5"
あと、オートフィルタする場合は、一番上の行にはラベルを設定しないと、データがラベルとして扱われてほしいデータが取れなくなりますよ。
objXL.Selection.AutoFilter "Field:=1,Criteria1:=1 ,Operator:=1"
は
objXL.Selection.AutoFilter Field:=1,Criteria1:=1 ,Operator:="1"
では?
ご回答ありがとうございます。
試してみたのですが、
エラーとなります。
エラー:ステートメントがありません。
コード:800A0400
と、表示されます。
今手元のExcelでやってみたら、こうなってました。
書いてあるとおりメソッドをプログラムに書いているのなら、ダブルクォートする場所が悪いと思います。
Selection.AutoFilter Field:=2, Criteria1:="5"
あと、オートフィルタする場合は、一番上の行にはラベルを設定しないと、データがラベルとして扱われてほしいデータが取れなくなりますよ。
ご回答ありがとうございます。
>書いてあるとおりメソッドをプログラムに書いているのなら、ダブルクォートする場所が悪いと思います。
直して実行してみたのですが、
以下のとおり、エラーとなります。
エラー:ステートメントがありません。
コード:800A0400
>あと、オートフィルタする場合は、一番上の行にはラベルを設定しないと、データがラベルとして扱われてほしいデータが取れなくなりますよ。
ありがとうございました。
ご回答ありがとうございます。
>書いてあるとおりメソッドをプログラムに書いているのなら、ダブルクォートする場所が悪いと思います。
直して実行してみたのですが、
以下のとおり、エラーとなります。
エラー:ステートメントがありません。
コード:800A0400
>あと、オートフィルタする場合は、一番上の行にはラベルを設定しないと、データがラベルとして扱われてほしいデータが取れなくなりますよ。
ありがとうございました。