- ベストアンサー
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」(それぞれ昇順)として並べ替えをしたいのです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#私は 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)
VBのことはよくわかりませんが、ちょっと気になったことが1つ。 ソートキーの指定の後のカンマの数が"A2"と"B2"の場合と"D2"の場合とが違っています。 これが影響しているのでは?