今回PC入れ替えに伴い、ExcelのVersionが2010から2016へ切り替わりました。
その結果、今まで3分ぐらいで終了していた処理が、40分くらいかかってしまいます。
ロジックを確認した所、kintoneのデータを取得するロジックで時間がかかっています。
※下記機能を使用して、Excel VAB経由でkintoneのデータを取得していました。
https://github.com/marmeleiro/kintoneDataReaderforVBA
処理速度が遅いのは、kintoneからデータ取得する下記コマンド部分です。
【ロジック】
'データをkintoneから取得
Call kintoneUtil.GetRecords(True, recDate, strSQL)
↑上記結果が返ってくるまでの時間については、添付を参照してください。
(今まで1秒もかからなかったのが、最大60秒かかります。)
すみませんが、処理速度を向上する方法を伝授して頂けるでしょうか?
もしくは、他の代替案があればご教授ください。
【各Excel Version毎の実測結果】・・・同じPGをExcel Version違いで実行した結果です。
Isozumiさん
作者です。
GetRecordsのなかではREST APIへのクエリパラメータ作成、REST APIでデータ取得、取得したJSONデータを解析、といったことをしています。
GetRecordsの処理の中身を細かく処理時間計測しながらデバッグすると、具体的にどの部分が遅いかわかります。
【ExcelVBA入門】処理時間を計測するためのTimer関数の使い方とは
もし、JSONデータ解析が遅いようでしたら、依存モジュールのJsonConverter.basがバージョンアップされてv2.3.1になっているので、そちらに入れ替えすると改善されるかもしれません。
また、PCによっては、全件取得した場合、取得件数・項目数によってはメモリ不足になる場合があります。
その場合はOffsetを指定して、データ取得&Excelシートへの貼り付けを何回かに分けて行ったほうが速くなるかもしれません。
PC環境に依存するので、なんとも言えませんが、私の環境ではExcel2016でも遅くなることはありませんでした。
Caryncoさん
ご教授ありがとうございました。
調査した結果、kvu_Execute Functionの下記箇所で処理時間が遅かったです。
'Parseしてデータセット
Set kvu_Execute = ParseJson(strJson) ←【標準モジュール:「JsonConverter」の「ParseJson」Function】
調査結果は、以下の通りです。
【処理内容】:約500件のデータ読込み
ちなみに、JsonConverter.basをバージョンアップ2.3.1にしたら、より遅くなりました。