• 締切済み

Word2000のVBAでエラーが出ます

VBA初心者です。Word2000上でExcel2000並べ替え用VBAを作成しまが、「名前付き引数が見つかりません」のエラーが出ます。 Sub Sort() Dim objExcel As Excel.Application Dim tmpBook As Excel.Workbook Set objExcel = CreateObject("Excel.Application") Set tmpBook = Workbooks.Open("C:\Dic1.xls") Range("A1:B100").Select Selection.Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Header:=xlGuess, _ OrderCustom:=1, _ MatchCase:=False, _ Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin tmpBook.Close True objExcel.Quit End Sub Excel2000上で同様のマクロを作成すると、正常に動作します。初歩的な質問で申し訳ありませんが、どなたか御教授をお願い致します。

みんなの回答

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

そもそも、Excel上でないのにいきなりWorkbooks、RangeとかSelectionを使っているのが間違い。 Excel上でするのとは違い、ちゃんとどのブックか、どのシートかを指定しないといけません。 WordにはExcelのようなシートなんかないでしょ?省略しないでくださいね。 Set tmpBook = Workbooks.Open("C:\Dic1.xls") の一行は、 Set tmpBook = objExcel.Workbooks.Open("C:\Dic1.xls") という感じにしないと。 簡単ですが。

victoria00
質問者

お礼

お礼が遅くなりました。色々やってみて解決出来ました。 ありがとうございました。

