Excelシートに作ったGoogleカレンダー用のデータをCSVに変換するマクロです。
出力されたCSVを使ってカレンダーにインポートすることができます。
Excelシート
Excelシートは次のように作ります。
日付と時刻はExcel形式(シリアル値)にします。
・ | A | B | C | D | E | F |
1 | Subject | Start Date | Start Time | End Date | End Time | Location |
2 | 南アフリカ対メキシコ | 2010/06/11 | 23:00 | 2010/06/12 | 01:00 | ヨハネスブルク |
3 | ウルグアイ対フランス | 2010/06/12 | 03:30 | 2010/06/12 | 05:30 | ケープタウン |
4 | アルゼンチン対ナイジェリア | 2010/06/12 | 23:00 | 2010/06/13 | 01:00 | ヨハネスブルク |
マクロ
アクティブシートに対して処理されます。
日付と時刻の行はFormat関数で整形されます。
カンマ付テキスト(UTF-8)に変換され、指定したファイル名で保存されます。
Sub Googleカレンダーインポート用CSV出力()
fnsave = Application.GetSaveAsFilename( _
"import.csv", "CSV(*.csv),*.csv")
If fnsave = False Then Exit Sub
mytext = ""
i = 1
Do
j = 1
Do
If Right(Cells(1, j), 4) = "Date" Then
temp = Format(Cells(i, j), "yyyy/mm/dd")
ElseIf Right(Cells(1, j), 4) = "Time" Then
temp = Format(Cells(i, j), "hh:mm")
Else
temp = Cells(i, j)
End If
mytext = mytext & temp & ","
j = j + 1
Loop Until Cells(i, j) = ""
mytext = Left(mytext, Len(mytext) - 1) & vbCrLf
i = i + 1
Loop Until Cells(i, 1) = ""
mytext = Left(mytext, Len(mytext) - Len(vbCrLf))
With CreateObject("ADODB.Stream")
.Type = 2
.Charset = "utf-8"
.Open
.WriteText mytext, 1
.SaveToFile fnsave, 2
.Close
End With
End Sub
fnsave = Application.GetSaveAsFilename( _
"import.csv", "CSV(*.csv),*.csv")
If fnsave = False Then Exit Sub
mytext = ""
i = 1
Do
j = 1
Do
If Right(Cells(1, j), 4) = "Date" Then
temp = Format(Cells(i, j), "yyyy/mm/dd")
ElseIf Right(Cells(1, j), 4) = "Time" Then
temp = Format(Cells(i, j), "hh:mm")
Else
temp = Cells(i, j)
End If
mytext = mytext & temp & ","
j = j + 1
Loop Until Cells(i, j) = ""
mytext = Left(mytext, Len(mytext) - 1) & vbCrLf
i = i + 1
Loop Until Cells(i, 1) = ""
mytext = Left(mytext, Len(mytext) - Len(vbCrLf))
With CreateObject("ADODB.Stream")
.Type = 2
.Charset = "utf-8"
.Open
.WriteText mytext, 1
.SaveToFile fnsave, 2
.Close
End With
End Sub
実行結果
Subject,Start Date,Start Time,End Date,End Time,Location
南アフリカ対メキシコ,2010/06/11,23:00,2010/06/12,01:00,ヨハネスブルク
ウルグアイ対フランス,2010/06/12,03:30,2010/06/12,05:30,ケープタウン
アルゼンチン対ナイジェリア,2010/06/12,23:00,2010/06/13,01:00,ヨハネスブルク
南アフリカ対メキシコ,2010/06/11,23:00,2010/06/12,01:00,ヨハネスブルク
ウルグアイ対フランス,2010/06/12,03:30,2010/06/12,05:30,ケープタウン
アルゼンチン対ナイジェリア,2010/06/12,23:00,2010/06/13,01:00,ヨハネスブルク
コメント
[…] インポート用CSVを作るには次のページを参考にしてみてください。 Googleカレンダー、インポート用CSVを作成するマクロ | You Look Too Cool […]
サイボーズガルーン2のスケジュールをグーグルカレンダーに反映させたく、いろいろと調べた結果、ここに辿り着きました。「ガルーン同期」なるアプリもあるようですが、私の環境では利用できませんでした。そこでガルーンから書き出したCSVをカット&ペースト等の力技で並び替え、このマクロを利用させて頂き、グーグルカレンダーにインポートすることができました。誠にありがとうございました。
また一つ教えて頂きたいのですが、私の場合LocationよりDescription(説明)をインポートしたいと思っています。この場合はLocationをDescriptionに書き換えただけではダメみたいです。どのようにマクロを変更したら良いのかアドバイスを頂けたら幸甚です。
何卒、宜しくお願い申し上げます。
>紫パパさん
ご利用ありがとうございます。
Descriptionの件ですがご指摘の通り書き換えるだけで大丈夫だと思います。
Subject,Start Date,Start Time,End Date,End Time,Description
南アフリカ対メキシコ,2013/08/01,15:00,2013/08/01,16:00,これはテストです。
というCSVを試しましたが正しくインポートされました。
・全くインポートされないならばデータ形式がおかしい。
・インポートされるもののある列だけ空になるならば項目名がおかしい。
などが考えられます。
綴りが違うと、レコード(行)はインポートされるものの、その列だけ空になるようです。
できました。
「できない・・、できない・・」でファイルを滅茶苦茶に
いじってしまったのが原因で、一つづつ丁寧に操作したら
ちゃんとできました。
本当にありがとうございました。
できましたか。よかったです。
また何かあればコメントください。