kintoneとExcelを連携するためのVBAクラスを作りました!
Excelで管理していたデータをkintoneに移行して快適になった!kintoneにはグラフや一覧機能が用意されていますので、それらを使ってExcelのフィルタや集計作業から開放された、ということは多いのではないでしょうか?
全部kintoneで出来たらベストだとは思うのですが、そうはいっても社外向けの資料を作るためにデータ加工が必要だったり、別システムからダウンロードしたデータとvlookup関数でくっつけたい、などExcel作業が必要になることは、まだまだあります。
そういった作業を行う場合は、kintoneの画面から「ファイルに書き出す」を選び、「書き出す」ボタンクリック、ファイルがダウンロードされたら、ダブルクリックでファイルを開く。ただし、これはcsvファイルなので、名前をつけて保存でExcelに変換して保存、とちょっとだけ手間がかかります。
特に定期的に行っている作業だとすると、もっと簡単にできたらいいなと思うことはありませんか。
そういうシーンで使える、Excelから直接kintoneのデータを抽出できる「kintoneDataReaderforVBA」というVBAクラスを作成しました。
このモジュールを使ったサンプルExcelをGitHubに公開しています。
サンプルExcelで使用イメージを確認していただけますので、ぜひ使ってみてください。
利用シーンにあうようExcelVBAでマクロなど作成し、オリジナルのExcelツールを作成することができます。
※このVBAクラスのご利用は、kintoneのREST APIを理解されている方、VBAのコーディングができる方を対象にしています。
サンプルの使い方説明
1.使う準備
1.1.kintoneDataReaderforVBAのサンプルEXCELダウンロード
ここからサンプルExcelをダウンロードします。
https://github.com/marmeleiro/kintoneDataReaderforVBA
画面右上のCodeからDownload ZIPをクリックし、kintoneDataReaderforVBA-master.zipをダウンロードします。
1.2.Dictionary.clsとJsonConverter.basのダウンロード
次に下記URLから、Source code (zip)をダウンロードします。
https://github.com/VBA-tools/VBA-Dictionary/releases/tag/v1.4.1
https://github.com/VBA-tools/VBA-JSON/releases/tag/v2.3.1
VBA-Dictionary-1.4.1.zipとVBA-JSON-2.3.1.zipというファイルがダウンロードされます。
この2つは、Tim Hallさんがつくられているライブラリです。kintoneDataReaderforVBAの動作確認を行ったバージョンのリンクを載せていますので、最新バージョンとは異なる場合があります。
1.3.サンプル用Excelに必要なファイルを取り込む
ダウンロードした3つのファイルを解凍して、下記ファイルが必要です。
kintoneDataReaderforVBA-master.zip ーー> example.xlsm
VBA-Dictionary-1.4.1.zip ーー> Dictionary.cls
VBA-JSON-2.3.1.zip ーー> JsonConverter.bas
example.xlsmに、Dictionary.clsとJsonConverter.basをインポートします。
2.使い方
2.1.サブドメインとアプリIDを指定してデータを取得
サブドメインと、取得対象アプリIDを入力します。
サブドメイン・・・ご利用のkintoneのURLで、https://XXX.cybozu.com/k/ のXXX部分がサブドメインです。この部分を入力します。
取得対象アプリID・・・データを取得したいアプリの番号を入力します。アプリ番号は該当のアプリを開いているときのURLで、https://XXX.cybozu.com/k/ に続く番号です。
(例:https://XXX.cybozu.com/k/232/ の場合は、232)
サブドメインと取得対象アプリIDが入力できたら、「データ取得」ボタンをクリックしてみます。
すると、下図のようなダイアログボックスが表示されるので、kitoneログイン時のユーザーIDとパスワードを入力して「OK」ボタンをクリックします。
新しいシートが追加され、データが取得されました。
(取得元のアプリ)
- 全データを取得しますので、まずは、フィールドとデータ数があまり多くないアプリで試してみてください。大量データを取得するとPCがメモリ不足になる場合があります。(抽出条件指定については、次の章で説明します。)
- 取得できるフィールドは、kintoneの権限設定に依存します。
2.2.条件指定のためにフィールドコードを取得
先程の状態は条件の指定なしだったので、必要なデータだけを取得するためには、条件を指定します。
条件指定には、「フィールドコード」を使います。
ここで、いちいちkintone画面で1つ1つのフィールド設定を開いてフィールドコードを確認するのは面倒、ですよね?
また、そもそもこの設定画面を見る権限はないです、という方もいると思います。
それを解決するために、先程のサブドメインとアプリIDが入力されている状態のexample.xlsmで、「フィールドコード情報取得」ボタンをクリックしてください。
そうすると、新規シートにこのように、先程kintoneのフォームのフィールド設定画面で見ていた内容が抽出されます。「ラベル」が実際画面上で見えている項目名(フィールド設定画面の「フィールド名」)になります。
2.3.条件を指定してデータ取得
では、フィールドコード情報が書かれたシートを見ながら、条件を指定してみます。
サンプルアプリはこのような受注・売上管理のアプリです。
試しに、こんな条件で抽出してみます。
必要な項目:受注日、取引先名、請求金額。
抽出したい範囲:受注日が2017/10/20〜2017/10/31まで。
これを書くと、こんな感じになります。
【必要な項目】
取得したい項目「受注日、取引先名、請求金額」のフィールドコードを半角カンマ区切りで記入します。
【抽出したい範囲】
クエリの欄に記入します。
「受注日が2017/10/20〜2017/10/31まで」の書き方は、「日付_0 >= “2017-10-20” and 日付_0 <= “2017-10-31”」となります。
記述方法は、cybozu developer network(https://developer.cybozu.io/hc/ja/articles/202331474#step2)に書かれています。
日付の項目なのか、文字列項目なのか、数値項目なのかなど、項目のタイプによって書き方も違ってきますが、これは先程のフィールドコード情報を取得したシートの「タイプ」列で確認できます。
では、早速、これで「データ取得」ボタンをクリックしてみると、このように、項目数も3つだけ、受注日の条件に一致する2件だけが出力されました。
クエリの書き方は、cybozu developer networkの説明が記載されています。正しく書けていない場合は、このようなメッセージが表示されます。
3.まとめ
いかがでしたか?
このexample.xlsmは、VBAのサンプルとして提供していますので、このまま試しに使ってみる以外に、マクロを変更してニーズあったExcelツールを作成してみてはいかがでしょうか。
※このVBAクラス、およびサンプルExcelは、kintoneのREST APIを理解されている方、VBAのコーディングができる方を対象にしています。
使い方の不明点については、基本的な内容は可能な範囲でお答えしますが、個別のサポートは行っておりません。
不具合などは、GitHubのissueかpull requestをあげて頂ますようお願いします。どの部分で問題が起きているか記載いただきますようお願いします。