関連するQ&A

  • 記述を簡略化させたい

    お世話になります。 下記の記述をスマートにさせたいのですが、ご教示お願いします。         記 Sub 優先順位() Range("A16:Y25").Select Selection.Sort Key1:=Range("Y16"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A43:Y52").Select Selection.Sort Key1:=Range("Y43"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A70:Y79").Select Selection.Sort Key1:=Range("Y70"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A97:Y106").Select Selection.Sort Key1:=Range("Y97"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A16").Select End Sub

  • エクセルマクロのソートについて

    こんにちわ! エクセルマクロのソートについて質問です。 プロシャージャを使ってソート使いまわそうと思うのですが、範囲、並び替えキーを変えたいと思うのですが可能でしょうか? Sub Sort()    Range("A1:c10000").Sort _ Key1:=Range("a1") , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End Sub 一応、動作はしませんが下記のようなイメージで動かしたいです。 Sub Sort() Dim key As String Dim hanni As String key = Range("a1") hanni = Range("A1:c10000") 'セルhanniの範囲のデータをkey列をキーに昇順に並べ替えます hanni.Sort _ Key1:=key _ , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End Sub 可能でしょうか? わかる方おりましたらアドバイスの程お願いします。

  • エクセルのVBAソートについて

    はじめましてm(__)m 昇順ソートで「0」を覗いてソートをかける方法をお教え頂けないでしょうか? 現在、下記方法でソートしております。 どうぞ宜しくお願い致します。 Sub J列目() Range("A9:L65536").Sort _ Key1:=Range("J9") _ , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End Sub

  • エクセル VBA 集計方法

    各シート毎に下記の内容にて集計をしたいのですが、A2のセルにデータがない場合集計をしない方法がわからないのでご存じの方宜しくお願い致します。 Sheets("Sheet1").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet2").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet3").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True End Sub

  • 【VBAでソートを実行したい】

    ExcelVBAでオブジェクトを設定し、ソートを実行したいのですが、エラーになってしまいます。 ロジックは下記のようにしていますが、問題の箇所はマクロの記録でコピーしたものです。 オブジェクトとして実行しているので、エラーになるのでしょうか? どなたか分かる方、回答をお願いいたします。 dim goBook As Object Set goBook = CreateObject("Excel.Application") 'セルをクリアする goBook.Cells.Clear goBook.Range("A1").Select 'ソート実行 goBook.Columns("A:A").Select ''//このロジックでエラーになります↓ goBook.Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin

  • VBA ファイルを読み込む際のSortメソッドの使い方

    tabで区切られたテキストファイルを読み込み、日時の列を昇順で並び替える処理をしようとしました。 sortメソッドを使って並び変えようとしましたが、上手くいきません。。 既に開いているエクセル上では簡単なsortメソッドを使って並び替えはできました。↓のようなマクロ記録を使って。 Range("A1:A11").Select Range("A1:C11").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin,DataOption1:=xlSortNormal ファイルを読み込んで、sortメソッドを使うには何か特別な方法があるのでしょうか?どなたか教えて下さい。よろしくお願いします。

  • EXCEL VBA ソートにおいて

    EXCEL 2003 のVBAのsortにおいて、解決できなくて困って おります。 名前,色,産地,品質,味,値段,重さ, りんご,赤,青森,10,10,500,100 みかん,黄,和歌山,10,10,300,50 すいか,緑,群馬,10,8,2000,1000 メロン,黄緑,青森,10,8,2500,500 いちじく,赤,鹿児島,8,8,200,100 名前、品質、値段の順に並びかえたいと思い、 excelのVBAの記録でオートフィルタ後に 並び替えを行ったところ下記のコードが記録されました。 Sub Macro28() Cells.Select Selection.AutoFilter Selection.Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Key2:=Range("D2"), Order2:=xlAscending, _ Key3:=Range("F2"), Order3:=xlAscending, _ Header:=xlYes, OrderCustom:=1, _ MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, _ DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal, _ DataOption3:=xlSortNormal end sub ところが、これをオブジェクトのマクロに使用して(2,3行目を自分の使い たいように訂正)みると作動しません。 Private Sub CommandButton1_Click() worksheets(1).Select Selection.AutoFilter Selection.Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Key2:=Range("D2"), Order2:=xlAscending, _ Key3:=Range("F2"), Order3:=xlAscending, _ Header:=xlYes, OrderCustom:=1, _ MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal, DataOption3:=xlSortNormal End Sub watch 式では 3行目までは worksheets(1).Select = TRUE ですし Selection.AutoFilter = TRUE となっているのですが、 sortの反応が分からない状況です。 Selection.Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Key2:=Range("D2"), Order2:=xlAscending, _ Key3:=Range("F2"), Order3:=xlAscending, _ Header:=xlYes, OrderCustom:=1, _ MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal, DataOption3:=xlSortNormal この部分が問題なのかと考えております。 ネットで調べて worksheets(1).RANGE("A1:G6").Select Selection.sort…… とか worksheets(1).RANGE("A1:G6").sort とかも試してみたのですが、だめでした。 sort を使用するときにselectionとの相性や、 rangeとの兼ね合いで決まり等があるのでしょうか。 色々なサイトを回ってはいるのですが、ちょっと解決 にいたることができません。 どなたか、ご教授いただけると幸いです。

  • VBA 列の並べ替えについて

    以下のようなコードを考えています。 (1)セルA2からO10を選択する。 (2)最優先するキーをD列として(昇順)、(1)を並べ替える。 (3)印刷する。 (4)(1)の並びに戻す。((2)で並べ替えする前の状態にする) マクロ記録から以下のコードは分かりましたが、続きが分かりません。よろしくお願いします。 Sub test() Range("A2:O10").Select Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, _   Header:=xlGuess ,OrderCustom:=1,Orientation:=xlTopToBottom,_ SortMethod:=xlPinYin Selection.PrintOut Copies:=1, Collate:=True End Sub

  • EXCEL2000 複数行のソート方法について

    EXCEL2000 複数行のソート方法について教えて下さい。 EXCELのVBA(マクロ)にて、シート上の複数行をソートしたいと考えています。 エクセル上では、3つの行に対してソートができるのは知っています。 その操作をマクロに記録して、そのVBAを変更して5つの行に対して ソートを一括で行おうとしたのですが、エラーとなってしまいました。。。 以下が記録したVBAです =================================================================== Selection.Sort Key1:=Range("C15"), order1:=xlAscending, _ key2:=Range("G15"), order2:=xlAscending, key3:=Range("h15"), order3:=xlAscending, _ header:=xlGuess, ordercustom:=1, MatchCase:=False, Orientation:= _ xlTopToBottom, sortmethod:=xlPinYin =================================================================== このVBAを変更して3つ以上の行に対して一括でソートは出来るでしょうか? この方法ではやはり無理でしょうか? VBAを2つに分けてやる方法は最後の策だと考えています。 それ以前に2つに分けて出来るのか分からないのですが。。。 知恵をかして下さい。宜しくお願い致します。

  • VBAでのエラー(新しいマクロの記録)

    新しいマクロの記録で、work1にてソート等を行って、 新しいマクロ(ソート等)を作成しました。 このマクロは単体で正常に動作するのですが、 sheet1の別のマクロにカット&ペーストで追加し、 動作させたところエラーになってしまいました。 パス的な問題だと思いますが、いまいち理解できません。 以下、ソートの中身 Sheets("work1").Select Columns("A:H").Select Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _ , Order2:=xlAscending, Key3:=Range("F2"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _ xlSortNormal, DataOption3:=xlSortNormal

専門家に質問してみよう