人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBScriptからExcelを操作し、オートフィルタでデータを抽出する方法を教えてください。


以下のような表を、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に渡すパラメータの渡し方がまずいのか?と思い、
いろいろいじってみたのですが、うまく動きません。


どなたかご教授お願いします。

1206628897
●拡大する

●質問者: hagix
●カテゴリ:コンピュータ 学習・教育
✍キーワード:application Excel Eクラス FIELD HOME
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●35ポイント

objXL.Selection.AutoFilter "Field:=1,Criteria1:=1 ,Operator:=1"

objXL.Selection.AutoFilter Field:=1,Criteria1:=1 ,Operator:="1"

では?

◎質問者からの返答

ご回答ありがとうございます。

試してみたのですが、

エラーとなります。

エラー:ステートメントがありません。

コード:800A0400

と、表示されます。


2 ● haruo-31
●100ポイント ベストアンサー

今手元のExcelでやってみたら、こうなってました。

書いてあるとおりメソッドをプログラムに書いているのなら、ダブルクォートする場所が悪いと思います。

Selection.AutoFilter Field:=2, Criteria1:="5"

あと、オートフィルタする場合は、一番上の行にはラベルを設定しないと、データがラベルとして扱われてほしいデータが取れなくなりますよ。

◎質問者からの返答

ご回答ありがとうございます。

>書いてあるとおりメソッドをプログラムに書いているのなら、ダブルクォートする場所が悪いと思います。

直して実行してみたのですが、

以下のとおり、エラーとなります。

エラー:ステートメントがありません。

コード:800A0400

>あと、オートフィルタする場合は、一番上の行にはラベルを設定しないと、データがラベルとして扱われてほしいデータが取れなくなりますよ。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