dポイントプレゼントキャンペーン実施中!

VBAで作業の効率化を図っています。
その過程で、icsファイルをCSVファイルへ変換を考えています。
色々と調べてみたのですが、いまいちよくわからなかったので
質問させていただきます。

1.VBAでicsファイルをCSVファイルをに変換することは可能でしょうか?
  また、可能な場合どのようなマクロになるのか教えていただけると幸いです。
  (ヒント程度でも構いません)
2.不可能な場合、フリーソフト等があれば教えていただきたいです
  サイトでの変換は見つかったのですが、ネット有り気になってしまうので避けたい
  と考えています。

質問者からの補足コメント

  • 追記です。
    現状諸事情でOutlookの仕様は難しいです

      補足日時:2021/02/05 17:41

A 回答 (2件)

VBA で不可能かどうかは別として、CSV ファイルに変換するだけの機能ですし、既にフリーソフトに落ち着く可能性に言及しておりますのでフリーソフトを探したほうが良い気がします。



フリーソフトに関しては「ics csv 変換」とでも検索してご自分でいろいろ試してみたほうが良いと思います。


どうしても自分で CSV に変換するコードを書きたいのであれば、以下のページが参考になると思います。
RFC2445
http://www.asahi-net.or.jp/~CI5M-NMR/iCal/rfc244 …

iCalendar 仕様について書いてくださっているページ
http://www.asahi-net.or.jp/~CI5M-NMR/iCal/ref.html

ウィキペディア
https://ja.wikipedia.org/wiki/ICalendar#%E3%82%B …


ics ファイルは単なるテキストファイルですのでご自分で作れると思いますよ。
(UTF-8 で書かれ、改行は CR+LF、日時の書式は ISO 8601、BEGIN:ほげほげ ~ END:ほげほげで区切られる構造)

ics ファイルの 1行目から最終行まで 1行ずつ読み取りながら、
BEGIN:VEVENT 行 ~ END:VEVENT 行にある各項目のうち、CSV に持っていきたい項目だけ拾っていけばよいと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

フリーソフトの検索ですが、そちらのワードでも検索してみたのですが
ソフトではなくネット上での変換のページに飛ばされてしまい、
これだ!というものを見つけられずにいる状態でした。
改めてもう一度探してみようと思います。

また、コードに関する参考ページもご教授いただきありがとうございました!
フリーソフト使用に落ち着くことになったとしても、
自信のスキルアップのためにこちらを参考に挑戦してみます。

お礼日時:2021/02/08 16:04

一行ずつファイルを読み込んで解釈して、シートに書き込んでいくのがいいでしょうか?


シート書き込み後にcsvで保存ということで
動作を検証しておらず、イメージで申し訳ないのですが、以下のプロシージャを参考に作成できるのではと思います。変数fは対象のicsファイルパスです。

Sub test1(f As String)
Dim re As Object, mm As Object
Dim r As Integer
Dim buf As String
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "(\S+):(\S+)"
r = 0
Open f For Input As #1
Do Until EOF(1)
Line Input #1, buf
Set mm = re.Execute(buf)
For Each m In mm
Select Case m.submatches(0)
Case "BEGIN"
If m.submatches(1) = "VEVENT" Then r = r + 1
Case "DTSTART"
Cells(r, 1).Value = m.submatches(1)
Case "DTEND"
Cells(r, 2).Value = m.submatches(1)
Case "LOCATION"
Cells(r, 3).Value = m.submatches(1)
Case "SUMMARY"
Cells(r, 4).Value = m.submatches(1)
Case "DESCRIPTION"
Cells(r, 5).Value = m.submatches(1)
End Select
Next m
Loop
Close #1
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!
途方に暮れていたので回答いただけてとても嬉しいです。
こちら参考に早速いろいろ調べてみようと思います。

お礼日時:2021/02/08 15:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!