弊社のアドベントカレンダー歴


弊社代表の長井が参加してきたアドベントカレンダーもだいぶ年数がたちました。
何を書いたか忘れつつあるので、ここに残しておきます。

2022年
Adventar 「すごくない」kintone Advent Calendar 2022
・kintoneの機能をコミュニティに例えてみた
Qiita kintone Advent Calendar 2022
・Cybozu Days 2022のブース出展でkintoneにメディアプレーヤーを設置しました。
Qiita SORACOM Advent Calendar 2022
・Cybozu Days 2022のブース出展でソラカメとkintoneの連携にチャレンジしました。


2021年
Qiita kintone Advent Calendar 2021
・私、Mac方面については素人なのですが、、、


2020年
Qiita kintone Advent Calendar 2020
・kintoneにシステム移したいんや
Qiita kintone 2 Advent Calendar 2020
・パート2は痛恨の欠席。
Adventar カレンダーPlus Advent Calendar 2020
・Cybozu OfficeのスケジュールをCalendar Plusで(だいぶ)再現!


2019年
Qiita kintone Advent Calendar 2019
・ワーキングツリーにはkintoneとboxをお飾り!
Qiita kintone 2 Advent Calendar 2019
・コーチングのグラフってkintoneで出せるんやって!


2018年
Qiita kintone Advent Calendar 2018
・ライフログのkintone盛り alasql仕込みのGoogle Chart添え


2017年
Qiita kintone Advent Calendar 2017
・Save The Live!~サイボウズLiveを救え~


2016年
Qiita kintone Advent Calendar 2016
・kintoneとWordPressの連携ネタ三題噺


2015年
Qiita kintone Advent Calendar 2015
・年賀状の宛名書きをkintoneにお願いする。WordとAccessを和えて


年賀状の宛名書きをkintoneにお願いする。WordとAccessを和えて


kintone Advent Calendarへの参加表明をしたはいいですが、ネタ選びで思惑が狂ってしまいました。ネタにしようと目論んでいたSansan API(eightではなくてSansanの方)とkintoneの連携。ところがSansan様よりAPIの技術情報をブログ等で出すことなかれ、と言われてしまいまして。
え、あと私の担当日まで3日しかないのに、どうしよう・・飲み会も続くし、年賀状も書いてないのに。・・・ん?年賀状? と思いついたのがこちらです。はがきといえば差し込み印刷。Wordです。Wordからkintoneを読み込めないか、という浅い思いつきで調べてみました。 あまり実践的な内容とはいえませんが、ごらん頂ければ幸いです。

本記事のネタは 2015/12/11時点のkintoneとWord 2010とAccess 2010で構築しています。12/12に予定されていたkintoneアップデートは延期されてしまいました。アップデートの後も本記事にある技術は使えると思います。
あ、それとQiitaから頂いたリマインドメールにはブログにアップしたurlを連携してもよいと書かれていたので、当方のブログにアップしました。不都合があればQiitaに上げなおします。

 

Wordの差し込み印刷

さて、まずはWordを立ち上げて下さい。メニューの差し込み文書から、宛先の選択を選びます。

1

 

すると、新しいアドレス帳というダイアログが開き、情報が入れられます。いいですねぇ。ちなみに私、Wordの差し込み印刷はほとんど触ったことがありません。

2

 

で、入れ終わって閉じてみると、mdbの保存ダイアログが出てきました。ほう、Wordの裏側はAccessだったんですね。これは思惑が狂いました。調べてみたのですが直接Wordを触って差し込み印刷の値を設定する方法がわかりませんでした。でも、Accessとkintoneって近いようであまり連携例を見かけません。この機会に連携も試してみましょう。ではAccessを任意の場所に保存してみましょう。

3

 

Accessの設定

Accessが出来ました。Address.mdbというやつです。じゃあこれを元にしてkintoneに一つアプリを作ってみましょうか。作成されたAddress.mdbにあるテーブルは一つだけ。Office_Address_Listというテーブルです。これをエクスポートして、csvファイルとして保存し、そのcsvファイルをkintoneに備わっているcsvからアプリを作る機能で作れば何とかなりそうです。

4

 

テキストエクスポートウィザードで出してみます。

5

 

カンマ区切りですね。あとは先頭行をフィールドとして使うにチェックを入れてください。kintoneのアプリストアでExcel/CSVからのアプリ作成で、先頭行に見出し行が設定されている必要があります。

