オフィスでは最もよく使われるアプリケーションであろうExcelでもニフクラ mobile backendが使えるように、マクロで動作するExcel用NCMBを開発しています。今回はその簡単な使い方です。アプリのマスタデータをExcelからメンテナンスする方法を紹介します。
既存データを取り込む
まず既存データを取り込みます。マスタデータなので大量にデータはないかと思いますので、fetchAllを順番に並べていきます。ヘッダーは手作業で入力としています。
Sub LoadData() Dim ApplicationKey As String Dim ClientKey As String ApplicationKey = "YOUR_APPLICATION_KEY" ClientKey = "YOUR_CLIENT_KEY" Dim ncmb As clsNCMB Set ncmb = New clsNCMB ncmb.ApplicationKey = ApplicationKey ncmb.ClientKey = ClientKey Dim dataClass As clsDataStore Set dataClass = ncmb.dataStore("TestClass") Dim dataItems() As clsDataItem dataItems = dataClass.fetchAll() Dim dataItem As clsDataItem Dim workSheet As workSheet Set workSheet = ThisWorkbook.Worksheets("Sheet1") For i = 0 To UBound(dataItems) - 1 Set dataItem = dataItems(i) workSheet.Cells(i + 2, 1).value = dataItem.val("objectId") workSheet.Cells(i + 2, 2).value = dataItem.val("message") workSheet.Cells(i + 2, 3).value = dataItem.val("count") Next End Sub
データを保存する
そして編集が終わったら、逆にシートのデータを読み取って、保存していきます。この手順だけでマスタデータの編集が実現できます。
Sub saveData() Dim ApplicationKey As String Dim ClientKey As String ApplicationKey = "YOUR_APPLICATION_KEY" ClientKey = "YOUR_CLIENT_KEY" Dim ncmb As clsNCMB Set ncmb = New clsNCMB ncmb.ApplicationKey = ApplicationKey ncmb.ClientKey = ClientKey Dim dataClass As clsDataStore Set dataClass = ncmb.dataStore("TestClass") Dim dataItem As clsDataItem Dim lastRow As Integer lastRow = Cells(Rows.Count, 1).End(xlUp).Row Dim workSheet As workSheet Set workSheet = ThisWorkbook.Worksheets("Sheet1") For i = 2 To lastRow Set dataItem = dataClass.newData dataItem.Field "objectId", workSheet.Cells(i, 1).value dataItem.Field "message", workSheet.Cells(i, 2).value dataItem.Field "count", workSheet.Cells(i, 3).value dataItem.Save Next End Sub
まとめ
現時点では文字列、数値のみ対応しています。将来的に日付や真偽値、オブジェクトなどの保存にも対応していきます。それができればExcelを使ってデータ操作ができるようになるので、アプリ担当の方は運用が楽になるのではないでしょうか。
Excel用NCMBライブラリはgoofmint/ncmb-excel: NCMBのExcel用クラスモジュールです。にて開発を行っています。利用の際にはvbacGUIを使ってコードを連結すると使いやすいはずです。