効率よく社会資源データベースを作る方法(後編)

(以下、DB)を作成した背景について総論的に述べた。本日は、具体的にDBの効率的な作り方を紹介したい。 通常、DBの骨格が出来ると、そこに一つ一つデータを入力していくことになる。しかし、手間がかかる。そこでネット上にある医療機関介護保険事業所の一覧を入手してそれをDBにインポート出来れば、基本情報だけでも入力を省略できる。しかし、こんな簡単なことに気付くのに私は、1年半もかかった・・・。 以下では、File Maker Pro9.0で作成したDBを想定している。しかし、基本的な考え方はACCESSと変わらないのでご安心を。 受け皿を作る まずDBを作成する上で、その受け皿となる各項目をあらかじめ作っておく。具体的には、名前、名前フリガナ、郵便番号、住所、電話番号、FAX番号、資源種別を作成する。加えて、社会資源№という通し番号を入れる項目を作成しておくと、あとからリレーションやポータルを設定する時に重宝する。 データを入手する 次にDBにインポートするデータを入手する。ここで注意が必要なのはパソコン上で効率的にデータを入手することができるため、ついつい大量に入手したくなる。しかし、あくまでも業務上どの地域・種別のデータを入手したいのかをよく吟味した上で入手することをお薦めしたい。 ここでは一例として、愛知県内にある医療機関介護保険事業所のデータを入力する手順を示す。それぞれのデータの入手先は以下の通り。 医療機関WAM NET→「医療」のタブをクリック→「所在地でさがす」をクリック→「愛知」にチェックいれて「この条件で検索する」をクリック→(「さらに件数を絞り込む」の中で自分の入手したい条件を複数クリック)→「検索結果一覧を表示」をクリック→一覧が表示される。 介護保険事業所:『介護保険・高齢者福祉ガイドブック(平成20年度版)』→入手したい施設の一覧をクリック→一覧が表示される。 上記ガイドブックには、居宅介護支援事業所やグループホームのデータが掲載されていない。そのため、自施設のある市町村のHPから当該データを入手されることをお薦めする。 なお、WAM NETでも介護保険事業所を検索できるが、表示されている表が複数行になっており、後の加工作業が煩雑になるため使いづらい。 無論、他の入手先も存在するであろうから、よくよく探されることをお薦めする。 データをインポートしやすいように加工する 入手したデータをDBにインポートしやすい様に、csv形式に加工するまでの手順を以下示す。 ①a.HPに表示されている文章や表は、コピー&ペーストでExelにおとしこむ。     b.PDFは、「名前を付けて保存」をクリックし、保存形式をWordに変更して保存する。(PDFからExelに直接変換するソフトがあればそちらを利用) ②a.余計な列や行を削除する。   b.名前フリガナ、社会資源№、資源種別の列を新たに追加する。 ③名前を基に自動でフリガナを作成する手順は、tetsus 2000さんの以下の文章を参照のこと。
以下の手順でマクロを作成して、実行させてください。 (1)メニューの〈ツール〉→〈マクロ〉→〈マクロ〉を実行する (2)〈マクロ〉ダイアログの〈マクロ名〉欄に適当なマクロ名を入力する (3)〈作成〉をクリックする (4)〈Visual Basic Editor〉に下記のVBAプログラムを入力する (5)メニューの〈ファイル〉→〈終了してMicrosoft Excelへ戻る〉を実行する (6)ふりがなを設定したいセル範囲(名前が入力されているセル範囲)を選択する (7)メニューの〈ツール〉→〈マクロ〉→〈マクロ〉を実行して、(1)~(5)で作成・保存したマクロを選択する (8)〈実行〉をクリックする 上記の手順で、(6)で選択していた「名前」のセル範囲にふりがなが一括設定されますので、あとは ・[書式]-[ふりがな]-[表示/非表示]で同じセル内 にふりがなを表示する ・隣の列にPHONETIC関数を入力して、「名前」の列のふり がなを読み出す のいずれかの処理を行ってください。 ●入力するマクロ Public Sub SetFurigana()   Dim rg As Range   Application.ScreenUpdating = False   For Each rg In Selection     rg.SetPhonetic   Next   Application.ScreenUpdating = True End Sub 以上です。
④ハイフンのない電話番号に自動でハイフンを入れるにはham kamoさんの以下の文章を参照のこと。
とりあえず市外局番の一覧を作らなければなりません。 まず、下記のURLにアクセスしてください。 <市外局番の一覧> ​http://www.soumu.go.jp/joho_tsusin/top/tel_number/shigai_list.html​ ブラウザでこのページを開いた状態で、 「編集」>「全て選択」 「編集」>「コピー」 でページをコピーします。 そして、エクセルのSheet2(と仮にします)のA1セルを選択し、「編集」>「貼り付け」でブラウザの内容を貼り付けます。 よけいな行(1~21行目)を削除し、さらにA列とB列を削除します。「市外局番の一覧」という文字も図形として入っているので選択して削除します。一番下のデータ(593行目辺り)の下20行くらいもまとめて削除します。(矢印みたいな記号は右クリック>切り取り で消してください) これでA列に全国の市外局番の一覧から頭の0を抜いた表ができます。しかし、これには携帯やIP電話の市外局番が入ってないので、一番下の行の下に、以下を追加します。 90 80 70 50 これで市外局番一覧はできあがりです。 ここから先は関数ではしんどいのでマクロを作りました。 Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 その際、注釈として入れている箇所(シート名、列名)は、実際のシート構成にあわせて書き換えてください。このマクロではA列の電話番号を変換してA列に書き込む(つまりA列を上書き)するようになっていますが、念のために列を挿入して、B列に変換結果を書き込むようにもできます。 Sub 電話番号変換()  Dim WS1 As Worksheet, WS2 As Worksheet  Set WS1 = Worksheets("Sheet1") '電話番号が入っているシート名  Set WS2 = Worksheets("Sheet2") '市外局番一覧が入っているシート名  Const C1 As String = "A" '元の電話番号が入っている列名  Const C2 As String = "A" 'ハイフンを挿入した電話番号を記入する列名    Dim i As Integer  Dim Tel1 As String, Tel2 As String  With WS1   For i = 2 To .Cells(Rows.Count, C1).End(xlUp).Row    Tel1 = .Cells(i, C1)    If Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 4), LookAt:=xlWhole) Is Nothing Then     '市外局番が5桁のとき     Tel2 = Left(Tel1, 5) & "-" & Mid(Tel1, 6, 1) & "-" & Mid(Tel1, 7, 4)    ElseIf Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 3), LookAt:=xlWhole) Is Nothing Then     '市外局番が4桁のとき     Tel2 = Left(Tel1, 4) & "-" & Mid(Tel1, 5, 2) & "-" & Mid(Tel1, 7, 4)    ElseIf Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 2), LookAt:=xlWhole) Is Nothing Then     If Mid(Tel1, 3, 1) = "0" Then      '市外局番が3桁で0x0の場合(11桁)      Tel2 = Left(Tel1, 3) & "-" & Mid(Tel1, 4, 4) & "-" & Mid(Tel1, 8, 4)     Else      '市外局番が3桁で0x0でない場合(10桁)      Tel2 = Left(Tel1, 3) & "-" & Mid(Tel1, 4, 3) & "-" & Mid(Tel1, 7, 4)     End If    ElseIf Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 1), LookAt:=xlWhole) Is Nothing Then     '市外局番が2桁のとき     Tel2 = Left(Tel1, 2) & "-" & Mid(Tel1, 3, 4) & "-" & Mid(Tel1, 7, 4)    Else     'それ以外の時はハイフンを入れずそのままにする     Tel2 = Tel1    End If    .Cells(i, C2) = Tel2   Next  End With End Sub マクロを貼り付けたら、その画面でF5キーを押すか、Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。電話番号がハイフンつきに変換されます。(元には戻せないため、念のためファイルかシートのバックアップをとっておいた方がよいでしょう)
⑤住所から自動で郵便番号を作成するには、モーガンデータシステムさんのHPを参照のこと。 ⑥最後に、社会資源№と資源種別の列の空欄となっているセルに必要な情報を自己にて入力。 ⑦①~⑥が終了したら、「名前を付けて保存」をクリックし、保存形式「csvファイル」を選択して保存。 ⑧以上で、インポートデータの加工は完了。最終的なデータはこの様になる。 1-2時間で、愛知県内の医療機関介護保険事業所の基本情報をDBに反映させることが出来る。 ①加筆・修正・・・2009.2.4 ②加筆・・・2009.2.5