6

 

じゃあ、この場所にcsvを作ってみましょう。

7

 

そしてkintoneへ

いよいよkintoneの出番です。アプリストアから「Excel/CSVから作成」を選びましょう。そしてAccess.mdbから出力したcsvファイルは、以下の通りとなっています。これはWordのアドレス帳のテーブルです。各項目のフィールドタイプはホームページとメール以外は「文字列(一行)」で設定しましょう。

8

 

無事、アプリが作成できました。あとはここに住所を入れて行けば、念願のクラウドでの住所録管理は目の前です。あ、それと、kintoneのフォームで各フィールドのフィールドコードの設定を以下の通りでお願いします。

            ふりがな(姓) → FamilyName_Furigana
            姓 → FamilyName
            ふりがな (名) → FirstName_Furigana
            名 → FirstName
            敬称 → Title
            会社名 → CompanyName
            部署名 → DivisionName
            役職 → Position
            郵便番号 → ZipCode
            住所 1 → Address1
            住所 2 → Address2
            住所 3 → Address3
            勤務先電話番号 → OfficeTelNo
            勤務先 FAX 番号 → OfficeFaxNo
            自宅電話番号 → HomeTelNo
            自宅 FAX 番号 → HomeFaxNo
            連名 → JointSignature
            連名敬称 → JointSignatureTitle
            電子メール アドレス → MailAddress
            ホーム ページ → WebSiteUrl
            市区町村 → City
            都道府県 → Prefecture
            国/地域 → Country

9

 

いよいよAccessからkintoneへ

kintoneにアプリを作ったら、今度はAddress.mdbです。このAccessとkintoneが連携できればよいわけです。ここで、Visual Basic Editorを開いていただき、ツール(T)→参照設定をお願いします。

10

 

参照設定でなにをするかというと、連想配列を使うのでMicrosoft Scripting Runtimeにチェック。それとmdbへのテーブル操作にADOを入れてみましょう。Access 10であれば ADO 2.8が無難でしょうね。これもチェックをお願いします。

11

 

つづきまして、以下の標準モジュールとクラスモジュールを入れてください。ファイルのインポートで可能です。なお、それぞれのモジュールファイルは用意しました。ダウンロードしやすいようにzip化しておきました。解凍してお使い頂ければ。あ、怪しくないので大丈夫ですよ ^_^

JSON
Mod_CommonDeclaration
Mod_DataTrust
Mod_GetKintone

12

 

さて、インポート頂いたファイルですが、ほとんどはそのままで使えるようにしていますが、皆様の環境に応じて若干の変更が必要です。そうしないと動きません。例えば、Mod_GetKintoneのファイルの19行目。ここで
Set objJSON = GetJSON("/k/v1/records.json?app=**") という記載があります。このアスタリスクの2文字は、先にkintoneに作ったアプリのUrlにある数字を入れてください。

12-3

 

続いて Mod_DataTrustです。ここは7行目。
Private Const TARGET_URL As String = "https://*******.cybozu.com"
という記述の****** の部分に、ご契約されているkintoneのドメイン名を当ててください。

12-1

 

さらに Mod_DataTrustです。ここは76、77、78、79行目に情報を入れて頂きます。
76行目はベーシック認証の情報です。BAsic_IDの部分にIDを。Basic_PWの部分にパスワードをお願いします。
77行目はご契約されているkintoneのドメイン名を****の部分に入力してください。
78行目はBAsic_IDの部分にIDを。Basic_PWの部分にパスワードをお願いします。
79行目はkintone内で使用するユーザーのIDとパスワードです。IDの部分にIDを。PWの部分にPWをお願いします。
12-2

さて、ここまででAccess.mdbとkintoneの連携は出来ました。AccessからMod_GetKintoneの中にあるgS_CmdDataRequeryClickを実行すれば、kintoneのデータを反映するのがわかります。

 

再びWord

さて、Wordに戻りましょう。Wordの文書は新たに作成して結構です。作成したら、差し込み文書を選びます。さらにはがき印刷を選んでください。

13

 

さらに、宛名面の作成を選びましょう。

14

 

するとはがき宛名面印刷ウィザードが開きます。

15

 

種類は、年賀/暑中見舞いを選びます。

16

 

さらに様式を選びましょう。好みで縦書きでも横書きでも結構です。

17

 

