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のコーディングができる方を対象にしています。

(2023/08/04追記)

EXCEL VBA 64Bit でエラー #4
頂いていた上記issueを対応したものを公開しています。

サンプルの使い方説明

1.使う準備

1.1.kintoneDataReaderforVBAのサンプルEXCELダウンロード

ここからサンプルExcelをダウンロードします。

https://github.com/marmeleiro/kintoneDataReaderforVBA/releases/tag/v1.3.2

画面のSource code (zip)をクリックし、kintoneDataReaderforVBA-1.3.2.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-1.3.2.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をあげて頂ますようお願いします

Follow me!