• ベストアンサー

VBからExcelのデータを並べ替えしたい

VB2008を使用しています。 VBからExcelのデータを並べ替えしたいのですが、どうやればいいのかわかりません。 VBからExcelを立ち上げ、シートおよびセルを参照するところまではできています。 下記を実行するとA列とD列が入れ替わっているだけです。 k_syain_Sheet.Range("A1:D10000").Sort(k_syain_Sheet.Range("A2"), Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending, _ k_syain_Sheet.Range("D2"), , Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending, _ k_syain_Sheet.Range("B2"), Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending) やりたいことは、Excel上のA1~D10000にデータが入っており、A1~D1はタイトル行です。 これから、最優先されるキー「A1」 2番目に優先されるキー「D1」 3番目に優先されるキー「B1」(それぞれ昇順)として並べ替えをしたいのです。 よろしくお願いします。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

#私は VB2008 自体のことはさっぱり解りません!! #見当違いな回答でしたら、お見捨てください。 #また、追加でご質問いただいてもお答え致しかねます。 #飽くまで、「参考意見」ということで。。。 >A列とD列が入れ替わっているだけです。  お示しのコード以前に「列による並べ替え」が行なわれていませんでしょうか?  Excel 自体で [Sort メソッド] による並べ替えを行なった場合、 -- ここから引用 ------------------------------------ [Sort メソッド] ヘルプより-- Header、Order1、Order2、Order3、OrderCustom、および Orientation の設定は、このメソッドを使用するたびに、特定のワークシートについて保存されます。次にこのメソッドを使用するときに、これらの引数を指定しなかった場合は、保存されていた値が使用されます。保存されている値を使用しない場合は、Sort メソッドを使用するときにこれらの引数を明示的に設定してください。 ----------------------------------------------------------------- ここまで引用 -- ということになっています。 >A列とD列が入れ替わっているだけです。 ということは、Excel では Orientation:=xlLeftToRight になっていると思われますので、 >これらの引数を明示的に設定してください。 が VB2008 の [Sort メソッド] にも言えることでしたら、 Orientation:=xlSortRows を「明示的に設定」する必要があるということになると存じます。  つまり、 ●NamedRange.Sort メソッド http://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.namedrange.sort(VS.80).aspx の「Visual Basic (使用法)」にある returnValue = instance.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3) で申すなら Header, OrderCustom, , Orientation, , , , ) の部分は「引数を明示的に設定」した方が無難ということになるかと存じます。  で、「VB2008 のことは解りません」ので何とも申せませんが、 , Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending) を , Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending,,,,xlSortRows) にするみたいなことではないかなぁと思ってしまいました。 【ご参考までに】 ●COM 相互運用機能の省略可能なパラメータについて http://msdn.microsoft.com/ja-jp/library/ms178843(VS.80).aspx

その他の回答 (1)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

VBのことはよくわかりませんが、ちょっと気になったことが1つ。 ソートキーの指定の後のカンマの数が"A2"と"B2"の場合と"D2"の場合とが違っています。 これが影響しているのでは?

関連するQ&A

専門家に質問してみよう