フォントも選びましょう。

18

 

差出人の情報を選びます。差出人を印刷するにチェックを入れると差出人情報が印刷されます。

19

 

既存の住所録ファイルにラジオにチェックして下さい。さらに、住所録ファイル名は、先ほどAccessのmdbを保存したパスを入力して下さい。

20

 

これではがき宛名面印刷ウィザードは完了です。

21

 

すると、年賀状のイメージと各項目のフィールドに、kintoneに入力した情報が出てきます。この時点で出ているのは、当初アドレス帳に入力して、Address.mdbに入った情報です。

22

 

違う宛先を表示させるには、差し込み文書からメニューの右にある矢印をクリックすればそれぞれの情報にアクセスできます。

23

 

それではこのWord文書を保存して閉じましょう。そして、もう一度開き直すと、以下のようなメッセージが表示されます。これは毎回Address.mdbの情報を見に行き、SQL文を発行してAccess.mdbの情報を取得していることを意味します。

25

 

さて、ここまで出来ているのであれば、もう一段階進んでみましょうか。
先程Accessにモジュールを組み込んで頂いた際に、「AccessからMod_GetKintoneの中にあるgS_CmdDataRequeryClickを実行すれば、kintoneからデータを取りに行ってくれます」と書きました。では、これをWordから行えるようにすれば、いちいちAccessを起動せずに済みますよね。
そんなわけで、GetKintoneFromWordをご用意いたしました。こちらもzip化しています。解凍したらGetKintoneFromWord.basが現れます。これをWordのVisual Basic Editorからファイルのインポートで取り込んで頂ければ。すると、Wordからkintoneの取り込みを行い、その結果をAccess.mdbに取り込むことが出来ます。なお、mdbの場所は C:¥kintone¥Address.mdb にある前提で作成しています。26

 

では、組み込んだマクロを実行してみましょう。メニューの表示からマクロ→マクロの表示を選びます。

26

 

一覧が出るので「アドレス帳最新化」を選んで実行を押してください。

27

 

そうするとkintoneで変更した内容がwordにも反映されます。これで完成です♪
どうでしょう? 今ならまだ年賀状に間に合いますよ♪

29

 

 


Wordの情報漏洩対応


 Wordファイルを普通に開いて編集すると、いつの間にやら個人情報が内部に溜まっていってしまうことがあります。
 このようなファイルは、通常業務として外部にメール送信するだけで、情報漏洩になってしまうことがあります。

 このようなファイルをメール送信前にチェックすることで、個人情報漏洩のリスクを減らすため、プログラムを書きました。

 プロファイルやコメント、変更履歴、旧版の削除についてはとくに問題なくVBAでコーディングできるのですが、隠し文字についてだけは一覧表示を行うのに少しだけ苦労しました。

下記にドキュメント内に使われている隠し文字の一覧をメッセージボックスで出せるようにしてみました。適宜内容を変更してもらえれば色々と使い道もあるのではないかと思います。

    Dim blnFound As Boolean
    With ActiveWindow.View         
            .ShowHiddenText = True ←←←(1)
    End With
    blnFound = True
    With Selection.Find
        .ClearFormatting
        .Font.Hidden = True
        Do While blnFound = True
            .Execute
            blnFound = .Found
            If blnFound Then MsgBox Selection.Range.Text
        Loop
    End With
    With ActiveWindow.View
        .ShowHiddenText = False
    End With

上の(1)のところに気づくのに時間がかかってしまいました。
(1)の箇所でツール→オプションの表示タブの編集記号の表示の隠し文字にチェックをいれないと、下記のFindメソッドによる検索でひっかかりません。この点について触れられているサイトがなく、2,3時間は頭をひねってしまいました。

この方法で、隠し文字の文字や出現場所をリストにし、必要なところは表示させたり、文字を削除したりすることで、より一層、情報漏洩のリスクが軽減されると思います。

なお、msgbox Selection.Information(?????)の????にインフォメーションメソッドの引数を入れると表示位置などの情報が取得できます。

なお、上記処理はWord 2000/2002 で処理を確認しておりますが、もし不具合が生じた場合はおっしゃっていただければと思います。

もっとも、Word 2002以降ではMicrosoft さんがご提供しているツールを使った方がよいとおもいます。ページから「隠しデータ」と検索して頂ければ該当ツールが表示されますので、ダウンロードしてお使いください。