• ベストアンサー

VBでエクセルを制御したい

始めまして。 VBでアプリを組んでいて、指定のエクセルファイルを 操作したいのですが、うまくいきません。 ファイル指定まではうまくいったのですが、 具体的には、エクセルの指定範囲をソートしたいのですが。 Dim intR, lastR As Long intR = 2 lastR = 1000 sh.Rows(intR & ":" & lastR).Select sh.selection.Sort key1:=range(sh.Cells(intR, 5)), & _ order1:=xlascending, key2:=range(sh.Cells(intR, 1)),& _ order2:=xlascending このようなコードで実行すると、 実行時エラー438 オプジェクトはこのプロパティまたはメソッドを サポートしていません と出ます。やはりエクセルVBAと同様という簡単なものでは ないのでしょうか。 お分かりの方、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

メニュー[プロジェクト]-[参照設定]をクリックして、 Visual Basic For Applications と Microsoft Excel 9.0 Object Library にチェックを入れてください。

funa1119
質問者

お礼

ありがとうございました! 教えていただいたところを確認したところ エラーはなくなり、無事パスしました。助かりましたー! 思えば、 Dim sh as Excel.Worksheet などとしたいところが、入力候補にExcelが出てきてませんでした。 (そこでおかしいと思わなければ、、、、) またお世話になるかとは思いますが、よかったら教えてください。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

参照設定の具合は分かりませんが、 sh.selection. がエラー438を出している気がします。selection. でいいと思います。 また、range(sh.Cells(intR, 5)) も?ですね。Cells(intR, 5) でOK? 2箇所の『,& _』も?です。以上、見ただけの感想です。 sh.Rows(intR & ":" & lastR).Select sh.selection.Sort key1:=range(sh.Cells(intR, 5)), & _ order1:=xlascending, key2:=range(sh.Cells(intR, 1)),& _ order2:=xlascending    ↓ sh.Rows(intR & ":" & lastR).Select selection.Sort key1:=Cells(intR, 5), order1:=xlascending, _         key2:=Cells(intR, 1)),order2:=xlascending

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

まず、shとは? あと、ファイルの指定はどのような方法で行いましたでしょうか? CreateObject() or GetObject()ですか?

関連するQ&A