まりふのひと

インターネットの情報+VBAからExcel住所録を作成した。その費用は...

 柳井市のYK社から、近郊市町村の介護施設の一覧を作ってほしい‥‥ との依頼があった。

データの一例

「ネットから一つ一つコピペすれば出来ますょ。1日あったら出来るのでは?」「自分も同じ方法になります」と逆提案した...


奮闘すること3時間半。Excel-VBA で完成させた。

  1. サイト:my介護の広場 4 在宅介護サービスを探す
  2. エリア:近郊の 4市 5町、サービス種類:デイサービス
≪方法≫
  1. 検索結果を Wordに貼り付ける。(テキストのみ)‥‥ 130件
  2. 名前を付けてテキスト形式で保存 → デイサービス.txt
     後から考えたら、
    • 最初からメモ帳に貼り付ければよかった。
    • Wordに貼り付けたならば、置換で空行を取ってやると VBA が楽だった‥‥ と。
  3. Excel-VBA で txtファイルを 1件ずつ読んで、CSV 形式に変換。
    1. 空行および“.”行(右図の11行目)は読み捨てる。
    2. “デイサービス”まで読み捨てる。
    3. 上3文字が
      • “住所:”ならば、郵便番号と住所を切り分ける。
      • “電話:”ならば、そのまま電話番号とする。
      • “運営事”ならば書き出す。
      • そうでなければ、デイサービス名とする。


≪完成したCSVファイル≫

≪コード≫

 gosub を使っているので格好良くないが...

  1. Sub デイサービスCSV変換()
  2. Dim mbTitle As String
  3. Dim isEOF As Boolean
  4. Dim dsn As Long, ds2 As Long
  5. Dim outCounter As Long
  6. Dim txtFile As String, csvFile As String
  7. Dim txtData As String, str3 As String
  8. Dim strName As String, strYubin As String, strJusho As String, strTel As String
  9.  
  10. mbTitle = "デイサービスCSV変換/" & ThisWorkbook.Name
  11. txtFile = ThisWorkbook.Path & "\デイサービス.txt"
  12. csvFile = ThisWorkbook.Path & "\デーサービス.csv"
  13. dsn = FreeFile
  14. Open txtFile For Input As #dsn
  15. ds2 = FreeFile
  16. Open csvFile For Output As #ds2
  17. Write #ds2, "名前", "郵便番号", "住所", "電話番号"
  18. outCounter = 0
  19. Do
  20. GoSub ReadTextFile
  21. If isEOF Then Exit Do
  22.  
  23. str3 = Left(txtData, 3)
  24. Select Case str3
  25. Case "デイサ"
  26. strName = ""
  27. Case "住所:"
  28. txtData = Trim(Mid(txtData, 4))
  29. strYubin = Trim(Left(txtData, 8))
  30. strJusho = Trim(Mid(txtData, 9))
  31. Case "電話:"
  32. strTel = Trim(Mid(txtData, 4))
  33. Case "運営事"
  34. If strName <> "" Then
  35. Write #ds2, strName, strYubin, strJusho, strTel
  36. outCounter = outCounter + 1
  37. strName = ""
  38. End If
  39. Case Else
  40. strName = strName & txtData
  41. End Select
  42. Loop
  43. Close dsn, ds2
  44. MsgBox outCounter & " 件の CSVファイル を作成しました。" _
  45. , vbInformation, mbTitle
  46.  
  47. Application.Quit
  48. ThisWorkbook.Close
  49.  
  50. Exit_デイサービス変換:
  51. Exit Sub
  52.  
  53. ReadTextFile:
  54. isEOF = False
  55. Do
  56. If EOF(dsn) Then isEOF = True: Return
  57. Line Input #dsn, txtData
  58. If Not (txtData = "" Or txtData = ".") Then Return
  59. Loop
  60.  
  61. End Sub

編集後記

  • 現役の頃、プログラム開発費用は、最低(利益無視の場合) \3,500/hr と言われていた。
  • これで計算すると今回は、3,500円/hr×3.5hr=12,250円 となる。
  • 今回は 130件だったので、12,250/130=94.2円/件 となる。
  • 例えば、ヨドバシのサポート料金 と比べても高くはないと思うが、どうだろう...
  • 海馬の機能低下を実感した。単価も下げねば...