[[20091227224357]] 『VBSからエクセルのソート機能を使いたい』(さよなら西鶴またきて近松) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBSからエクセルのソート機能を使いたい』(さよなら西鶴またきて近松)
 こんばんは。よろしくお願いいたします。

 最終的にはVBSに移植するのですが、ソートの記述でエラーが起きています。
 下記のコードの「ここでエラー」の部分がエラーになります。

 実行時エラー'1004'
 参照が正しくありません。

 というエラーです。

 Sub TEST()
 Dim xl As Object
 Dim wb As Workbook
 Dim ws As Worksheet
 Dim i As Integer
 Dim j As Integer
 Dim r As Range
  Set xl = CreateObject("Excel.Application")
  xl.Visible = True
  'xl.ScreenUpdating = False
  Set wb = xl.Workbooks.Add
  Set ws = wb.Worksheets(1)
  For i = 1 To 20
   For j = 1 To 5
    ws.Cells(i, j).Value = i * j
   Next
  Next
  'Set r = ws.Range(ws.Cells(1, 1), ws.Cells(20, 5))
  Set r = ws.Cells(1, 1).Resize(20, 5)
  r.Sort ws.Cells(1, 1), 2, 0, 1, False, 1, 1, 0 'ここでエラー
  'xl.ScreenUpdating = True
  Set ws = Nothing
  Set wb = Nothing
  Set xl = Nothing
 End Sub

 ソート作業をマクロの自動記録し、オブジェクトブラウザで引数の数値を確認して
 置き換えました。

 '自動記録マクロ
     Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
         OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
         :=xlPinYin, DataOption1:=xlSortNormal

 最終的には、VBSでエクセルオブジェクトを生成し、テキストファイルを読み込んでソート、
 ソート後のものを新規テキストファイルに書き出し、ということをしようと考えています。
 それでVBSからソート作業を行わせようとしています。

 エラー箇所をどのように書き直せばいいでしょうか?
 ご教示お願いいたします。

 > 参照が正しくありません。

 r.Sort ws.Cells(1, 1), 2, , , , , , 0, 1, False, 1, 1, 0
 ではないでしょうか?

 (VBAメンテ担当)


 VBAメンテ担当さん、ご回答ありがとうございます。

 >r.Sort ws.Cells(1, 1), 2, , , , , , 0, 1, False, 1, 1, 0

 第2、第3のキーの部分も記述しないといけなかったのですね。
 おかげさまで解決しました。ありがとうございました。

 最終形ではないですが、VBSを書いておきます。
 といってもエラー箇所を書き換えただけですが・・・。

 Dim xl
 Dim wb
 Dim ws
 Dim i
 Dim j
 Dim r
  Set xl = CreateObject("Excel.Application")
  xl.Visible = True
  'xl.ScreenUpdating = False
  Set wb = xl.Workbooks.Add
  Set ws = wb.Worksheets(1)
  For i = 1 To 20
   For j = 1 To 5
    ws.Cells(i, j).Value = i * j
   Next
  Next
  'Set r = ws.Range(ws.Cells(1, 1), ws.Cells(20, 5))
  Set r = ws.Cells(1, 1).Resize(20, 5)
  r.Sort ws.Cells(1, 1), 2, , , , , , 0, 1, False, 1, 1, 0
  'xl.ScreenUpdating = True
  Set ws = Nothing
  Set wb = Nothing
  Set xl = Nothing
 (さよなら西鶴またきて近松)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.