
こんにちは
MS Word 2007から条件に合う語を抜き出してエクセルに貼り付けた後、ソートをするマクロを書いているのですが、ソートの部分で「型が一致しない」というエラーが出てしまい困っています。エクセルのVBAでは問題なく動作しています。
次がエクセルVBAで作ったソートのVBAです。
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:A6")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
これをWord VBAに貼り付けて、一部を変更しました。
myExcel.workbooks(BookName).sheets(1).Sort.SortFields.Clear
myExcel.workbooks(BookName).sheets(1).Sort.SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With myExcel.workbooks(BookName).sheets(1).Sort
.SetRange Range("A1:A6")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
myExcelは事前に作成したExcelオブジェクトです。BookNameは作成したブックのファイル名です。2行目「myExcel.workbooks(BookName).sheets(1).Sort.SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal」でエラーになります。
「型が一致しない」と表示されます。ちょこちょこ書き換えているのですがエラーは解消されません。
Windows 7/8 64bit
Word 2007. Excel 2007
解決策をご存じでしたら教えてください。
No.1ベストアンサー
- 回答日時:
コードの先頭部分がないので見当違いかもしれませんが
実行時バインディングにしているのなら
?xlAscending
1
?xlSortNormal
0
?xlTopToBottom
1
?xlPinYin
1
にそれぞれExcelの定数を変更してみては?
事前バインディングにもかかわらずエラーになる場合は不明です。
この回答への補足
できました!
Range指定のたびに、オブジェクトから書き始めなければならないようです。
myExcel.workbooks(BookName).sheets(1).Sort.SortFields.Add Key:=Range("A1")
ではなく、
myExcel.workbooks(BookName).sheets(1).Sort.SortFields.Add Key:=myExcel.workbooks(BookName).sheets(1).Range("A1")
とするとできました。
参照設定で Microsoft Excel Object Library 12をオンにしていれば、定数が xl~でも大丈夫なようです。参照設定をオフにすると、一部の定数を数値で表さなければならないようです。
英語で調べたらこのサイトがヒットしました。
http://superuser.com/questions/569996/office-200 …
ここではオブジェクトの定義を関数の外にするよう指示していますが、私の場合は関数内のままでもできました。
ありがとうございます。
定数を数値にしましたがダメでした。
そもそもオプションはすべてデフォルトなので、オプション部分をすべて削除した状態で実行しましたが変わりません。
たとえば
myExcel.workbooks(BookName).sheets(1).Range("A1:B2").Select
と書けば、A1:B2がきちんと範囲選択されるので、オブジェクト自体にはちゃんとアクセスできています。Word VBAからだとSortオブジェクトにアクセスできないのでしょうか。
Sort オブジェクト?
あ、ちょっと試したいことが見つかったので試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel_マクロ_現在開いているシートにマクロを実行したいです 1 2023/02/14 23:54
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ワイルドカード「*」を使うとうまくいかないマクロの添削をお願いします 3 2022/03/26 09:39
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
【VBA】ワークブックを開く時に...
-
VBAでfunctionを利用しようとし...
-
String""から型'Double'への変...
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
VBA データ(特定値)のある最...
-
マクロで"#N/A"のエラー行を削...
-
【Access】Excelインポート時に...
-
インポート時のエラー「データ...
-
VBA GoTo Error 処理が上手くい...
-
ACCESSで値を代入できないとは?
-
ASPでこんなエラーが出たんです...
-
オブジェクト型の変数にフォー...
-
HTMLソースが表示のページのも...
-
文字列内で括弧を使うには
-
Excel vbaについての質問
-
レコード登録時に「演算子があ...
-
VBS Script のエラーについてお...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロOn Error GoTo ErrLabel...
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
文字列内で括弧を使うには
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
【Access】Excelインポート時に...
-
VBでSQL文のUPDATE構文を使った...
-
【VB.NET】 パワポ操作を非表示で
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
実行時エラー'-2147467259(8000...
おすすめ情報