なんで今時こんなVBAやってるんでしょうね……2020年だよ……。
と言っても仕方ないのでやりますが。Access、VBA。40万件ほどのデータをテキストファイルに吐き出すため、VBAでかかれた処理をメンテしています。出力時にソートを掛ける必要がでてきたのでレコードセットに対してSortメソッドを呼んでみました……が……。
こんなエラーが。
こちらの掲示版で検索してみたところ、どうやらSortメソッドは接続に対するカーソルロケーション指定(CursorLocationプロパティ)が「adUseClient」でないと使えないそうです。
デフォルトの指定は「adUseServer」。カーソルがサーバー側にあるという設定。一方でUserClientを選ぶと、自分の手元でカーソル処理が動くので、いろいろと細かい機能がつかえるようになるとか。その1つがSortのようです。詳しくはこちらに記載されています。
というわけで接続のプロパティなどを下記のように書き換えて処理を実行したところ、Sortメソッド利用不可のエラーは消えたのですが……
Set con = CurrentProject.Connection con.CursorLocation = adUseClient rec.Open tableName, con, adOpenDynamic, adLockOptimistic
これがでました……あぁ……。32bit Officeの限界か(エラーが出る寸前、利用メモリは1.5GBほどに)。
![ExcelVBAを実務で使い倒す技術 ExcelVBAを実務で使い倒す技術](https://m.media-amazon.com/images/I/51LwhCpfLAL._SL160_.jpg)
- 作者:高橋宣成
- 発売日: 2017/04/20
- メディア: 単行本