RSSから取得した日付(「Wed, 20 Dec 2017 00:02:41 +0000」のようなRFC-822形式)を【年/月/日 時間:分:秒】形式に変換する必要があったので、ScriptControl経由で処理するマクロを書いてみました。
Option Explicit
Public Sub Sample()
Debug.Print ConvertDate("Wed, 20 Dec 2017 00:02:41 +0000")
End Sub
Private Function ConvertDate(ByVal dt As String) As String
'RFC 822形式の日付を変換
Dim dtYear As String
Dim dtMonth As String
Dim dtDate As String
Dim dtHours As String
Dim dtMinutes As String
Dim dtSeconds As String
Dim ret As String
Dim d As Object
With CreateObject("ScriptControl")
.Language = "JScript"
.AddCode "function getDate(dt){return new Date(dt);}"
Set d = .CodeObject.getDate(dt)
dtYear = CallByName(d, "getFullYear", VbMethod)
dtMonth = ZeroPadding(CLng(CallByName(d, "getMonth", VbMethod)) + 1, 2)
dtDate = ZeroPadding(CallByName(d, "getDate", VbMethod), 2)
dtHours = ZeroPadding(CallByName(d, "getHours", VbMethod), 2)
dtMinutes = ZeroPadding(CallByName(d, "getMinutes", VbMethod), 2)
dtSeconds = ZeroPadding(CallByName(d, "getSeconds", VbMethod), 2)
End With
ret = dtYear & "/" & dtMonth & "/" & dtDate & " " & dtHours & ":" & dtMinutes & ":" & dtSeconds
ConvertDate = ret
End Function
Private Function ZeroPadding(ByVal str As String, _
ByVal digit As Long) As String
'ゼロ埋め
ZeroPadding = Right(String(digit, "0") & str, digit)
End Function
上記の通りScriptControlを使用しているので、64ビット版のOfficeでは使えませんが、とりあえずこれで扱いやすい日付形式に変換することができました。
Visual Basic Advent Calendar 2017
Qiitaの「Visual Basic Advent Calendar 2017」に“Officeでも発表できるAdvent Calendar”とあったので、折角なので参加させていただくことにしました!
(大したネタでなくて申し訳ない・・・)

















この記事へのコメントはありません。