{"id":2458,"date":"2023-01-17T09:14:25","date_gmt":"2023-01-17T00:14:25","guid":{"rendered":"http:\/\/oreoreki.gotdns.ch\/?p=2458"},"modified":"2023-01-17T09:22:59","modified_gmt":"2023-01-17T00:22:59","slug":"post-2458","status":"publish","type":"post","link":"http:\/\/oreoreki.gotdns.ch\/?p=2458","title":{"rendered":"VBA\u3067JSON\u3092\u30a2\u30af\u30bb\u30b9\u3001\u3086\u3063\u304f\u308a\u30e0\u30fc\u30d3\u30fc\u30e1\u30fc\u30ab\u30fc4\u306e\u8a2d\u5b9a\u30fb\u30a8\u30d5\u30a7\u30af\u30c8\u3092\u4e00\u62ec\u5909\u63db"},"content":{"rendered":"<p><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\/\/www.youtube.com\/embed\/B8OEoUYu7i8?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\"><\/iframe><\/span><\/p>\n<p><span>VBA\u3067JSON\u3092\u30a2\u30af\u30bb\u30b9\u3001\u3086\u3063\u304f\u308a\u30e0\u30fc\u30d3\u30fc\u30e1\u30fc\u30ab\u30fc4\u306e\u8a2d\u5b9a\u30fb\u30a8\u30d5\u30a7\u30af\u30c8\u3092\u4e00\u62ec\u5909\u63db\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/span><br \/>\n<span class=\"bold-red\">\u3053\u306e\u52d5\u753b\u306e\u30de\u30af\u30ed\u306fWindows11\/Office2016\u3067\u4f5c\u6210\u3057\u3066\u307e\u3059\u3002<br \/>\n<\/span><\/p>\n<h2><\/h2>\n<pre class=\"prism line-numbers lang-ts\" data-lang=\"TypeScript\"><code>Sub sample1()\r\n    '\u3086\u3063\u304f\u308a\u30e0\u30fc\u30d3\u30fc\u30e1\u30fc\u30ab\u30fc4\u306e\u5b9a\u7fa9\u30d5\u30a1\u30a4\u30ebymmp\u304b\u3089\u30bb\u30ea\u30d5\u3092\u8aad\u307f\u51fa\u3059\r\n    \r\n    \r\n    Set fso = CreateObject(\"Scripting.FileSystemObject\")\r\n    \r\n    CurrentDirectory = ActiveWorkbook.Path\r\n    \r\n    Set Effect0 = New Dictionary\t'\u300cMicrosoft Scripting Runtime\u300d\u3092\u53c2\u7167\u8a2d\u5b9a\r\n    Set Effect1 = New Dictionary\r\n    \r\n    Effect1.Add \"From\", 150\r\n    Effect0.Add \"$type\", \"YukkuriMovieMaker.Project.Effects.JumpEffect, YukkuriMovieMaker\"\r\n    Effect0.Add \"Label\", \"\u8df3\u306d\u308b\"\r\n    Effect0.Add \"JumpHeight\", Effect1\r\n    \r\n    'ymmp\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\r\n    Dim sr      As Object\r\n    Dim strData As String\r\n        strData = JsonConverter.ConvertToJson(Effect0)\r\n    Set sr = CreateObject(\"ADODB.Stream\")\r\n    sr.Mode = 3 '\u8aad\u307f\u53d6\u308a\/\u66f8\u304d\u8fbc\u307f\u30e2\u30fc\u30c9\r\n    sr.Type = 2 '\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\r\n    sr.Charset = \"UTF-8\" '\u6587\u5b57\u30b3\u30fc\u30c9\u3092\u6307\u5b9a\r\n    \r\n    sr.Open 'Stream\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u958b\u304f\r\n    sr.LoadFromFile (fso.BuildPath(CurrentDirectory, \"test.ymmp\"))\r\n    sr.Position = 0 '\u30dd\u30a4\u30f3\u30bf\u3092\u5148\u982d\u3078\r\n    strData = sr.ReadText() '\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\r\n    sr.Close 'Stream\u3092\u9589\u3058\u308b\r\n    \r\n    'Debug.Print (strData)\r\n\r\n    ' JSON\u30d1\u30fc\u30b9\u30b5\u30f3\u30d7\u30eb\r\n    Dim jsonObj As Object\r\n    Set jsonObj = JsonConverter.ParseJson(strData)\r\n    \r\n    '\u30bb\u30ea\u30d5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30af\u30ed\u30fc\u30eb\u3059\u308b\r\n    For Each oItem In jsonObj(\"Timeline\")(\"Items\")\r\n        If InStr(oItem(\"$type\"), \"VoiceItem\") > 0 Then\r\n            'VoiceoItem\r\n            Debug.Print oItem(\"CharacterName\") & \",\" & oItem(\"Serif\")\r\n        End If\r\n    Next\r\n    \r\n    '\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u89e3\u653e\r\n    Set fso = Nothing\r\n    Set sr = Nothing\r\nEnd Sub\r\n\r\n\r\n\r\nSub sample2()\r\n    '\u3086\u3063\u304f\u308a\u30e0\u30fc\u30d3\u30fc\u30e1\u30fc\u30ab\u30fc4\u306e\u5b9a\u7fa9\u30d5\u30a1\u30a4\u30ebymmp\u3092\u66f8\u304d\u63db\u3048\u308b\r\n    \r\n    \r\n    Set fso = CreateObject(\"Scripting.FileSystemObject\")\r\n    \r\n    CurrentDirectory = ActiveWorkbook.Path\r\n    \r\n    Set Effect0 = New Dictionary\t'\u300cMicrosoft Scripting Runtime\u300d\u3092\u53c2\u7167\u8a2d\u5b9a\r\n    Set Effect1 = New Dictionary\r\n    \r\n    Effect1.Add \"From\", 150\r\n    Effect0.Add \"$type\", \"YukkuriMovieMaker.Project.Effects.JumpEffect, YukkuriMovieMaker\"\r\n    Effect0.Add \"Label\", \"\u8df3\u306d\u308b\"\r\n    Effect0.Add \"JumpHeight\", Effect1\r\n    \r\n    'ymmp\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\r\n    Dim sr      As Object\r\n    Dim strData As String\r\n        strData = JsonConverter.ConvertToJson(Effect0)\r\n    Set sr = CreateObject(\"ADODB.Stream\")\r\n    sr.Mode = 3 '\u8aad\u307f\u53d6\u308a\/\u66f8\u304d\u8fbc\u307f\u30e2\u30fc\u30c9\r\n    sr.Type = 2 '\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\r\n    sr.Charset = \"UTF-8\" '\u6587\u5b57\u30b3\u30fc\u30c9\u3092\u6307\u5b9a\r\n    \r\n    sr.Open 'Stream\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u958b\u304f\r\n    sr.LoadFromFile (fso.BuildPath(CurrentDirectory, \"test.ymmp\"))\r\n    sr.Position = 0 '\u30dd\u30a4\u30f3\u30bf\u3092\u5148\u982d\u3078\r\n    strData = sr.ReadText() '\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\r\n    sr.Close 'Stream\u3092\u9589\u3058\u308b\r\n    \r\n    'Debug.Print (strData)\r\n\r\n    ' JSON\u30d1\u30fc\u30b9\u30b5\u30f3\u30d7\u30eb\r\n    Dim jsonObj As Object\r\n    Set jsonObj = JsonConverter.ParseJson(strData)\r\n    \r\n    '\u30bb\u30ea\u30d5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30af\u30ed\u30fc\u30eb\u3059\u308b\r\n    For Each oItem In jsonObj(\"Timeline\")(\"Items\")\r\n        If InStr(oItem(\"$type\"), \"VoiceItem\") > 0 Then\r\n            'VoiceoItem\r\n            Debug.Print oItem(\"CharacterName\") & \",\" & oItem(\"Serif\")\r\n            \r\n            '\u30bb\u30ea\u30d5\u306b\u300c\u7b11\u300d\u304c\u3042\u3063\u305f\u3089\u3086\u3063\u304f\u308a\u306e\u8868\u60c5\u3092\u5909\u3048\u308b\r\n            If InStr(oItem(\"Serif\"), \"\u7b11\") > 0 Then\r\n                oItem(\"TachieFaceParameter\")(\"Eye\") = Replace(oItem(\"TachieFaceParameter\")(\"Eye\"), \"00.png\", \"06.png\")\r\n            End If\r\n            \r\n            '\u30bb\u30ea\u30d5\u306b\u300c\u306f\u306d\u3066\u300d\u304c\u3042\u3063\u305f\u3089\u8df3\u306d\u308b\u30a8\u30d5\u30a7\u30af\u30c8\u3092\u3064\u3051\u308b\r\n            If InStr(oItem(\"Serif\"), \"\u306f\u306d\u3066\") > 0 Then\r\n                oItem(\"TachieFaceEffects\").Add Effect0\r\n            End If\r\n            \r\n            '\u9b54\u7406\u6c99\u306e\u30ec\u30a4\u30e4\u30fc\u30924\u306b\u3059\u308b\r\n            If InStr(oItem(\"CharacterName\"), \"\u9b54\u7406\u6c99\") > 0 Then\r\n                oItem(\"Layer\") = 4\r\n            End If\r\n        End If\r\n    Next\r\n    \r\n    'ymmp\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304d\u8fbc\u3080\r\n    '\u7de8\u96c6\u3057\u305fjsonObj\u3092\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u306b\r\n    strData = JsonConverter.ConvertToJson(jsonObj)\r\n    sr.Open 'Stream\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u958b\u304f\r\n    sr.Position = 0 '\u30dd\u30a4\u30f3\u30bf\u3092\u5148\u982d\u3078\r\n    sr.WriteText strData\r\n    '\u4e0a\u66f8\u304d\u4fdd\u5b58\r\n    sr.SaveToFile fso.BuildPath(CurrentDirectory, \"test_update.ymmp\"), 2\r\n    sr.Close 'Stream\u3092\u9589\u3058\u308b\r\n    \r\n    '\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u89e3\u653e\r\n    Set fso = Nothing\r\n    Set sr = Nothing\r\nEnd Sub\r\n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>VBA\u3067JSON\u3092\u30a2\u30af\u30bb\u30b9\u3001\u3086\u3063\u304f\u308a\u30e0\u30fc\u30d3\u30fc\u30e1\u30fc\u30ab\u30fc4\u306e\u8a2d\u5b9a\u30fb\u30a8\u30d5\u30a7\u30af\u30c8\u3092\u4e00\u62ec\u5909\u63db\u3057\u3066\u307f\u307e\u3057\u305f\u3002 \u3053 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2460,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[34],"tags":[],"class_list":["post-2458","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vba"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"http:\/\/oreoreki.gotdns.ch\/wp-content\/uploads\/sites\/2\/2023\/01\/mqdefault-1.jpg","jetpack_shortlink":"https:\/\/wp.me\/p9WqRX-DE","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=\/wp\/v2\/posts\/2458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2458"}],"version-history":[{"count":4,"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=\/wp\/v2\/posts\/2458\/revisions"}],"predecessor-version":[{"id":2465,"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=\/wp\/v2\/posts\/2458\/revisions\/2465"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=\/wp\/v2\/media\/2460"}],"wp:attachment":[{"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2458"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/oreoreki.gotdns.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}