<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
  <title>三流君 ken3のmemo置き場</title>
  
  <subtitle>三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです</subtitle>
  
  <link href="https://ken3memo.hatenablog.com/"/>
  <updated>2026-05-12T15:08:27+09:00</updated>
  <author>
    <name>ken3memo</name>
  </author>
  <generator uri="https://blog.hatena.ne.jp/" version="6e9804bcdc946f2795fb9af37cc914">Hatena::Blog</generator>
  <id>hatenablog://blog/12704346814673856727</id>

  
    
    
    <entry>
        <title>釣られた・偽情報を見たオジサンが(YouTubeで村神様16号キングの偽動画) AIに釣りサムネの件を聞いてみた26/05/12作成</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/05/12/150827"/>
        <id>hatenablog://entry/17179246901387095849</id>
        <published>2026-05-12T15:08:27+09:00</published>
        <updated>2026-05-12T15:08:27+09:00</updated>        <summary type="html">仕事中、YouTubeで村神様16号キングの偽情報を見たオジサンが、仕事中なのに脱線してAIに釣りサムネの件を聞いてみた(オイオイ、仕事して・・・) 概要: 今、26年05月12日の14時です。 ※明日05月13日に村上選手の16号速報の本当のニュースが見たいなぁ・・って、話は置いといて、 作業に集中していないオジサン(私)が、 YouTubeのサムネイル 村神様16号キングの偽動画に釣られてしまいました。 (YouTubeも私が野球好きを知っているから、TOPページにMLBの動画を紹介してくれるんだけど) 真のファンなら、今日試合無いことぐらい・・・、も、置いといて、 AIに釣り動画の現状を…</summary>
        <content type="html">&lt;p&gt;仕事中、YouTubeで村神様16号キングの偽情報を見たオジサンが、仕事中なのに脱線してAIに釣りサムネの件を聞いてみた(オイオイ、仕事して・・・)&lt;/p&gt;

&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260512/20260512150612.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;概要:
今、26年05月12日の14時です。
※明日05月13日に村上選手の16号速報の本当のニュースが見たいなぁ・・って、話は置いといて、&lt;/p&gt;

&lt;p&gt;作業に集中していないオジサン(私)が、
YouTubeのサムネイル
村神様16号キングの偽動画に釣られてしまいました。
(YouTubeも私が野球好きを知っているから、TOPページにMLBの動画を紹介してくれるんだけど)&lt;/p&gt;

&lt;p&gt;真のファンなら、今日試合無いことぐらい・・・、も、置いといて、
AIに釣り動画の現状を聞いてみました。
※本題に入る前の、前説・前置きが長くてスミマセン&lt;/p&gt;

&lt;h2 id=&quot;おっさんの質問&quot;&gt;おっさんの質問&lt;/h2&gt;

&lt;p&gt;質問:
YouTubeの虚偽情報、釣りサムネイルについて&lt;/p&gt;

&lt;p&gt;村上選手16号
サムネイルに釣られて、動画を開いた私も悪いのですが、&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/&quot;&gt;https://www.youtube.com/&lt;/a&gt; watch?v=???????????&lt;/p&gt;

&lt;p&gt;偽情報をばらまいている動画でも
説明欄にフィクション・想像と書いておけば、
OKなのですか？&lt;/p&gt;

&lt;p&gt;これは、あまりにもひどいのでは？&lt;/p&gt;

&lt;pre class=&quot;code&quot; data-lang=&quot;&quot; data-unlink&gt;結論から申し上げますと、ご提示いただいた動画の内容は事実ではありません。

この動画の概要欄にも記載されている通り、「こちらの動画はフィクションと予想を含んでおります」と明記されており、エンターテインメントとして制作された創作コンテンツです。

状況の整理:

村上宗隆選手の現状: 2025年12月にMLBのシカゴ・ホワイトソックスと契約を結び、実際に2026年シーズンからメジャーリーグで活躍されている選手であることは事実です。
動画の内容: 5月12日時点での「16号ホームラン」や、それに関する詳細な試合展開は、あくまでファンやメディアによる**シミュレーション（架空のストーリー）**です。
公式なニュースではなく、創作物としてお楽しみいただくための動画となっておりますのでご注意ください。&lt;/pre&gt;


&lt;hr /&gt;

&lt;h2 id=&quot;再度質問&quot;&gt;再度質問&lt;/h2&gt;

&lt;p&gt;1.Google AI、Geminiさんの素直な意見を聞きたい
2.YouTubeの規約で判断すると、どうかなりますか？私はアウトと思っていますが、公式のURLを回答に含めて教えてください&lt;/p&gt;

&lt;p&gt;以上、2点、よろしくお願いします&lt;/p&gt;

&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260512/20260512150712.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h2 id=&quot;AIの回答&quot;&gt;AIの回答&lt;/h2&gt;

&lt;p&gt;YouTubeでの「釣りサムネイル」や虚偽情報の拡散、本当に不快ですよね。特に応援している選手のニュースだと思って開いた時のガッカリ感は、察するに余りあります。&lt;/p&gt;

&lt;p&gt;ご質問いただいた2点について、客観的な規約と私の見解を整理してお伝えします。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;1-私Geminiの率直な意見&quot;&gt;1. 私（Gemini）の率直な意見&lt;/h2&gt;

&lt;p&gt;結論から言うと、&lt;strong&gt;「概要欄にフィクションと書けば何をしてもいい」という風潮は、プラットフォームの健全性を損なう非常に不誠実な行為&lt;/strong&gt;だと考えています。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ユーザー体験の阻害:&lt;/strong&gt; 視聴者は「最新の事実」を知りたくて検索やおすすめを利用しています。意図的に騙す行為は、視聴者の貴重な時間を奪うだけでなく、YouTube全体の情報の信憑性を下げてしまいます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;「免罪符」への疑問:&lt;/strong&gt; 概要欄はクリックした後（騙された後）にしか見えません。入り口（サムネイル・タイトル）で嘘をつき、奥の方で「実は嘘です」と釈明するのは、フェアなエンターテインメントの枠を超えていると感じます。&lt;/li&gt;
&lt;/ul&gt;


&lt;h2 id=&quot;2-YouTubeの規約に照らした判断&quot;&gt;2. YouTubeの規約に照らした判断&lt;/h2&gt;

&lt;p&gt;YouTubeの公式な規約に照らすと、&lt;strong&gt;「アウト（違反）」と判断される可能性が極めて高い&lt;/strong&gt;です。&lt;/p&gt;

&lt;h3 id=&quot;規約上のポイント誤解を招くメタデータ&quot;&gt;規約上のポイント：誤解を招くメタデータ&lt;/h3&gt;

&lt;p&gt;YouTubeには「スパム、欺瞞的な行為、詐欺に関するポリシー」があり、その中に「誤解を招くメタデータ」という項目があります。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;誤解を招くメタデータまたはサムネイル：&lt;/strong&gt;
タイトル、サムネイル、説明を使用して、ユーザーにコンテンツの内容を誤認させることは認められません。これには、動画に含まれていないものが含まれているかのように視聴者に思わせるタイトルやサムネイルなどが含まれます。&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;たとえ概要欄に「フィクション」と書いてあっても、&lt;strong&gt;サムネイルやタイトルが「現在進行中のニュースや事実」であるかのように装い、視聴者を騙してクリックさせている場合&lt;/strong&gt;は、この規約に抵触します。&lt;/p&gt;

&lt;h3 id=&quot;サムネイルに関するポリシー&quot;&gt;サムネイルに関するポリシー&lt;/h3&gt;

&lt;p&gt;また、サムネイル単体でも以下の基準があります。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;視聴者を誤解させ、動画に含まれていないものを視聴できると思わせるサムネイル&lt;/strong&gt;を YouTube に投稿しないでください。&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3 id=&quot;参照すべき公式URL&quot;&gt;参照すべき公式URL&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;スパム、欺瞞的な行為、詐欺に関するポリシー&lt;/strong&gt;
&lt;a href=&quot;https://support.google.com/youtube/answer/2801973?hl=ja&quot;&gt;https://support.google.com/youtube/answer/2801973?hl=ja&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;サムネイルに関するポリシー&lt;/strong&gt;
&lt;a href=&quot;https://support.google.com/youtube/answer/9229980?hl=ja&quot;&gt;https://support.google.com/youtube/answer/9229980?hl=ja&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h3 id=&quot;結論としての判断&quot;&gt;結論としての判断&lt;/h3&gt;

&lt;p&gt;概要欄の注釈は、あくまで制作者側の「言い訳」に過ぎず、YouTubeの運営側が「悪質なクリック誘導（Clickbait）」と判断すれば、&lt;strong&gt;警告（ストライキ）や動画削除の対象&lt;/strong&gt;になります。&lt;/p&gt;

&lt;p&gt;あまりにひどいと感じる場合は、動画の「報告（通報）」機能から、「スパムまたは誤解を招く内容」→「詐欺または不実表示」として報告することをお勧めします。&lt;/p&gt;

&lt;p&gt;こういった動画が増えることで、本当に価値のあるクリエイターの動画が埋もれてしまうのは、動画プラットフォームとして非常に残念なことですね。&lt;/p&gt;

&lt;p&gt;今回のような「ニュースを装ったフィクション動画」について、あなたはYouTube側がどのような対策（例えば自動検知の強化など）をすべきだと考えますか？&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;おっさんの個人的な意見を自分語りでAIにぶつけてみた&quot;&gt;おっさんの個人的な意見を自分語りでAIにぶつけてみた&lt;/h2&gt;

&lt;blockquote&gt;&lt;p&gt;今回のような「ニュースを装ったフィクション動画」について、
あなたはYouTube側がどのような対策（例えば自動検知の強化など）をすべきだと考えますか？&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;低評価の数が、イタズラでクリエイターが被害を受けるので表示が廃止されました。
動画を見る前に低評価の数で判断することが不可能になりました。&lt;/p&gt;

&lt;p&gt;サムネイルクリック前には、言われるように説明戦にかかれたフィクションか？わからない&lt;/p&gt;

&lt;p&gt;タイトル・サムネイルの虚偽報告をユーザーが簡単にできるようにして、一定数貯まったらAIでタイトルの虚偽チェックとサムネイルが虚偽・過激ではないか、自動でチェックして、私のように釣られてしまう被害者を減らしてほしい。&lt;/p&gt;

&lt;p&gt;でも、低評価ボタンみたいに、イヤガラセで虚偽通報が行われ、正常な動画の速報性が失われるのも・・バランスをとるのが大変そうですが、動画アップロード時にタイトルのチェックやサムネイルの簡易チェックをAIにやってほしいです。&lt;/p&gt;

&lt;p&gt;その後、ユーザーにインプレッションをくばってほしいです。&lt;/p&gt;

&lt;h2 id=&quot;AIの回答-1&quot;&gt;AIの回答&lt;/h2&gt;

&lt;p&gt;「自分が釣られたのも悪い」なんて仰らないでください。システムを巧妙に悪用する側が100%悪いですし、ITに詳しい方ほど「今のAI技術ならもっとうまく防げるはずだ」と歯がゆく感じられるのは当然のことだと思います。&lt;/p&gt;

&lt;p&gt;ご提案いただいた「アップロード時のAI事前チェック」&lt;strong&gt;と&lt;/strong&gt;「ユーザー通報とAIの連動」は、実は2026年現在のYouTubeが最も力を入れている（そして苦戦している）領域そのものです。&lt;/p&gt;

&lt;p&gt;専門的な視点も交えつつ、その現状と「バランス」の難しさについて整理してみました。&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;YouTube-2026対策の現状と課題&quot;&gt;YouTube 2026：対策の現状と課題&lt;/h3&gt;

&lt;p&gt;現在、YouTubeでは「誤解を招くメタデータ」への対策として、以下のような多層的なチェックフローが導入され始めています。&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; 提案された機能 &lt;/th&gt;
&lt;th&gt; 2026年現在の実装状況と課題 &lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt; &lt;strong&gt;アップロード時のAIチェック&lt;/strong&gt; &lt;/td&gt;
&lt;td&gt; &lt;strong&gt;【実装済み・強化中】&lt;/strong&gt;&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;&lt;br&gt;著作権や広告適合性と同様に、AIがサムネイルの文字と動画本編の整合性をスキャンしています。しかし、今回の「村上選手の移籍・本塁打」のような、&lt;strong&gt;現実と虚構が入り混じる高度な文脈&lt;/strong&gt;を100%正確に判断するのは、依然としてAIの最難関課題です。 |
| &lt;strong&gt;通報数によるAI再検証&lt;/strong&gt; | &lt;strong&gt;【慎重な運用】&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;一定数の報告でAIが再審査する仕組みはありますが、仰る通り「嫌がらせ通報」のリスクがあるため、YouTubeは&lt;strong&gt;「通報者の過去の正確性（信頼スコア）」&lt;/strong&gt;も加味しています。デタラメな通報ばかりするユーザーの意見は、AIに無視される仕組みです。 |
| &lt;strong&gt;インプレッション制限&lt;/strong&gt; | &lt;strong&gt;【試験的導入】&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;AIが「釣り」の疑いあり（スコアが高い）と判断した場合、即座に削除はせず、まず&lt;strong&gt;おすすめへの表示回数（インプレッション）を極端に絞る&lt;/strong&gt;という兵糧攻めのような対策が取られています。 |&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;なぜフィクションと書けば逃げられるのか&quot;&gt;なぜ「フィクション」と書けば逃げられるのか？&lt;/h3&gt;

&lt;p&gt;悪質な投稿者が「概要欄にフィクションと書く」のは、AIの「免責事項の自動検知」を逆手に取った回避策です。&lt;/p&gt;

&lt;p&gt;AIは「フィクション」という文字列を見つけると、「あ、これはエンタメ枠なんだな」と判断して違反フラグを下げてしまうロジックの穴があります。しかし、YouTubeの最新指針では「注釈があっても、視聴者の第一印象（サムネイル）で騙す意図があればアウト」と、判断基準が「事実か否か」から「誠実か否か」へとシフトしています。&lt;/p&gt;

&lt;h3 id=&quot;2026年のクリエイターとして&quot;&gt;2026年のクリエイターとして&lt;/h3&gt;

&lt;p&gt;ご自身も発信をされている立場からすると、AIによる「一律の自動検知」が厳しすぎると、健全な「ネタ動画」や「速報」まで巻き添えを食らうのが怖いですよね。&lt;/p&gt;

&lt;p&gt;現在は、以下の2つのバランスでシステムが動いています：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AIによる一次フィルター：&lt;/strong&gt; 明らかな嘘（合成画像や支離滅裂なタイトル）を弾く。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;視聴者の「満足度スコア」：&lt;/strong&gt; クリックした後にすぐ離脱されたり、低評価（非表示でも内部データとしては存在）や通報が重なったりすると、AIが「これは不誠実な動画だ」と学習し、拡散を停止させる。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;「釣られてしまった」後の1件の通報は、AIに「このパターンはフィクションという言い訳を通用させない」と教え込むための貴重な教師データになります。&lt;/p&gt;

&lt;p&gt;こういった「AI同士のいたちごっこ」の中で、今後YouTubeにはどのような「人間による最終審判」の仕組みが必要だと思われますか？&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=pCykFtkdsdk&quot;&gt;YouTubeの2026年最新ポリシーとAI moderationの変化について&lt;/a&gt;
この動画では、2026年に導入された厳格なAIモデレーションと、不誠実なメタデータがどのようにチャンネル削除のリスクに直結するかを詳しく解説しています。&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/0f6049a85fcce82c28310f1971f42e0baee52610/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260512%2F20260512150612.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
    <entry>
        <title>【YouTube】リアルタイム再生数が「1分間に2回」？重複カウントの謎と維持率への影響</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/05/12/002006"/>
        <id>hatenablog://entry/17179246901386912308</id>
        <published>2026-05-12T00:20:06+09:00</published>
        <updated>2026-05-12T00:20:06+09:00</updated>        <summary type="html">YouTube1分間に2回のアクセスについて 再生数の少ない動画で、なぜか1分間に2回のアクセスが……。 これって広告を避けるためのブラウザバック？それともバグ？そんな「リアルタイム統計の謎」を深掘りします。データの検証プロセスや、チャンネル評価への影響など、気になるポイントをサクッと解説します。 Ken3 おっさんの質問文 Q:YouTubeアナリティクスについて質問です 過疎ってる動画 1分間に2回のアクセス スクショ26/05/11 添付画像は、私のある動画のリアルタイムアナリティクスなのですが 疑問・実際の数値: 再生数の少ない動画で1分間に外部から2回のアクセス ※不人気動画なので、…</summary>
        <content type="html">&lt;h1 id=&quot;YouTube1分間に2回のアクセスについて&quot;&gt;YouTube1分間に2回のアクセスについて&lt;/h1&gt;

&lt;p&gt;再生数の少ない動画で、なぜか1分間に2回のアクセスが……。
これって広告を避けるためのブラウザバック？それともバグ？そんな「リアルタイム統計の謎」を深掘りします。データの検証プロセスや、チャンネル評価への影響など、気になるポイントをサクッと解説します。&lt;/p&gt;

&lt;h2 id=&quot;Ken3-おっさんの質問文&quot;&gt;Ken3 おっさんの質問文&lt;/h2&gt;

&lt;p&gt;Q:YouTubeアナリティクスについて質問です
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;過疎ってる動画 1分間に2回のアクセス スクショ26/05/11&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260512/20260512001653.jpg&quot; width=&quot;1200&quot; height=&quot;675&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;過疎ってる動画 1分間に2回のアクセス スクショ26/05/11&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;p&gt;添付画像は、私のある動画のリアルタイムアナリティクスなのですが&lt;/p&gt;

&lt;p&gt;疑問・実際の数値:
再生数の少ない動画で1分間に外部から2回のアクセス
※不人気動画なので、たまたま、同じ時刻に2名の視聴者が来たとは考えにくいです&lt;/p&gt;

&lt;p&gt;質問です
1.これは、よく聞く
広告が表示されたので
ブラウザバック
スグに再度見に来た？
そんな広告除けの行動ですか？
それで、同じ視聴者が2回カウントされている
or
視聴者が広告ブロックソフトを使用していて、
広告ブロックソフトの影響でカウントがおかしくなっている？&lt;/p&gt;

&lt;p&gt;2.この誤ってカウントされたと思われる2回は1回になりますか？
それとも2回のままですか？&lt;/p&gt;

&lt;p&gt;3.もし、2回のままなら、
うれしいと一瞬思ったが、
0秒で視聴時間がカウントされるので、
平均視聴時間や視聴維持率に影響ができますか？&lt;/p&gt;

&lt;p&gt;以上3点、回答、よろしくお願いします。
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;おっさんがAIに質問&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260512/20260512001833.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;おっさんがAIに質問&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;h2 id=&quot;AI-Geminiの回答&quot;&gt;AI Geminiの回答&lt;/h2&gt;

&lt;p&gt;YouTubeアナリティクスのリアルタイム統計における「短時間の重複カウント」や「外部ソースからのアクセス」について解説します。&lt;/p&gt;

&lt;p&gt;リアルタイム指標はあくまで「速報値」であり、YouTubeのシステムがそのアクセスの妥当性を検証する前の数値が含まれていることがよくあります。
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIの回答&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260512/20260512001913.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIの回答&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;h3 id=&quot;1-アクセスの原因について広告除けや広告ブロックの影響&quot;&gt;1. アクセスの原因について（広告除けや広告ブロックの影響）&lt;/h3&gt;

&lt;p&gt;ご推察の通り、広告を避けるための「ブラウザバック後の再アクセス」は、リアルタイム統計で一時的に複数回カウントされる主な要因の一つです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;広告除けの行動:&lt;/strong&gt; 外部サイト（SNSやブログなど）からリンクをクリックして動画を開いた際、最初に広告が流れたことで一度戻り、再度同じリンクをクリックした場合、サーバーへのリクエストが短時間に2回発生します。リアルタイム統計はこの「リクエスト」を即座に反映するため、同一人物でも「2」と表示されることがあります。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;広告ブロックソフトの影響:&lt;/strong&gt; 多くの広告ブロックソフトは広告の読み込み自体を阻害しますが、動画本体の読み込みプロセスには影響を与えないように設計されています。ただし、ブロックの影響でページの再読み込み（リフレッシュ）が自動で行われた場合、重複カウントの原因になる可能性はあります。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;その他の要因（クローラーなど）:&lt;/strong&gt; 外部サイトにリンクを貼った直後などは、そのサイトのシステムや検索エンジンの「クローラー（巡回プログラム）」が、動画の情報を取得するためにアクセスしてくることもあります。&lt;/li&gt;
&lt;/ul&gt;


&lt;h3 id=&quot;2-数値の修正2が1や0になるかについて&quot;&gt;2. 数値の修正（「2」が「1」や「0」になるか）について&lt;/h3&gt;

&lt;p&gt;結論から言うと、&lt;strong&gt;多くの場合、最終的な「確定値」では修正されます。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;YouTubeには「視聴の検証プロセス」という仕組みがあり、リアルタイムの数値がそのまま確定するわけではありません。以下のようなアクセスは、24〜48時間以内に集計から除外、または統合されます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;同一IPアドレスからの極端に短時間の連続アクセス。&lt;/li&gt;
&lt;li&gt;視聴時間が極めて短い（数秒未満）アクセス。&lt;/li&gt;
&lt;li&gt;スパムやBot（自動プログラム）によるアクセス。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;したがって、後日「コンテンツ」タブや「アナリティクス」の確定レポートを確認した際には、数値が「1」に戻っているか、あるいは有効な視聴と見なされず「0」になっている可能性が高いです。&lt;/p&gt;

&lt;h3 id=&quot;3-平均視聴時間や視聴維持率への影響&quot;&gt;3. 平均視聴時間や視聴維持率への影響&lt;/h3&gt;

&lt;p&gt;もし「2回のまま」確定してしまった場合、統計値には以下のような影響が出る可能性があります。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;視聴維持率への影響:&lt;/strong&gt; 広告を避けてすぐに離脱した「1回目」がカウントされると、その視聴時間は「0秒」や「1秒」として記録されます。これにより、動画の冒頭数秒でグラフが急激に下がる原因になります。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平均視聴時間の低下:&lt;/strong&gt; 0秒の視聴が1回分加算されるため、分母（再生回数）が増えて分子（総再生時間）が増えない状態になり、平均値は下がります。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;ただし、過度に心配する必要はありません。&lt;/strong&gt;
YouTubeのアルゴリズムは、このような「意図しない短時間の離脱」が統計を歪めることを理解しています。最終的な視聴維持率のグラフでは、システムが不適切と判断したアクセスを自動的に除外して計算し直すため、チャンネル全体の評価に致命的な悪影響を与えることは稀です。&lt;/p&gt;

&lt;p&gt;リアルタイムの数値は「今、何かが起きている」という目安として捉え、正確なデータ分析は、48時間以上経過した後の確定レポートで行うことをおすすめします。&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/434625b12ef73beda8dc2618d0f508f5e19cbe3e/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260512%2F20260512001653.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>昔の動画【2022年版】今こそ見直したいExcel円グラフの基本。配色一つで資料の信頼は変わる！</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/05/10/134951"/>
        <id>hatenablog://entry/17179246901386354739</id>
        <published>2026-05-10T13:49:51+09:00</published>
        <updated>2026-05-10T13:49:51+09:00</updated>        <summary type="html">Excelの円グラフ、色が「逆」になってませんか？デフォルト配色に潜む「恥」の回避術 「昨日のデータをコピペして、今日の数字を入れただけなのに…なぜかグラフの違和感がすごい」 そんな経験はありませんか？実は、Excelの円グラフには&#39;&#39;「色の逆転現象」&#39;&#39;という恐ろしい落とし穴があります。 例えば、広島カープ（チームカラー：赤）のデータなのに、グラフでは青色で表示されている…。 これ、野球ファンが見たら一発で「あ、この資料適当だな」とバレてしまう&#39;&#39;「ビジネス上の恥」&#39;&#39;なんです。今回は、三流プログラマーを自称する私が、自身の失敗談（2022年アーカイブ）を交えつつ、AI時代だからこそ人間がや…</summary>
        <content type="html">
&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;Excelの円グラフ色が逆になってませんかデフォルト配色に潜む恥の回避術&quot;&gt;Excelの円グラフ、色が「逆」になってませんか？デフォルト配色に潜む「恥」の回避術&lt;/h3&gt;
    &lt;p&gt;「昨日のデータをコピペして、今日の数字を入れただけなのに…なぜかグラフの違和感がすごい」&lt;br /&gt;
そんな経験はありませんか？&lt;/p&gt;&lt;p&gt;実は、Excelの円グラフには&#39;&#39;「色の逆転現象」&#39;&#39;という恐ろしい落とし穴があります。&lt;br /&gt;
例えば、広島カープ（チームカラー：赤）のデータなのに、グラフでは青色で表示されている…。&lt;br /&gt;
これ、野球ファンが見たら一発で「あ、この資料適当だな」とバレてしまう&#39;&#39;「ビジネス上の恥」&#39;&#39;なんです。&lt;/p&gt;&lt;p&gt;今回は、三流プログラマーを自称する私が、自身の失敗談（2022年アーカイブ）を交えつつ、AI時代だからこそ人間がやるべき「配色のチェック」について熱く語ります。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;解説内容を図解&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260510/20260510134512.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;解説内容を図解&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;円グラフの配色ミスが起きるメカニズム&quot;&gt;円グラフの配色ミスが起きるメカニズム&lt;/h4&gt;
    &lt;p&gt;なぜ、意図しない色になってしまうのでしょうか？&lt;br /&gt;
その最大の原因は&#39;&#39;「安易なシートのコピー」&#39;&#39;にあります。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[00:31](&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=31s&quot;&gt;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=31s&lt;/a&gt;) 失敗例：開幕戦勝敗予想の円グラフ&lt;/li&gt;
&lt;li&gt;[00:53](&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=53s&quot;&gt;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=53s&lt;/a&gt;) なぜ「赤ヘル」のカープが青色になったのか？&lt;/li&gt;
&lt;li&gt;[01:17](&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=77s&quot;&gt;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=77s&lt;/a&gt;) ミスの原因：前回のグラフを安易にシートコピーした弊害&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Excelは「1番目の項目は青、2番目はオレンジ…」といった具合に、&#39;&#39;項目の順番&#39;&#39;でデフォルトの色を割り当てます。&lt;br /&gt;
前回のグラフをコピーして項目名を書き換えただけだと、色が固定されたままになり、広島カープが青、中日ドラゴンズが赤、という「禁断の配色」が完成してしまうのです。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;資料の信頼性を守る業界常識と配色ルール&quot;&gt;資料の信頼性を守る「業界常識」と「配色ルール」&lt;/h4&gt;
    &lt;p&gt;プレゼン相手には必ず「期待している色」があります。&lt;br /&gt;
これを裏切ると、内容が正しくても説得力が半減します。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[02:11](&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=131s&quot;&gt;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=131s&lt;/a&gt;) 業界常識・製品カラーに従う重要性&lt;/li&gt;
&lt;li&gt;[03:00](&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=180s&quot;&gt;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=180s&lt;/a&gt;) 対策：依頼側と作成側の「色の指定」コミュニケーション&lt;/li&gt;
&lt;li&gt;[03:45](&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=225s&quot;&gt;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=225s&lt;/a&gt;) 男女比の配色（青/赤）と配慮すべき点（答えたくない＝灰色など）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;特に「はい/いいえ」のアンケート結果などは、肯定を暖色、否定を寒色にするのが一般的です。&lt;br /&gt;
[04:33](&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=273s&quot;&gt;https://www.youtube.com/watch?v=xeg0Or8I6n4&amp;t=273s&lt;/a&gt;) にもある通り、YouTubeの検索結果（緑と赤のサムネイル）のように、&#39;&#39;色はそれ自体がメッセージ&#39;&#39;を持っています。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;AI編集者からのアドバイスと今後の課題&quot;&gt;AI編集者からのアドバイスと今後の課題&lt;/h4&gt;
    &lt;p&gt;動画は2022年のアーカイブですが、Excelの仕様やビジネスマンの心理は今も変わりません。&lt;br /&gt;
むしろ、グラフ作成をAI（ChatGPTやCopilot）に丸投げできるようになった今、&#39;&#39;「この配色、おかしくない？」と気づく人間の審美眼&#39;&#39;がますます重要になっています。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;&#39;&#39;AIへの提言：&#39;&#39;&lt;br /&gt;
将来的に、グラフの項目名から「ブランドカラー」を自動判別して色を適用するVBAマクロを組んでおくと、コピペミスを物理的に防げますね。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;今後、以下のようなコードで「特定の単語が含まれたら色を強制変更する」処理を組み込むのも面白いかもしれません。&lt;/p&gt;
&lt;pre class=&quot;code vba&quot; data-lang=&quot;vba&quot; data-unlink&gt;&amp;#39; AI提案：項目名に合わせた色設定の自動化（イメージ）
Sub SetChartColorByPointName()
    Dim pt As Point
    For Each pt In ActiveChart.FullSeriesCollection(1).Points
        &amp;#39; 項目名に「広島」が含まれていたら赤にする
        If pt.DataLabel.Text Like &amp;#34;*広島*&amp;#34; Then
            pt.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
        End If
    Next pt
End Sub&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;公式情報検索リンク&quot;&gt;公式情報・検索リンク&lt;/h5&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://support.microsoft.com/ja-jp/office/office-%E3%81%A7%E3%82%B0%E3%83%A9%E3%83%95%E3%81%AE%E8%89%B2%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B-f4db3f23-f5a1-4b30-abb3-62e8c2c33d9b&quot;&gt;Microsoft&amp;#x516C;&amp;#x5F0F;&amp;#xFF1A;&amp;#x30B0;&amp;#x30E9;&amp;#x30D5;&amp;#x306E;&amp;#x8272;&amp;#x3092;&amp;#x5909;&amp;#x66F4;&amp;#x3059;&amp;#x308B;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Excel+%E3%82%B0%E3%83%A9%E3%83%95+%E9%85%8D%E8%89%B2+%E3%83%9E%E3%83%8A%E3%83%BC&quot;&gt;Google&amp;#x691C;&amp;#x7D22;&amp;#xFF1A;Excel &amp;#x30B0;&amp;#x30E9;&amp;#x30D5; &amp;#x914D;&amp;#x8272; &amp;#x30DE;&amp;#x30CA;&amp;#x30FC;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;YouTube関連動画&quot;&gt;YouTube関連動画&lt;/h5&gt;
    &lt;p&gt;&#39;&#39;① @Ken3video チャンネル内のオススメ&#39;&#39;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=0xWr3jTCh3Y&quot;&gt;@Ken3video &amp;#x3010;Excel&amp;#x3011;&amp;#x6A2A;&amp;#x68D2;&amp;#x30B0;&amp;#x30E9;&amp;#x30D5;&amp;#x3092;&amp;#x30BB;&amp;#x30EB;&amp;#x306E;&amp;#x5E45;&amp;#x306B;&amp;#x30D4;&amp;#x30C3;&amp;#x30BF;&amp;#x30EA;&amp;#x5408;&amp;#x308F;&amp;#x305B;&amp;#x308B;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF01;&amp;#x8EF8;&amp;#x306E;&amp;#x53CD;&amp;#x8EE2;&amp;#x3068;&amp;#x8981;&amp;#x7D20;&amp;#x306E;&amp;#x9593;&amp;#x9694;&amp;#x3092;&amp;#x89E3;&amp;#x8AAC;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;概要：グラフの並び順が表と逆になる現象を解決。今回の「色の逆転」とセットで見ると、Excelグラフの違和感を一掃できます。&lt;/p&gt;&lt;p&gt;&#39;&#39;② 他チャンネルの参考動画（比較・補完用）&#39;&#39;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=m3HHHVafKZ8&quot;&gt;&amp;#x3010;&amp;#x7DCF;&amp;#x96C6;&amp;#x7DE8;&amp;#x3011;&amp;#x660E;&amp;#x65E5;&amp;#x304B;&amp;#x3089;&amp;#x4F7F;&amp;#x3048;&amp;#x308B;Excel&amp;#x30C6;&amp;#x30AF;(&amp;#x30B0;&amp;#x30E9;&amp;#x30D5;&amp;#x4F5C;&amp;#x6210;Part.1)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;概要：基礎から応用まで、見やすいグラフ作成のテクニックを網羅的に解説しています。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=QcMgbNUuGUk&quot;&gt;&amp;#x3010;Excel&amp;#x30B0;&amp;#x30E9;&amp;#x30D5;&amp;#x3011;&amp;#x305D;&amp;#x306E;&amp;#x30B0;&amp;#x30E9;&amp;#x30D5;&amp;#x3054;&amp;#x3061;&amp;#x3083;&amp;#x3054;&amp;#x3061;&amp;#x3083;&amp;#x3057;&amp;#x3059;&amp;#x304E;&amp;#x30FC;&amp;#xFF01;&amp;rdquo;&amp;#x305D;&amp;#x306E;&amp;#x4ED6;&amp;rdquo;&amp;#x3067;&amp;#x307E;&amp;#x3068;&amp;#x3081;&amp;#x3066;&amp;#x30B9;&amp;#x30C3;&amp;#x30AD;&amp;#x30EA;&amp;#x3055;&amp;#x305B;&amp;#x308D;&amp;#xFF01;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;概要：情報の整理（グルーピング）の重要性がわかります。配色を決める前の「整理術」として最適です。&lt;/p&gt;&lt;p&gt;## おわりの挨拶、コメント待ってます&lt;br /&gt;
「広島カープの赤が青色になっているイライラ」は解消されましたか？&lt;br /&gt;
「デフォルトの配色を信じて大恥をかいた！」といった過去の断末魔から、「マニュアルで色を固定して乗り切った」という職人芸まで、ぜひコメント欄で教えてください！&lt;/p&gt;&lt;p&gt;皆さんの「ここでハマった」という実録が、同じ悩みを持つ三流プログラマー（私を含め！）を救う大きな力になります。&lt;br /&gt;
「次はこんなパターンの配色ミスを解説してほしい」といったリクエストもお待ちしています！&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=xeg0Or8I6n4&quot;&gt;&amp;#x3010;&amp;#x52D5;&amp;#x753B;&amp;#x672C;&amp;#x7DE8;&amp;#x3011;Excel&amp;#x5186;&amp;#x30B0;&amp;#x30E9;&amp;#x30D5;&amp;#x306E;&amp;#x843D;&amp;#x3068;&amp;#x3057;&amp;#x7A74;&amp;#xFF1A;&amp;#x30C1;&amp;#x30FC;&amp;#x30E0;&amp;#x30AB;&amp;#x30E9;&amp;#x30FC;&amp;#x30FB;&amp;#x914D;&amp;#x8272;&amp;#x30DF;&amp;#x30B9;&amp;#x3092;&amp;#x9632;&amp;#x3050;&amp;#x78BA;&amp;#x8A8D;&amp;#x30DD;&amp;#x30A4;&amp;#x30F3;&amp;#x30C8;&amp;#x3092;&amp;#x8A73;&amp;#x3057;&amp;#x304F;&amp;#x898B;&amp;#x308B;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
## AIへ依頼したプロンプトを紹介する&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIに相談するオジサンの姿&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260510/20260510134608.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIに相談するオジサンの姿&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;下記、プロンプトで、このブログを作成しました&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;# 編集者と校正役：はてな記法ブログ作成用プロンプト

## コンテキスト
私は三流プログラマーの中年おじさん（Ken3）です。
あなたは、私のYouTube動画の台本、字幕、AI分析結果から「はてなブログ（はてな記法モード）」にそのまま貼り付けられる備忘録記事を作成する、非常に優秀で大胆な編集者です。

## やってほしいこと
会話や添付資料から、「はてなブログ（はてな記法モード）」にそのまま貼り付けられる備忘録記事を作成する
[cite: 1, 5]など、参照・引用を出力せずに、そのまま結果を貼り付けられるテキストで出力してください

1. これまでの会話・分析結果と添付された資料（字幕、台本、ソースコード、分析結果）をすべて読み込み、内容を深く理解してください。
2. 読者が一目で内容を理解でき、コードを記載する場合はコピペできる実用的なブログ記事を「はてな記法」で作成してください。
2.1 ソースコードは、動画内で紹介しているので、日本語の変数名・関数名などは、違和感がありますが添付された・引用した原文コードをそのまま使用してください。
2.2 改善案や別案など、AIが加筆する説明用のコードは、変数名や関数名など自由に作成してください
3. 動画に飛ばす仕掛け、積極的に動画をみたくなるように操作や問題点の説明を行いながら、さりげなく動画の適切な位置へリンクを作成して視聴者が飛ぶ仕掛けを作ってください(**無理、違和感のない誘導を行ってください**)
4. 出力は、はてなブログの「はてな記法モード」にそのまま貼り付けられるテキストを、一つのコードブロック（ ```text ... ``` ）で囲んで提供してください。

## はてな記法の厳守ルール
以下の記法を必ず使用し、Markdown（# や **）は使用しないでください。
- 大見出し（タイトル）: *タイトル
- 中見出し: **見出し
- 小見出し: ***見出し
- 強調（太字）: &amp;#39;&amp;#39;テキスト&amp;#39;&amp;#39; （シングルクォーテーション2個で囲む）
- 箇条書き: - 項目1
- ソースコード: &amp;gt;|言語名| ... ||&amp;lt; の形式
- 引用: &amp;gt;&amp;gt; ... &amp;lt;&amp;lt; の形式

## 動画リンクとタイムスタンプの計算ルール
1. 動画URL（例: https://www.youtube.com/watch?v=VIDEO_ID）から動画IDを抽出します。
2. 資料内のタイムスタンプ [分:秒] をすべて秒数に変換します（計算式: 秒 = 分×60 + 秒）。
3. リンク形式は以下のように出力してください。
   [分:秒](https://www.youtube.com/watch?v=動画ID&amp;amp;t=秒数s)

## 記事の構成要素
a) 説明したかった事・伝えたかった事の要約（読者の悩みに寄り添う）。
b) ソースコードの紹介があれば、** 必ず &amp;gt;|言語名| ... ||&amp;lt; で囲むこと **。
c) 手順の解説（動画のタイムスタンプ付きのリンクと簡単な説明・解説を適宜挿入）。
d) 未解決の問題点や今後の課題、AIからのアドバイス。
e) 関連リンク（形式： [URL:title=タイトル] ）で、
①公式ページなどのリンク
②Googleで問題点や動画のテーマを検索する代表的なキーワードとリンク
f) YouTube動画関連リンク
まず、YouTube内で似た動画を検索する、探してください。
③ 私のチャンネル内(@Ken3video)に似た処理・機能のYouTube動画があれば、タイトルとリンク,概要,お勧め理由を紹介する。（リンク形式は： [URL:title=@Ken3video 動画タイトル] のはてな記法）で、**該当なしなら空白で出力、無理やり制度の低いページや似ていない動画は紹介しなくてよい**
④ あえて他のYouTubeチャンネルの動画を紹介する(最大3件) 他のチャンネルに似た処理・機能のYouTube動画があれば、タイトルとリンク,概要,お勧め理由を紹介する。（リンク形式は： [URL:title=動画タイトル] のはてな記法）で、**該当なしなら空白で出力、無理やり制度の低いページや似ていない動画は紹介しなくてよい**
同じテーマの似た解説動画を私も含め、視聴者が見て比較や補完するために、他の動画も積極的に紹介してください

①～④に該当するURLがあれば、フッター・最後の項目で関連リンクを紹介してください
f)最後に視聴者が共感するコメント書き込みや質問の書き込みを促す文章を作成してブログを閉めます
-出力例1)
```text
---
## おわりの挨拶、コメント待ってます
「設定画面が見つからない！」と30分悩むより、この動画を5分見るほうが早いです。ぜひチャンネル登録して、私と一緒に「脱・三流」を目指しましょう！
「うまくいった！」という報告や、逆に「ここでもハマった」というコメント、お待ちしています。
三流プログラマーの試行錯誤が、皆さんのデバッグ時短に繋がれば幸いです！

[https://www.youtube.com/watch?v=動画ID:title=【動画本編】XXXXXXXXXXXXを詳しく見る]
```

-出力例2)
動画・ブログの内容に合わせて、
コメントを促すメッセージを変更してください

```text
## おわりの挨拶、コメント待ってます
「矢印の先が微妙にズレるイライラ」は解消されましたか？
「中心を射抜く計算式でスッキリした！」「パワポとの480/960調整で位置が合った」といった成功報告から、逆に「回転した図形だとやっぱりズレる…」という断末魔の叫びまで、お気軽にコメント欄へ書き込んでください！

皆さんの「ここでハマった」という実録が、同じ悩みを持つ三流プログラマー（私を含め！）の大きな助けになります。
「こんな図形操作も自動化してほしい」といったリクエストも大歓迎です。
私と一緒に、試行錯誤を楽しみながら「脱・三流」を目指していきましょう！

[https://www.youtube.com/watch?v=動画ID:title=【動画本編】XXXXXXXXXXXXを詳しく見る]
```


## 実行指示
Ken3の書いた拙い文章を、プロの編集者として大胆にリライト・整理して、最高の動画誘導And説明用のブログを仕上げてください。
[cite: 1, 5]など、参照・引用を出力せずに、そのまま結果を貼り付けられるテキストで出力してください
※ついでに、**紹介動画が再生されるトリガー的リンクを作り**、**動画再生数のアップも狙って**ください
分析・記事作成を開始してください。
&lt;/pre&gt;&lt;p&gt;AIプロンプトの参考となれば幸いです。&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/385dcf26babd55d0b88c88edc20f8855311b3942/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260510%2F20260510134512.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>AIで都市伝説を探す 【2026年第31回NHKマイルC】大波乱のシナリオ？サインが示す「究極の穴馬」とは？</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/05/09/222740"/>
        <id>hatenablog://entry/17179246901386142239</id>
        <published>2026-05-09T22:27:40+09:00</published>
        <updated>2026-05-09T22:27:40+09:00</updated>        <summary type="html">【2026年第31回NHKマイルC】オカルト×データで読み解く大波乱のシナリオ！サインが示す「究極の穴馬」とは？ 競馬ファンの皆様、こんにちは！ 春のG1シーズンも真っ只中ですが、今週は「荒れるG1」の代表格、第31回NHKマイルカップ（東京芝1600m）が開催されます。 過去のデータを見ても、このレースは1番人気が頻繁に沈み、二桁人気の伏兵が激走して超高配当が飛び出すのが当たり前。昨年の第30回大会（優勝：9番人気パンジャタワー）でも、3連単はなんと150万馬券という大波乱でした。 純粋な能力比較だけでは決して当てられないこの「異種格闘技戦」。今回は、過去10年の客観的な統計データに、競馬特…</summary>
        <content type="html">&lt;h1 id=&quot;2026年第31回NHKマイルCオカルトデータで読み解く大波乱のシナリオサインが示す究極の穴馬とは&quot;&gt;【2026年第31回NHKマイルC】オカルト×データで読み解く大波乱のシナリオ！サインが示す「究極の穴馬」とは？&lt;/h1&gt;

&lt;p&gt;競馬ファンの皆様、こんにちは！
春のG1シーズンも真っ只中ですが、今週は「荒れるG1」の代表格、&lt;strong&gt;第31回NHKマイルカップ（東京芝1600m）&lt;/strong&gt;が開催されます。&lt;/p&gt;

&lt;p&gt;過去のデータを見ても、このレースは1番人気が頻繁に沈み、二桁人気の伏兵が激走して超高配当が飛び出すのが当たり前。昨年の第30回大会（優勝：9番人気パンジャタワー）でも、3連単はなんと&lt;strong&gt;150万馬券&lt;/strong&gt;という大波乱でした。&lt;/p&gt;

&lt;p&gt;純粋な能力比較だけでは決して当てられないこの「異種格闘技戦」。今回は、過去10年の客観的な統計データに、競馬特有の「都市伝説（サイン理論）」を融合させ、2026年のレースを支配する見えない法則を徹底解剖します！&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;1-残酷なまでの絶対データ内枠の呪縛と外枠の神話&quot;&gt;1. 残酷なまでの絶対データ「内枠の呪縛」と「外枠の神話」&lt;/h2&gt;

&lt;p&gt;NHKマイルカップにおいて、最も顕著で恐ろしいデータが「枠順の偏り」です。過去10年の結果を見ると、競馬の公平性を疑いたくなるほどのバイアスがかかっています。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;内枠（1〜4枠）の絶望&lt;/strong&gt;：過去10年でわずか1勝（勝率1.3%）。特に&lt;strong&gt;1枠・3枠・4枠は過去10年で優勝ゼロ&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外枠（5〜8枠）の圧倒的有利&lt;/strong&gt;：過去10年で9勝を独占。特に&lt;strong&gt;6枠と8枠だけで8勝&lt;/strong&gt;という異常事態。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;なぜこんなことが起きるのか？それは「2回東京6日目」という日程上、内側の芝が傷み始めているためです。綺麗な馬場を走れる外枠が物理的に有利になります。&lt;/p&gt;

&lt;h3 id=&quot;今年の人気馬に降りかかる枠の呪い&quot;&gt;今年の人気馬に降りかかる「枠の呪い」&lt;/h3&gt;

&lt;p&gt;今年、圧倒的1番人気の&lt;strong&gt;ダイヤモンドノット&lt;/strong&gt;（川田騎手）は、よりによって過去10年で連対すらゼロの「死の4枠（7番）」に入ってしまいました。さらに2番人気の&lt;strong&gt;カヴァレリッツォ&lt;/strong&gt;も内枠「2枠（4番）」です。データ通りなら、この人気2頭は非常に危険な存在と言えます。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;2-敗者の逆転法則前走1着馬は消し&quot;&gt;2. 敗者の逆転法則：「前走1着馬」は消し！？&lt;/h2&gt;

&lt;p&gt;普通なら「前走を圧勝してきた馬」を買いたくなりますが、NHKマイルカップではその常識が通用しません。&lt;/p&gt;

&lt;p&gt;驚くべきことに、過去10年の馬券圏内馬の多くが&lt;strong&gt;「前走で0.4秒以内の僅差で負けた馬」&lt;/strong&gt;なのです。逆に、本番で人気を裏切って沈んだ人気馬の約7割が「前走1着馬」でした。前走で全力を出し切った馬はお釣りがなく、僅差で負けて悔しい思いをした馬が本番でピークを迎えるという「オカルト的逆転法則」が存在します。&lt;/p&gt;

&lt;h3 id=&quot;サイン合致の注目馬&quot;&gt;サイン合致の注目馬&lt;/h3&gt;

&lt;p&gt;この黄金ローテーションに完璧に合致するのが、前走クロッカスSで0.1秒差の2着だった&lt;strong&gt;ハッピーエンジェル&lt;/strong&gt;です。しかも、近年このレースで大穴をあけるトレンドとなっている「牝馬」でもあり、爆発的な魅力を秘めています。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;3-数秘術とサイン理論が導く究極の暗号&quot;&gt;3. 数秘術とサイン理論が導く「究極の暗号」&lt;/h2&gt;

&lt;p&gt;ここからはサイン馬券愛好家お待ちかねの都市伝説セクションです。今年の開催日や回数には、不気味なほど特定の馬を指し示す暗号が隠されています。&lt;/p&gt;

&lt;h3 id=&quot;5月10日と西暦2026年の完全一致&quot;&gt;「5月10日」と「西暦2026年」の完全一致&lt;/h3&gt;

&lt;p&gt;今年の開催日は&lt;strong&gt;5月10日&lt;/strong&gt;。これをストレートに枠と馬番に当てはめると「5枠10番」になります。
そして出馬表を見ると、5枠10番には&lt;strong&gt;エコロアルバ&lt;/strong&gt;がピタリと配置されているのです！&lt;/p&gt;

&lt;p&gt;これだけではありません。西暦「2026年」をバラバラにして足してみましょう。
【 2 + 0 + 2 + 6 ＝ 10 】
ここでも「10」という数字が導き出されます。複数のサインが「10番 エコロアルバ」に収束するこの現象は、もはや競馬の神が仕組んだ暗号としか思えません。&lt;/p&gt;

&lt;h3 id=&quot;馬名に宿る言霊ことだま&quot;&gt;馬名に宿る「言霊（ことだま）」&lt;/h3&gt;

&lt;p&gt;エコロアルバの「アルバ（Alba）」は、ラテン語で「白」や「夜明け」を意味します。荒れるG1において、新時代の「夜明け」を告げるという非常に強いメッセージ性を孕んでいます。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;結論第31回NHKマイルCの最終見解&quot;&gt;結論：第31回NHKマイルCの最終見解&lt;/h2&gt;

&lt;p&gt;データと都市伝説を総合し、今年の激推し馬をピックアップします！&lt;/p&gt;

&lt;p&gt;👑 &lt;strong&gt;【究極の本命サイン馬】エコロアルバ（5枠10番）&lt;/strong&gt;
「5月10日」と「2026年」の暗号が完全一致。データ的に有利な5枠に入り、このレースと相性の良い「キャリア4〜10年」の田村厩舎が管理。「夜明け」を意味する馬名も完璧です。&lt;/p&gt;

&lt;p&gt;💣 &lt;strong&gt;【大波乱の使者（大穴）】ハッピーエンジェル（7枠13番）&lt;/strong&gt;
トレンドの「牝馬」であり、「前走0.1秒差の負け」という逆転法則の条件をクリア。人気薄ですが、一発の破壊力は抜群です。&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;【外枠の魔法陣】アドマイヤクワッズ（6枠11番）&lt;/strong&gt;
過去10年で4勝の「奇跡の6枠」。しかも昨年の勝ち馬パンジャタワーと全く同じ「6枠11番」という神の指定席を引き当てました。前走大敗からの巻き返しに期待。&lt;/p&gt;

&lt;p&gt;☠️ &lt;strong&gt;【危険な人気馬】ダイヤモンドノット ＆ カヴァレリッツォ&lt;/strong&gt;
実力は折り紙付きですが、過去10年でほぼ壊滅状態の「死の内枠」に入ってしまいました。この呪いを実力でねじ伏せるのか、それともデータ通り馬群に沈むのか…。&lt;/p&gt;

&lt;p&gt;今年のNHKマイルカップも、一筋縄ではいかないドラマが待っていそうです。オカルトとデータを味方に、新緑の東京競馬場で高配当を狙い撃ちしましょう！&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;AIと都市伝説を探してみた&quot;&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIと都市伝説を探してみた&quot;&gt;&lt;span itemscope=&quot;itemscope&quot; itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img class=&quot;hatena-fotolife&quot; height=&quot;670&quot; itemprop=&quot;image&quot; loading=&quot;lazy&quot; src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260509/20260509222156.png&quot; title=&quot;&quot; width=&quot;1200&quot; /&gt;&lt;/span&gt;&lt;figcaption&gt;AIと都市伝説を探してみた&lt;/figcaption&gt;&lt;/figure&gt;&lt;/h2&gt;

&lt;h2 id=&quot;AIに依頼したプロンプト&quot;&gt;AIに依頼したプロンプト&lt;/h2&gt;

&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;# 競馬の噂や話題のネタを調べたい

私はJRA競馬 
2026年5月10日（日曜） 2回東京6日 発走時刻：15時40分
11レース
第31回NHKマイルカップGⅠ
3歳    オープン    （国際）牡・牝（指定）   馬齢  コース：1,600メートル（芝・左）
で
都市伝説のネタになりそうな偏りを切り口を探りたいです

## 過去5年や10年の成績をまとめて、噂や都市伝説で使えそうな偏りがあるか？チェックしたい

・馬番、枠番の偏りがあるか？知りたい
-このレースは、内枠有利・外枠は来ない、など、ネタにしたい

・ローテーション、前走・ステップレースの偏りがあるか？
-前走XXX組の1・2着が好走する？など、前走のレースに偏りがあるか？
-前走連対していない馬はこないなど(まぁ、強い馬は前走も好走しているので当たり前かもしれませんが)

・馬の年齢別
-馬の年齢が指定されていないレースで、※オークス,ダービーなど同年代のレースは調べなくてよい
3歳が強い、4歳が連対するなど、年齢の偏りがあれば。

・ジョッキー別の成績をまとめてほしい
-このレースが得意な、縁のあるジョッキーを知りたい、都市伝説・噂のネタにしたい

・血統別の成績をまとめてほしい
-このレースが得意な、血統、産駒があれば知りたい、都市伝説・噂のネタにしたい

・厩舎別の特徴があるか？成績をまとめてほしい
-同様にこのレースが得意な厩舎、縁のある厩舎を知りたい、都市伝説・噂のネタにしたい

・出走日・開催日や第XX回XXX記念などの数字の語呂合わせ 偏りがあるか？知りたい
-第16回XXX記念で1-6や16番の馬,17回は1-7や17番の馬が来たとか、オカルト的な事があるか？

・馬名で面白い法則・偏りがあるか？知りたい
- 強い名前:〇〇キングや〇〇オウ、〇〇エンペラーなど、強い・名前の馬がこのレースは成績が良いなど、オカルト的な法則があれば教えてください(※産駒や厩舎で、XXXと付けている場合もありますが)
- 色を含んだ名前:〇〇グリーンや〇〇ゴールド、〇〇ブラッグなど、名前に色が入った馬がこのレースは成績が良いなど、オカルト的な法則があれば教えてください(※産駒や厩舎で、XXXと付けている場合もありますが)


都市伝説のネタになりそうな偏りを
イロイロな切り口で探りたいです
&lt;/pre&gt;


&lt;p&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;これだけ、数字を出しとけば、どれか？偶然に・・・&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260509/20260509222349.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;これだけ、数字を出しとけば、どれか？偶然に・・・&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/627520ec6ecb9f1bc2933c8beb2c8b273b60a410/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260509%2F20260509222156.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
    <entry>
        <title>過去のデバッグ動画を紹介 【Excel】Web上のExcelファイルをPower Queryで取得しようとするとエラーになる件を解決する</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/05/09/073000"/>
        <id>hatenablog://entry/17179246901385631346</id>
        <published>2026-05-09T07:30:00+09:00</published>
        <updated>2026-05-09T07:30:01+09:00</updated>        <summary type="html">【Excel】Web上のExcelファイルをPower Queryで取得しようとするとエラーになる件を解決する はじめに：Web上のExcelファイル、毎回ダウンロードしてませんか？ Web上（例えば厚生労働省の統計データなど）で公開されているExcelファイルを、毎回手作業でダウンロードして開いていませんか？ Power Queryを使えば、URLを指定するだけで直接データを読み込み、整形までを全自動化できます。しかし、実際にやってみると「URLエラー」や「読み込みエラー」に遭遇して挫折してしまうことも多いです。 今回は、視聴者様からいただいた質問を元に、ライブ配信で実際にデバッグしながら解…</summary>
        <content type="html">
&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;ExcelWeb上のExcelファイルをPower-Queryで取得しようとするとエラーになる件を解決する&quot;&gt;【Excel】Web上のExcelファイルをPower Queryで取得しようとするとエラーになる件を解決する&lt;/h3&gt;
    
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;はじめにWeb上のExcelファイル毎回ダウンロードしてませんか&quot;&gt;はじめに：Web上のExcelファイル、毎回ダウンロードしてませんか？&lt;/h4&gt;
    &lt;p&gt;Web上（例えば厚生労働省の統計データなど）で公開されているExcelファイルを、毎回手作業でダウンロードして開いていませんか？&lt;br /&gt;
Power Queryを使えば、URLを指定するだけで直接データを読み込み、整形までを全自動化できます。&lt;/p&gt;&lt;p&gt;しかし、実際にやってみると「URLエラー」や「読み込みエラー」に遭遇して挫折してしまうことも多いです。&lt;br /&gt;
今回は、視聴者様からいただいた質問を元に、ライブ配信で実際にデバッグしながら解決した「3つのエラー解決ポイント」を、コードを交えて解説します。&lt;/p&gt;&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260508/20260508174424.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;今回作成したPower-QueryM言語コード&quot;&gt;今回作成したPower Query（M言語）コード&lt;/h4&gt;
    &lt;p&gt;まずは、すべての問題を解決した完成版のコードを紹介します。&lt;br /&gt;
以下のコードをコピー＆ペーストして、必要箇所を書き換えればすぐに使用できます。&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;let
   // 厚生労働省 食中毒発生状況（令和５年） のページからURLを探る
   // Excelのセル範囲（名前付き範囲「URL」）から値を受け取る
   文書NO = Excel.CurrentWorkbook(){[Name=&amp;#34;URL&amp;#34;]}[Content]{0}[Column1],
   
   // 1. 文書NOを9桁の0埋め文字列に変換
   strNO = Text.PadStart(Number.ToText(文書NO), 9, &amp;#34;0&amp;#34;),
   
   // URLを組み立てる
   strURL = &amp;#34;https://www.mhlw.go.jp/content/&amp;#34; &amp;amp; strNO &amp;amp; &amp;#34;.xlsx&amp;#34;,

   // 2. Web上のExcelを取得する（Web.PageではなくExcel.Workbookを使用）
   WB = Excel.Workbook(Web.Contents(strURL), null, true),
   
   // 3. シート名が変わる対策としてインデックス{0}で指定
   先頭のシート = WB{0}[Data],
   
   // 1行目を見出しに昇格
   昇格されたヘッダー数 = Table.PromoteHeaders(先頭のシート, [PromoteAllScalars=true])

in 
   昇格されたヘッダー数&lt;/pre&gt;&lt;p&gt;このコードで解決した&#39;&#39;「3つの壁」&#39;&#39;について、順番に解説していきます。&lt;br /&gt;
実際の操作画面やエラーが消える瞬間の挙動を見たい方は、解説横の動画リンクから該当シーンに飛んで確認してみてください。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;エラー解決の3つのポイント解説&quot;&gt;エラー解決の3つのポイント解説&lt;/h4&gt;
    
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;1-URLの0落ちを防ぐTextPadStart関数&quot;&gt;1. URLの「0落ち」を防ぐ（Text.PadStart関数）&lt;/h5&gt;
    &lt;p&gt;セルに入力した「001222475」という文書番号をPower Queryに渡す際、数値として扱われてしまい頭の「0」が消えてしまう（0落ち）問題が発生しました。これでは正しいURLが生成できず、リンク切れエラーになります。&lt;br /&gt;
これを解決するために、&#39;&#39;Text.PadStart関数&#39;&#39;を使用して、強制的に9桁の0埋め文字列に変換しています。&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;strNO = Text.PadStart(Number.ToText(文書NO), 9, &amp;#34;0&amp;#34;),&lt;/pre&gt;&lt;p&gt;実際のライブ配信で0落ちに気づき、この関数を使ってURLを組み立て直すデバッグの様子は以下のリンクから確認できます。&lt;br /&gt;
[10:47](&lt;a href=&quot;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=647s&quot;&gt;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=647s&lt;/a&gt;) （M言語でのText.PadStart関数の使い方とテスト）&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;2-WebPage-ではなく-ExcelWorkbook-を使う&quot;&gt;2. Web.Page ではなく Excel.Workbook を使う&lt;/h5&gt;
    &lt;p&gt;ここが一番ハマりやすいポイントです。&lt;br /&gt;
Webサイトからデータを取得する際、つい `Web.Page` 関数を使ってしまいがちですが、相手が「.xlsx」ファイルの場合はエラーになります。&lt;br /&gt;
正解は、&#39;&#39;Excel.Workbook関数でWeb.Contentsを包む&#39;&#39;形です。&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;// 正解の書き方
WB = Excel.Workbook(Web.Contents(strURL), null, true)&lt;/pre&gt;&lt;p&gt;動画内でも、最初は間違ったアプローチでエラーになり、「あ、これWorkbook関数か！」と気づいて修正するリアルなプロセスを公開しています。同じエラーで悩んでいる方は、このシーンが非常に参考になるはずです。&lt;br /&gt;
[18:05](&lt;a href=&quot;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=1085s&quot;&gt;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=1085s&lt;/a&gt;) （関数間違いに気づき、Excel.Workbook関数で取得し直すシーン）&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;3-シート名が変わる問題はインデックス指定で回避&quot;&gt;3. シート名が変わる問題は「インデックス指定」で回避&lt;/h5&gt;
    &lt;p&gt;お役所のデータなどでよくあるのが、年度によってシート名が「令和5年」「令和6年」と変わってしまう問題です。&lt;br /&gt;
名前でシートを指定していると、翌年にエラーで止まってしまいます。&lt;br /&gt;
これを防ぐため、シート名ではなく「オブジェクトの順番（インデックス番号）」で先頭のシートを取得します。&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;// シート名「令和5年」などで指定せず、最初のデータ{0}を指定する
先頭のシート = WB{0}[Data]&lt;/pre&gt;&lt;p&gt;インデックスは「0」から始まる点に注意してください。これで、シート名が変更されても半永久的に自動取得が可能になります。&lt;br /&gt;
[33:05](&lt;a href=&quot;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=1985s&quot;&gt;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=1985s&lt;/a&gt;) （シート名変更に動的に対応するためのインデックス指定の解説）&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;AIからのアドバイスと今後の課題&quot;&gt;AIからのアドバイスと今後の課題&lt;/h4&gt;
    &lt;p&gt;今回のコードは実務で即戦力になりますが、もし「Web上のファイルが削除されていたり、URLが存在しない場合」にはエラーで処理が止まってしまいます。&lt;br /&gt;
より堅牢なシステムにするためには、以下のように `try ... otherwise` 構文を使ったエラーハンドリングを組み込むのもおすすめです。&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;// AIからの改善案：エラーハンドリングの追加
let
   strURL = &amp;#34;https://www.mhlw.go.jp/content/&amp;#34; &amp;amp; strNO &amp;amp; &amp;#34;.xlsx&amp;#34;,
   // 取得に失敗した場合は null を返す
   WB = try Excel.Workbook(Web.Contents(strURL)) otherwise null
in
   WB&lt;/pre&gt;&lt;p&gt;デバッグの過程は少し長くて泥臭い部分もありますが、エラー画面から原因を推測し、解決策を導き出すプロセスこそがプログラミングの醍醐味です。&lt;br /&gt;
お時間のある時に、ぜひライブ配信のアーカイブを通して見てみてください。&lt;/p&gt;&lt;p&gt;[00:00](&lt;a href=&quot;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=0s&quot;&gt;https://www.youtube.com/watch?v=sU2hZA6KmaU&amp;t=0s&lt;/a&gt;) （動画の最初からデバッグの様子を見る）&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/@ken3video&quot;&gt;Ken3&amp;#x306E;YouTube&amp;#x30C1;&amp;#x30E3;&amp;#x30F3;&amp;#x30CD;&amp;#x30EB;&amp;#x306F;&amp;#x3053;&amp;#x3061;&amp;#x3089;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Power+Query+Excel.Workbook&quot;&gt;Power Query Excel.Workbook&amp;#x95A2;&amp;#x6570;&amp;#x306E;&amp;#x516C;&amp;#x5F0F;&amp;#x30C9;&amp;#x30AD;&amp;#x30E5;&amp;#x30E1;&amp;#x30F3;&amp;#x30C8;&amp;#x691C;&amp;#x7D22;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/f7d6fc6cb9fba944ed401ac3af329c45247d019d/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260508%2F20260508174424.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>自分のYouTube過去動画を分析して「はてなブログ」の記事を作成するプロンプトを紹介します 26年05月バージョン</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/05/08/124340"/>
        <id>hatenablog://entry/17179246901385483697</id>
        <published>2026-05-08T12:43:40+09:00</published>
        <updated>2026-05-08T12:43:40+09:00</updated>        <summary type="html">自分のYouTube過去動画を分析して 「はてなブログ」の記事を作成する プロンプトを下記に記載します # 編集者と校正役：はてな記法ブログ作成用プロンプト ## コンテキスト 私は三流プログラマーの中年おじさん（Ken3）です。 あなたは、私のYouTube動画の台本、字幕、AI分析結果から「はてなブログ（はてな記法モード）」にそのまま貼り付けられる備忘録記事を作成する、非常に優秀で大胆な編集者です。 ## やってほしいこと 1. 添付された資料（字幕、台本、ソースコード、分析結果）をすべて読み込み、内容を深く理解してください。 2. 読者が一目で内容を理解でき、コードをコピペできる実用的な…</summary>
        <content type="html">&lt;p&gt;自分のYouTube過去動画を分析して&lt;br /&gt;
「はてなブログ」の記事を作成する&lt;br /&gt;
プロンプトを下記に記載します&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;# 編集者と校正役：はてな記法ブログ作成用プロンプト

## コンテキスト
私は三流プログラマーの中年おじさん（Ken3）です。
あなたは、私のYouTube動画の台本、字幕、AI分析結果から「はてなブログ（はてな記法モード）」にそのまま貼り付けられる備忘録記事を作成する、非常に優秀で大胆な編集者です。

## やってほしいこと
1. 添付された資料（字幕、台本、ソースコード、分析結果）をすべて読み込み、内容を深く理解してください。
2. 読者が一目で内容を理解でき、コードをコピペできる実用的なブログ記事を「はてな記法」で作成してください。
3. 出力は、はてなブログの「はてな記法モード」にそのまま貼り付けられるテキストを、一つのコードブロック（ ```text ... ``` ）で囲んで提供してください。

## はてな記法の厳守ルール
以下の記法を必ず使用し、Markdown（# や **）は使用しないでください。
- 大見出し（タイトル）: *タイトル
- 中見出し: **見出し
- 小見出し: ***見出し
- 強調（太字）: &amp;#39;&amp;#39;テキスト&amp;#39;&amp;#39; （シングルクォーテーション2個で囲む）
- 箇条書き: - 項目1
- ソースコード: &amp;gt;|言語名| ... ||&amp;lt; の形式
- 引用: &amp;gt;&amp;gt; ... &amp;lt;&amp;lt; の形式

## 動画リンクとタイムスタンプの計算ルール
1. 動画URL（例: https://www.youtube.com/watch?v=VIDEO_ID）から動画IDを抽出します。
2. 資料内のタイムスタンプ [分:秒] をすべて秒数に変換します（計算式: 秒 = 分×60 + 秒）。
3. リンク形式は以下のように出力してください。
   [分:秒](https://www.youtube.com/watch?v=動画ID&amp;amp;t=秒数s)

## 記事の構成要素
a) 説明したかった事・伝えたかった事の要約（読者の悩みに寄り添う）。
b) ソースコードの紹介（必ず &amp;gt;|vba| ... ||&amp;lt; で囲むこと）。
c) 手順の解説（動画のタイムスタンプリンクを適宜挿入）。
d) 未解決の問題点や今後の課題、AIからのアドバイス。
e) 関連リンク（Google検索リンクなど。形式： [URL:title=タイトル] ）。

## 実行指示
Ken3の書いた拙い文章を、プロの編集者として大胆にリライト・整理して、最高の動画誘導Andソースコード説明用のブログを仕上げてください。
※ついでに、**紹介動画が再生されるトリガー的リンクを作り**、**動画再生数のアップも狙って**ください
分析・記事作成を開始してください。&lt;/pre&gt;&lt;p&gt;上記プロンプトで、作成しています&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
&lt;font size=+2&gt;&lt;br /&gt;
実際の例 aST78UJdi34	【2018年制作】Windows起動時に一瞬出る「黒い画面」の正体を調査した記録（OneDrive更新だった話）	&lt;br /&gt;
2018/3/20&lt;br /&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/aST78UJdi34?enablejsapi=1&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&quot;&gt;www.youtube.com&lt;/a&gt;&lt;br /&gt;
を渡し、テストしてみます。以下テスト結果&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260508/20260508124144.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;hr&gt;&lt;/p&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;PC起動時に一瞬消える黒い画面ウイルス正体は意外なアレだった件2018年アーカイブ&quot;&gt;PC起動時に一瞬消える「黒い画面」…ウイルス？正体は意外なアレだった件（2018年アーカイブ）&lt;/h3&gt;
    &lt;p&gt;PCにログインした直後、&#39;&#39;「黒いコマンドプロンプト」が一瞬だけ表示されてパッと消える&#39;&#39;……。&lt;br /&gt;
そんな経験はありませんか？&lt;/p&gt;&lt;p&gt;「もしかしてウイルス？」「何かが裏で勝手に動いている？」と不安で心臓がドキドキしているあなたへ。&lt;br /&gt;
かつて同じ恐怖を味わい、必死に原因を突き止めた三流プログラマー・Ken3の泥縄式調査記録を共有します。&lt;/p&gt;&lt;p&gt;結論から言うと、犯人は意外な「アイツ」かもしれません。&lt;/p&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;動画で確認一瞬の黒い画面あなたのPCでもこれが出ていませんか&quot;&gt;【動画で確認】一瞬の黒い画面、あなたのPCでもこれが出ていませんか？&lt;/h4&gt;
    &lt;p&gt;まずは、実際にどんな画面が出ていたのか、動画でその「一瞬」を確認してみてください。&lt;br /&gt;
[00:00](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=0s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=0s&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;この「パッ」と消える瞬間の恐怖、共感していただけるはずです。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;調査手順ウイルスを疑う前に証拠を探せ&quot;&gt;調査手順：ウイルスを疑う前に「証拠」を探せ&lt;/h4&gt;
    &lt;p&gt;Ken3が実際に行った、エンジニア的な（といっても必死な）切り分け手順がこちらです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&#39;&#39;手順1：まずはウイルススキャンで心を落ち着かせる&#39;&#39;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;[02:19](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=139s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=139s&lt;/a&gt;)&lt;br /&gt;
まずは基本。ウイルス対策ソフト（当時はウイルスセキュリティZERO）でフルスキャン。結果がシロなら、少しだけ冷静になれます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&#39;&#39;手順2：コントロールパネルで「インストール日」を確認する&#39;&#39;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;[02:46](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=166s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=166s&lt;/a&gt;)&lt;br /&gt;
ここが最大のポイントです。&#39;&#39;「黒い画面が出たその時刻」に、何かが更新されていないか？&#39;&#39;をチェックしました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&#39;&#39;手順3：犯人（？）の特定&#39;&#39;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;[04:41](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=281s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=281s&lt;/a&gt;)&lt;br /&gt;
コントロールパネルの「プログラムのアンインストール」画面で日付順に並べ替えたところ、黒い画面が出た時刻にぴったり重なって&#39;&#39;「Microsoft OneDrive」&#39;&#39;が更新されているのを発見しました。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;検証あえて一瞬で消える画面を自作して比較してみた&quot;&gt;【検証】あえて「一瞬で消える画面」を自作して比較してみた&lt;/h4&gt;
    &lt;p&gt;「本当にOneDriveの更新プログラムがコマンドプロンプトを表示させるのか？」&lt;br /&gt;
その疑問を解消するため、あえて一瞬で処理が終わるバッチファイルを自作して、挙動を比較してみました。&lt;/p&gt;
&lt;pre class=&quot;code dos&quot; data-lang=&quot;dos&quot; data-unlink&gt;@echo off
rem 指定したフォルダにファイルをコピーするだけのテスト用バッチ
copy D:\work\*.txt D:\work\backup\
copy D:\work\*.pdf D:\work\backup\
rem 本来はここで一瞬で消えるが、動画では確認用にpauseを入れたりしています&lt;/pre&gt;&lt;p&gt;[06:12](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=372s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=372s&lt;/a&gt;) からのデモを見ると分かりますが、裏で自動実行されるスクリプトが走ると、Windowsの仕様上どうしても一瞬だけ黒い窓が出てしまうことがあるのです。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;未解決の懸念とAIからのアドバイス&quot;&gt;未解決の懸念とAIからのアドバイス&lt;/h4&gt;
    &lt;p&gt;動画の最後でも触れていますが、&#39;&#39;「コントロールパネルに載っているからといって、100%安全とは言い切れない」&#39;&#39;のがこの世界の怖いところ。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;「行儀の良いウイルスなら履歴に残るかもしれないけど、本物はもっと巧妙に隠れるはず。不安ならイベントビューアーまで見るべきだったかも……」&lt;/p&gt;

    &lt;/blockquote&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;AIエディターからの補足アドバイス&quot;&gt;AIエディターからの補足アドバイス&lt;/h5&gt;
    &lt;p&gt;現代（Windows 11）であれば、以下の方法も併用するとより確実です：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&#39;&#39;タスクマネージャーの「スタートアップ」タブ&#39;&#39;を確認し、見覚えのないアプリが有効になっていないかチェック。&lt;/li&gt;
&lt;li&gt;&#39;&#39;設定 ＞ Windows Update ＞ 更新の履歴&#39;&#39;を確認し、システムの更新とタイミングが合致しているか見る。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;まとめ怪しい挙動は記録して照らし合わせる&quot;&gt;まとめ：怪しい挙動は「記録」して「照らし合わせる」&lt;/h4&gt;
    &lt;p&gt;結局、この時はOneDriveのアップデートが原因であった可能性が高いという結論に至りました。&lt;br /&gt;
[07:58](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=478s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=478s&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;PCの挙動に不安を感じたら、まずは「コントロールパネルの更新履歴」を確認するクセをつけてみてください。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Windows+起動時+一瞬+コマンドプロンプト+OneDrive&quot;&gt;Google&amp;#x691C;&amp;#x7D22;&amp;#xFF1A;Windows &amp;#x8D77;&amp;#x52D5;&amp;#x6642; &amp;#x4E00;&amp;#x77AC; &amp;#x30B3;&amp;#x30DE;&amp;#x30F3;&amp;#x30C9;&amp;#x30D7;&amp;#x30ED;&amp;#x30F3;&amp;#x30D7;&amp;#x30C8; OneDrive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://q.hatena.ne.jp/&quot;&gt;&amp;#x4EBA;&amp;#x529B;&amp;#x691C;&amp;#x7D22;&amp;#x306F;&amp;#x3066;&amp;#x306A;&amp;#xFF08;PC&amp;#x306E;&amp;#x60A9;&amp;#x307F;&amp;#x76F8;&amp;#x8AC7;&amp;#x306B;&amp;#x304A;&amp;#x3059;&amp;#x3059;&amp;#x3081;&amp;#xFF09;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;#Windows10 #OneDrive #トラブル解決 #コマンドプロンプト #Ken3&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
テキストのソースは:&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;*PC起動時に一瞬消える「黒い画面」…ウイルス？正体は意外なアレだった件（2018年アーカイブ）

PCにログインした直後、&amp;#39;&amp;#39;「黒いコマンドプロンプト」が一瞬だけ表示されてパッと消える&amp;#39;&amp;#39;……。
そんな経験はありませんか？

「もしかしてウイルス？」「何かが裏で勝手に動いている？」と不安で心臓がドキドキしているあなたへ。
かつて同じ恐怖を味わい、必死に原因を突き止めた三流プログラマー・Ken3の泥縄式調査記録を共有します。

結論から言うと、犯人は意外な「アイツ」かもしれません。

**【動画で確認】一瞬の黒い画面、あなたのPCでもこれが出ていませんか？

まずは、実際にどんな画面が出ていたのか、動画でその「一瞬」を確認してみてください。
[00:00](https://www.youtube.com/watch?v=aST78UJdi34&amp;amp;t=0s)

この「パッ」と消える瞬間の恐怖、共感していただけるはずです。

**調査手順：ウイルスを疑う前に「証拠」を探せ

Ken3が実際に行った、エンジニア的な（といっても必死な）切り分け手順がこちらです。

-&amp;#39;&amp;#39;手順1：まずはウイルススキャンで心を落ち着かせる&amp;#39;&amp;#39;
[02:19](https://www.youtube.com/watch?v=aST78UJdi34&amp;amp;t=139s)
まずは基本。ウイルス対策ソフト（当時はウイルスセキュリティZERO）でフルスキャン。結果がシロなら、少しだけ冷静になれます。

-&amp;#39;&amp;#39;手順2：コントロールパネルで「インストール日」を確認する&amp;#39;&amp;#39;
[02:46](https://www.youtube.com/watch?v=aST78UJdi34&amp;amp;t=166s)
ここが最大のポイントです。&amp;#39;&amp;#39;「黒い画面が出たその時刻」に、何かが更新されていないか？&amp;#39;&amp;#39;をチェックしました。

-&amp;#39;&amp;#39;手順3：犯人（？）の特定&amp;#39;&amp;#39;
[04:41](https://www.youtube.com/watch?v=aST78UJdi34&amp;amp;t=281s)
コントロールパネルの「プログラムのアンインストール」画面で日付順に並べ替えたところ、黒い画面が出た時刻にぴったり重なって&amp;#39;&amp;#39;「Microsoft OneDrive」&amp;#39;&amp;#39;が更新されているのを発見しました。

**【検証】あえて「一瞬で消える画面」を自作して比較してみた

「本当にOneDriveの更新プログラムがコマンドプロンプトを表示させるのか？」
その疑問を解消するため、あえて一瞬で処理が終わるバッチファイルを自作して、挙動を比較してみました。

&amp;gt;|dos|
@echo off
rem 指定したフォルダにファイルをコピーするだけのテスト用バッチ
copy D:\work\*.txt D:\work\backup\
copy D:\work\*.pdf D:\work\backup\
rem 本来はここで一瞬で消えるが、動画では確認用にpauseを入れたりしています&lt;/pre&gt;&lt;p&gt;[06:12](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=372s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=372s&lt;/a&gt;) からのデモを見ると分かりますが、裏で自動実行されるスクリプトが走ると、Windowsの仕様上どうしても一瞬だけ黒い窓が出てしまうことがあるのです。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;未解決の懸念とAIからのアドバイス-1&quot;&gt;未解決の懸念とAIからのアドバイス&lt;/h4&gt;
    &lt;p&gt;動画の最後でも触れていますが、&#39;&#39;「コントロールパネルに載っているからといって、100%安全とは言い切れない」&#39;&#39;のがこの世界の怖いところ。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;「行儀の良いウイルスなら履歴に残るかもしれないけど、本物はもっと巧妙に隠れるはず。不安ならイベントビューアーまで見るべきだったかも……」&lt;/p&gt;

    &lt;/blockquote&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;AIエディターからの補足アドバイス-1&quot;&gt;AIエディターからの補足アドバイス&lt;/h5&gt;
    &lt;p&gt;現代（Windows 11）であれば、以下の方法も併用するとより確実です：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&#39;&#39;タスクマネージャーの「スタートアップ」タブ&#39;&#39;を確認し、見覚えのないアプリが有効になっていないかチェック。&lt;/li&gt;
&lt;li&gt;&#39;&#39;設定 ＞ Windows Update ＞ 更新の履歴&#39;&#39;を確認し、システムの更新とタイミングが合致しているか見る。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;まとめ怪しい挙動は記録して照らし合わせる-1&quot;&gt;まとめ：怪しい挙動は「記録」して「照らし合わせる」&lt;/h4&gt;
    &lt;p&gt;結局、この時はOneDriveのアップデートが原因であった可能性が高いという結論に至りました。&lt;br /&gt;
[07:58](&lt;a href=&quot;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=478s&quot;&gt;https://www.youtube.com/watch?v=aST78UJdi34&amp;t=478s&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;PCの挙動に不安を感じたら、まずは「コントロールパネルの更新履歴」を確認するクセをつけてみてください。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク-1&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Windows+起動時+一瞬+コマンドプロンプト+OneDrive&quot;&gt;Google&amp;#x691C;&amp;#x7D22;&amp;#xFF1A;Windows &amp;#x8D77;&amp;#x52D5;&amp;#x6642; &amp;#x4E00;&amp;#x77AC; &amp;#x30B3;&amp;#x30DE;&amp;#x30F3;&amp;#x30C9;&amp;#x30D7;&amp;#x30ED;&amp;#x30F3;&amp;#x30D7;&amp;#x30C8; OneDrive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://q.hatena.ne.jp/&quot;&gt;&amp;#x4EBA;&amp;#x529B;&amp;#x691C;&amp;#x7D22;&amp;#x306F;&amp;#x3066;&amp;#x306A;&amp;#xFF08;PC&amp;#x306E;&amp;#x60A9;&amp;#x307F;&amp;#x76F8;&amp;#x8AC7;&amp;#x306B;&amp;#x304A;&amp;#x3059;&amp;#x3059;&amp;#x3081;&amp;#xFF09;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;#Windows10 #OneDrive #トラブル解決 #コマンドプロンプト #Ken3&lt;/p&gt;&lt;p&gt;|&lt;/p&gt;

&lt;/div&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;

&lt;/div&gt;</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/17386e649ce82dab25244adcae62be6019dce797/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260508%2F20260508124144.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>天皇賞（春）の競馬都市伝説をAIと探しました【第173回】73年ぶりの奇跡が起きる？天皇賞（春）に隠された「数字の呪縛」</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/05/03/124034"/>
        <id>hatenablog://entry/17179246901383540144</id>
        <published>2026-05-03T12:40:34+09:00</published>
        <updated>2026-05-03T12:40:34+09:00</updated>        <summary type="html">【天皇賞・春 2026】プロは笑う！？でも信じたい「73」と「3」に隠された不気味な都市伝説 「競馬って、おじさんたちが難しい顔して数字を見てるだけでしょ？」 そう思っているあなた！今年の天皇賞（春）は、ちょっと様子が違います。 3200メートルという、もはや「マラソン」のような過酷なレース。 実は、そこには数学者も競馬プロも説明できない「不気味な一致」がいくつも隠されているんです。 今日は、競馬ガチ勢が聞いたら「そんなバカなｗ」と笑ってしまうような、でも初心者だからこそ信じたくなる最強の都市伝説をご紹介します！ AIを使って、競馬の都市伝説・噂を集めブログにしました 😱 伝説1：73年ぶりに…</summary>
        <content type="html">&lt;h1 id=&quot;天皇賞春-2026プロは笑うでも信じたい73と3に隠された不気味な都市伝説&quot;&gt;【天皇賞・春 2026】プロは笑う！？でも信じたい「73」と「3」に隠された不気味な都市伝説&lt;/h1&gt;

&lt;p&gt;「競馬って、おじさんたちが難しい顔して数字を見てるだけでしょ？」
そう思っているあなた！今年の&lt;strong&gt;天皇賞（春）&lt;/strong&gt;は、ちょっと様子が違います。&lt;/p&gt;

&lt;p&gt;3200メートルという、もはや「マラソン」のような過酷なレース。
実は、そこには数学者も競馬プロも説明できない&lt;strong&gt;「不気味な一致」&lt;/strong&gt;がいくつも隠されているんです。&lt;/p&gt;

&lt;p&gt;今日は、競馬ガチ勢が聞いたら「そんなバカなｗ」と笑ってしまうような、でも初心者だからこそ信じたくなる&lt;strong&gt;最強の都市伝説&lt;/strong&gt;をご紹介します！&lt;/p&gt;

&lt;p&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIを使って、競馬の都市伝説・噂を集めブログにしました&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260503/20260503123406.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIを使って、競馬の都市伝説・噂を集めブログにしました&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;-伝説173年ぶりに解かれる牝馬の呪縛&quot;&gt;😱 伝説1：73年ぶりに解かれる「牝馬の呪縛」&lt;/h2&gt;

&lt;p&gt;競馬界には、長年解かれていない呪いがあります。
それは、&lt;strong&gt;「天皇賞（春）で女の子（牝馬）は勝てない」&lt;/strong&gt;というもの。
最後に牝馬が勝ったのは、なんと1953年のレダという馬まで遡ります。&lt;/p&gt;

&lt;p&gt;「やっぱり女の子には3200mは無理なんだよ…」
そんなプロの声をあざ笑うかのような&lt;strong&gt;数字のイタズラ&lt;/strong&gt;がこちら。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;今年の開催回数：&lt;/strong&gt; 第173回&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最後に牝馬が勝ってからの年数：&lt;/strong&gt; ちょうど「73」年目&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;「173」と「73」。&lt;/strong&gt;
この奇跡的な一致、怖くないですか？
この「73の呪縛」を解くのは、1枠1番の&lt;strong&gt;ヴェルミセル&lt;/strong&gt;か、それとも&lt;strong&gt;アクアヴァーナル&lt;/strong&gt;か…。歴史が動く瞬間を目撃できるかもしれません。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;-伝説2すべては3に支配されている&quot;&gt;🔢 伝説2：すべては「3」に支配されている！？&lt;/h2&gt;

&lt;p&gt;今年の天皇賞（春）は、とにかく「3」という数字がつきまといます。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;開催日：&lt;/strong&gt; 5月&lt;strong&gt;3&lt;/strong&gt;日&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回数：&lt;/strong&gt; 第17&lt;strong&gt;3&lt;/strong&gt;回&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注目馬：&lt;/strong&gt; アドマイヤテラ（馬番&lt;strong&gt;3&lt;/strong&gt;番）&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;さらに、このアドマイヤテラの手綱を握るのは、伝説のジョッキー&lt;strong&gt;武豊（たけ ゆたか）&lt;/strong&gt;騎手。
プロは「武豊なら長距離のペース配分が完璧だから…」と真面目に分析しますが、私たちはこう言いましょう。
&lt;strong&gt;「5月3日に3番の馬に乗るから、これもう運命じゃん！」&lt;/strong&gt;と。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;-伝説3京都に舞い降りる白い稲妻&quot;&gt;🐎 伝説3：京都に舞い降りる「白い稲妻」&lt;/h2&gt;

&lt;p&gt;競馬ファンには&lt;strong&gt;「京都の長距離は、白い馬（芦毛）が強い」&lt;/strong&gt;という有名なジンクスがあります。
かつてのヒーロー、メジロマックイーンやゴールドシップも、みんな白い馬体でした。&lt;/p&gt;

&lt;p&gt;今回の出走馬を見ると…
* &lt;strong&gt;アドマイヤテラ&lt;/strong&gt;（白い！）
* &lt;strong&gt;アクアヴァーナル&lt;/strong&gt;（白い！）&lt;/p&gt;

&lt;p&gt;特にアクアヴァーナルは、あの暴れん坊で有名だった&lt;strong&gt;ゴールドシップ&lt;/strong&gt;の娘。
「お父さんの幽霊が背中を押してくれるのでは…」なんてプロが聞いたら鼻で笑うような話も、この舞台ならあり得る気がしてきませんか？&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;-一応真面目なデータも置いておきます&quot;&gt;📊 一応、真面目なデータも置いておきます&lt;/h2&gt;

&lt;p&gt;「ロマンだけじゃ不安！」という方のために、プロも納得するデータも少しだけ。
過去10年の結果を見ると、実は&lt;strong&gt;「めちゃくちゃ堅実」&lt;/strong&gt;なレースなんです。&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;text-align:left;&quot;&gt; 人気 &lt;/th&gt;
&lt;th style=&quot;text-align:left;&quot;&gt; 1着になる確率 &lt;/th&gt;
&lt;th style=&quot;text-align:left;&quot;&gt; 3着までに入る確率 &lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align:left;&quot;&gt; &lt;strong&gt;1番人気&lt;/strong&gt; &lt;/td&gt;
&lt;td style=&quot;text-align:left;&quot;&gt; &lt;strong&gt;50%&lt;/strong&gt; &lt;/td&gt;
&lt;td style=&quot;text-align:left;&quot;&gt; &lt;strong&gt;80%&lt;/strong&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align:left;&quot;&gt; &lt;strong&gt;2番人気&lt;/strong&gt; &lt;/td&gt;
&lt;td style=&quot;text-align:left;&quot;&gt; &lt;strong&gt;40%&lt;/strong&gt; &lt;/td&gt;
&lt;td style=&quot;text-align:left;&quot;&gt; &lt;strong&gt;50%&lt;/strong&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;なんと、過去10年の勝ち馬は&lt;strong&gt;すべて「3番人気以内」&lt;/strong&gt;。
結局は、みんなが「強い！」と思っている馬がそのまま勝つことが多いんです。
都市伝説で選んだ馬が、もし当日人気になっていたら…それはもう&lt;strong&gt;「勝ち確」&lt;/strong&gt;かもしれません。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;-結論信じるか信じないかはあなた次第&quot;&gt;🏁 結論：信じるか信じないかは、あなた次第！&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;運命の「73」を信じるなら：&lt;/strong&gt; ヴェルミセル、アクアヴァーナル&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5月3日の「3」を信じるなら：&lt;/strong&gt; アドマイヤテラ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;データ（人気）を信じるなら：&lt;/strong&gt; クロワデュノール&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;プロの予想を「ふーん、理屈っぽいね」と横目で見ながら、私たちはこの&lt;strong&gt;「数字の魔法」&lt;/strong&gt;を楽しもうじゃありませんか。&lt;/p&gt;

&lt;p&gt;2026年5月3日。
京都競馬場のゴール板を最初に駆け抜けるのは、統計学か、それとも都市伝説か。
その答え合わせは、日曜日の15時40分に！&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;※馬券の購入は計画的に。この都市伝説は的中を保証するものではありませんが、ワクワク感は100%保証します！&lt;/em&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;AIに依頼したプロンプトの紹介-260502実施&quot;&gt;AIに依頼したプロンプトの紹介 26/05/02実施&lt;/h2&gt;

&lt;p&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;適当に数字を出しても、当たる時は当たったりするし・・・&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260503/20260503123528.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;適当に数字を出しても、当たる時は当たったりするし・・・&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-size: 150%&quot;&gt;&lt;strong&gt;下記、AIに渡した調査依頼のプロンプトです&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;

&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;競馬の噂や話題のネタを調べたい

私はJRA競馬 
2026年5月3日（日曜） 3回京都4日  発走時刻：15時40分
11レース
第173回天皇賞(春)GⅠ
で
都市伝説のネタになりそうな偏りを切り口を探りたいです

## 過去5年や10年の成績をまとめて、噂や都市伝説で使えそうな偏りがあるか？チェックしたい

・馬番、枠番の偏りがあるか？知りたい
-このレースは、内枠有利・外枠は来ない、など、ネタにしたい

・ローテーション、前走・ステップレースの偏りがあるか？
-前走XXX組の1・2着が好走する？など、前走のレースに偏りがあるか？
-前走連対していない馬はこないなど(まぁ、強い馬は前走も好走しているので当たり前かもしれませんが)

・馬の年齢別
-馬の年齢が指定されていないレースで、※オークス,ダービーなど同年代のレースは調べなくてよい
3歳が強い、4歳が連対するなど、年齢の偏りがあれば。

・ジョッキー別の成績をまとめてほしい
-このレースが得意な、縁のあるジョッキーを知りたい、都市伝説・噂のネタにしたい

・血統別の成績をまとめてほしい
-このレースが得意な、血統、産駒があれば知りたい、都市伝説・噂のネタにしたい

・厩舎別の特徴があるか？成績をまとめてほしい
-同様にこのレースが得意な厩舎、縁のある厩舎を知りたい、都市伝説・噂のネタにしたい

・出走日・開催日や第XX回XXX記念などの数字の語呂合わせ 偏りがあるか？知りたい
-第16回XXX記念で1-6や16番の馬,17回は1-7や17番の馬が来たとか、オカルト的な事があるか？

・馬名で面白い法則・偏りがあるか？知りたい
- 強い名前:〇〇キングや〇〇オウ、〇〇エンペラーなど、強い・名前の馬がこのレースは成績が良いなど、オカルト的な法則があれば教えてください(※産駒や厩舎で、XXXと付けている場合もありますが)
- 色を含んだ名前:〇〇グリーンや〇〇ゴールド、〇〇ブラッグなど、名前に色が入った馬がこのレースは成績が良いなど、オカルト的な法則があれば教えてください(※産駒や厩舎で、XXXと付けている場合もありますが)


都市伝説のネタになりそうな偏りを
イロイロな切り口で探りたいです&lt;/pre&gt;


&lt;hr /&gt;

&lt;h2 id=&quot;AIが参照した関連リンク&quot;&gt;AIが参照した・関連リンク&lt;/h2&gt;

&lt;p&gt;引用文献&lt;/p&gt;

&lt;p&gt;データ分析 2026年天皇賞（春）（GⅠ） JRA, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://www.jra.go.jp/keiba/g1/haruten/data.html&quot;&gt;https://www.jra.go.jp/keiba/g1/haruten/data.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;天皇賞（春）2026 過去10年の傾向(データ)｜G1特集｜競馬予想 ..., 5月 2, 2026にアクセス、 &lt;a href=&quot;https://jra-van.jp/fun/tokusyu/g1/haruten/stats.html&quot;&gt;https://jra-van.jp/fun/tokusyu/g1/haruten/stats.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;【天皇賞・春】傾向と対策 - スポニチ競馬Web, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://keiba.sponichi.co.jp/news/20260501s00004000423000c&quot;&gt;https://keiba.sponichi.co.jp/news/20260501s00004000423000c&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;【天皇賞（春） × 過去データ分析】前走１着馬の中で強調できる推奨馬はこの馬！ - スポーツナビ, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://sports.yahoo.co.jp/official/detail/2026043000034-spnaviow&quot;&gt;https://sports.yahoo.co.jp/official/detail/2026043000034-spnaviow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;【天皇賞・春】武豊騎手のアドマイヤテラは過去最多１３勝の３番枠 陣営「豊さんに任せておけばいいと思っています」, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://news.livedoor.com/topics/detail/31141770/&quot;&gt;https://news.livedoor.com/topics/detail/31141770/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;【天皇賞・春】クロワデュノール は4枠7番、アドマイヤテラは2枠3番, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://www.oricon.co.jp/article/3243204/&quot;&gt;https://www.oricon.co.jp/article/3243204/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;大阪杯勝利、そして2年後の復活劇 芦毛ブームを牽引した名脇役・ホワイトストーン, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://uma-furi.com/white-stone/&quot;&gt;https://uma-furi.com/white-stone/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;芦毛伝説の継承者(ビワハヤヒデ) - 競馬ニュース, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://news.netkeiba.com/?pid=column_view&amp;cid=25790&quot;&gt;https://news.netkeiba.com/?pid=column_view&amp;cid=25790&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;タマモクロス ―史上初となる天皇賞春秋制覇を果たした白い稲妻―｜ハサミおじさん - note, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://note.com/hasami_ojisan/n/nc6972b21e24b&quot;&gt;https://note.com/hasami_ojisan/n/nc6972b21e24b&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;天皇賞（春）(G1) データ分析・過去の傾向 | 2026年5月3日 京都11R レース情報(JRA) - netkeiba, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://race.sp.netkeiba.com/race/past10.html?race_id=202608030411&amp;rf=rs&quot;&gt;https://race.sp.netkeiba.com/race/past10.html?race_id=202608030411&amp;rf=rs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;【天皇賞春】過去20年データ考察第四弾 枠順別成績から見る本当に ..., 5月 2, 2026にアクセス、 &lt;a href=&quot;https://note.com/sumirekeiba/n/n168bda72f940&quot;&gt;https://note.com/sumirekeiba/n/n168bda72f940&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;サイン会議 - 最強のサイン読み戦士が集う、日本一の掲示板！ - ロケットBBS, 5月 2, 2026にアクセス、 &lt;a href=&quot;https://bbs1.rocketbbs.com/kaigi&quot;&gt;https://bbs1.rocketbbs.com/kaigi&lt;/a&gt;&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/5196cf123f9e76d478ed084e35eaa6d5549774de/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260503%2F20260503123528.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>VBA×XMLHTTPでJRAの『人気順』オッズを自動取得</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/04/25/230000"/>
        <id>hatenablog://entry/17179246901380536222</id>
        <published>2026-04-25T23:00:00+09:00</published>
        <updated>2026-04-25T23:00:00+09:00</updated>        <summary type="html">VBAでXMLHTTPを使用して、JRAのHPから人気順のオッズ（単勝・馬連・馬単）を同時に取得したい！そんな悩みを解決するコードと手順を解説します。要約: IE（Internet Explorer）が廃止された今、WebスクレイピングにはXMLHTTPのリクエスト処理が不可欠です。本動画では、JRAサイトの「人気順」ページにPOST送信でアクセスし、単勝・馬連・馬単のテーブルデータをExcelに一括転記する仕組みを実演解説します。 マクロ付きファイルのダウンロード https://note.com/calm_slug2867/n/nd5e26b1b5292 でマクロ付きの.xlsmをダウンロ…</summary>
        <content type="html">&lt;p&gt;VBAでXMLHTTPを使用して、JRAのHPから人気順のオッズ（単勝・馬連・馬単）を同時に取得したい！そんな悩みを解決するコードと手順を解説します。&lt;/p&gt;&lt;p&gt;要約: IE（Internet Explorer）が廃止された今、WebスクレイピングにはXMLHTTPのリクエスト処理が不可欠です。本動画では、JRAサイトの「人気順」ページにPOST送信でアクセスし、単勝・馬連・馬単のテーブルデータをExcelに一括転記する仕組みを実演解説します。&lt;hr&gt;&lt;br /&gt;
マクロ付きファイルのダウンロード&lt;br /&gt;
 &lt;a href=&quot;https://note.com/calm_slug2867/n/nd5e26b1b5292&quot;&gt;https://note.com/calm_slug2867/n/nd5e26b1b5292&lt;/a&gt; &lt;br /&gt;
でマクロ付きの.xlsmをダウンロードできます&lt;br /&gt;
合わせて、使ってみてください。&lt;hr&gt;&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/igykdl8PI30?feature=oembed&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen title=&quot;【VBA XMLHTTP版】JRA人気順オッズを一括取得！XMLHTTPで単勝・馬連・馬単を同時に抜き出す方法&quot;&gt;&lt;/iframe&gt;&lt;cite class=&quot;hatena-citation&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=igykdl8PI30&quot;&gt;www.youtube.com&lt;/a&gt;&lt;/cite&gt;&lt;br /&gt;
&lt;b&gt;動画のポイント&lt;/b&gt;&lt;br /&gt;
【結論：XMLHTTPでJRA人気順オッズを全自動取得！複数馬券種の一括抽出を解説】&lt;/p&gt;&lt;p&gt;1. 【一番のポイント】ループ内で「一旦単勝に戻す」リセット処理&lt;br /&gt;
タイムライン： 22:55 &lt;a href=&quot;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=1375&quot;&gt;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=1375&lt;/a&gt;&lt;br /&gt;
内容： ページ遷移を伴うスクレイピングで迷子にならないための必須テク。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;動画の内容をAIで図解しました&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260425/20260425214850.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;動画の内容をAIで図解しました&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;2. 【見どころ】POST送信による「条件切り替え」の仕組み&lt;br /&gt;
タイムライン： 07:13 &lt;a href=&quot;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=433&quot;&gt;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=433&lt;/a&gt;&lt;br /&gt;
内容： ブラウザ操作をコードで再現する「XMLHTTPの真髄」を解説。&lt;/p&gt;&lt;p&gt;3. 【実演】単勝・馬連・馬単を順番に巡回してデータを抜く&lt;br /&gt;
タイムライン： 15:14 &lt;a href=&quot;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=914&quot;&gt;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=914&lt;/a&gt;&lt;br /&gt;
内容： 1レース内で複数の馬券種をループで一括取得する工程。&lt;/p&gt;&lt;p&gt;4. 【重要：誠実な不具合報告】枠番欠落とテーブルズレ&lt;br /&gt;
タイムライン： 27:02 &lt;a href=&quot;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=1622&quot;&gt;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=1622&lt;/a&gt;&lt;br /&gt;
内容： 少頭数レース等で発生する課題を正直に公開しています。&lt;/p&gt;&lt;p&gt;5. 【解決】マクロのブロック解除手順&lt;br /&gt;
タイムライン： 31:34 &lt;a href=&quot;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=1894&quot;&gt;https://www.youtube.com/watch?v=igykdl8PI30&amp;t=1894&lt;/a&gt;&lt;br /&gt;
内容： ダウンロードしたファイルが動かない時の設定方法。&lt;hr&gt;&lt;br /&gt;
&lt;b&gt;ソースコード&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;code lang-vb&quot; data-lang=&quot;vb&quot; data-unlink&gt;&lt;span class=&quot;synStatement&quot;&gt;Option&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Explicit&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;全ての関数を１つにまとめました、このコードをコピーして使ってみてください&lt;/span&gt;

&lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; Win64 &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Declare&lt;/span&gt; PtrSafe &lt;span class=&quot;synStatement&quot;&gt;Sub&lt;/span&gt; Sleep &lt;span class=&quot;synStatement&quot;&gt;Lib&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;kernel32&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;(ByVal&lt;/span&gt; dwMilliseconds &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; LongPtr&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;Else&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Declare&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Sub&lt;/span&gt; Sleep &lt;span class=&quot;synStatement&quot;&gt;Lib&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;kernel32&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;(ByVal&lt;/span&gt; dwMilliseconds &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;IEのリンクオブジェクトから文字列をInStrで探してクリックする&lt;/span&gt;
&lt;span class=&quot;synStatement&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; IE_Link_InnerHTML_InStr_Click&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strINSTR &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; i &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objA &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;as HTMLAnchorElement&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strWORK &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;リンクから受け取った文字列を返す&lt;/span&gt;
    IE_Link_InnerHTML_InStr_Click &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;初期値にERRセット&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; i &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Length &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
       &lt;span class=&quot;synComment&quot;&gt; &#39;文字列を見つけたら　クリック&lt;/span&gt;
        &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;outerHTML&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strINSTR&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;内側のHTML&lt;/span&gt;
            
            IE_Link_InnerHTML_InStr_Click &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;outerHTML &lt;span class=&quot;synComment&quot;&gt; &#39;見つけたAタグオブジェ(リンク)を代入&lt;/span&gt;
            
            &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;見つけたのでループを抜ける&lt;/span&gt;
        &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt; i

&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt;


&lt;span class=&quot;synStatement&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; JRA_Bodyからオッズの時刻を返す&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strTEMP &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strRETURN &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;リターン値&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;errでリターン値を初期化&lt;/span&gt;
    strRETURN &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR 文字列が見つかりませんでした&amp;quot;&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;HTMLのBODYテキストを代入&lt;/span&gt;
    strTEMP &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;body&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;innerText

   &lt;span class=&quot;synComment&quot;&gt; &#39;まず最終オッズを探す&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strTEMP&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;最終オッズ&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
        strRETURN &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;最終&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;探す 13時03分現在オッズ  2018/12/09 修正&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;次週確認 7時03分現在オッズ 一けた台の時刻の時&lt;/span&gt;
    n &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strTEMP&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;現在オッズ&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
        strRETURN &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Mid(&lt;/span&gt;strTEMP&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;時刻を取り出す&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;リターン値をセット&lt;/span&gt;
    strRETURN &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;Replace&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strRETURN&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;vbLf&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;改行vblfを&amp;quot;&amp;quot;消す&lt;/span&gt;
    JRA_Bodyからオッズの時刻を返す &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; strRETURN

&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt;

&lt;span class=&quot;synStatement&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; JRA_Bodyから発走時刻を返す&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strTEMP &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strRETURN &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;リターン値&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;errでリターン値を初期化&lt;/span&gt;
    strRETURN &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;発走時刻が見つかりませんでした&amp;quot;&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;HTMLのBODYテキストを代入&lt;/span&gt;
    strTEMP &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;body&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;innerText

   &lt;span class=&quot;synComment&quot;&gt; &#39;5回中山4日 発走時刻：13時05分&lt;/span&gt;
    n &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strTEMP&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;発走時刻&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
        strRETURN &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Mid(&lt;/span&gt;strTEMP&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;後ろの時刻を取り出す&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;リターン値をセット&lt;/span&gt;
    JRA_Bodyから発走時刻を返す &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; strRETURN

&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;20260425 テスト&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;人気順のオッズをレース別に 単勝、馬連、馬単をシートへ書き出す&lt;/span&gt;
&lt;span class=&quot;synStatement&quot;&gt;Sub&lt;/span&gt; JRA人気順オッズ単勝馬連馬単&lt;span class=&quot;synConstant&quot;&gt;260425&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;取得テスト&lt;/span&gt;

    &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;処理を開始します&amp;quot;&lt;/span&gt;

    ActiveWindow&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;WindowState &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; xlMinimized&lt;span class=&quot;synComment&quot;&gt; &#39;最小表示&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;

    ActiveWindow&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;WindowState &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; xlNormal&lt;span class=&quot;synComment&quot;&gt; &#39;ノーマル表示&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;2.1 JRA TOP ページの表示&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;処理したいページをGET&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strURL  &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strHTML &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    strURL &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;https://www.jra.go.jp/&amp;quot;&lt;/span&gt;
    strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; get_htmlfile&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;JRA TOPをGetする&lt;/span&gt;
    strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;Replace&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strHTML&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;script&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;取得HTMLのscriptタグを消す&lt;/span&gt;
    
&lt;span class=&quot;synComment&quot;&gt;&#39;TOPページHTML文章に対して、処理を行います。&lt;/span&gt;
       
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; i     &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;添え字 i番目などで使用&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; yLINE &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;行カウンタ、Y行目&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;htmlfile&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;

    oDocument&lt;span class=&quot;synStatement&quot;&gt;.write&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;取得したHTMLをセット&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objA &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;as HTMLAnchorElement リンクのタグ オブジェクト&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objTABLEs &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;TABLE複数の格納用&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objTABLE &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;as HTMLTable &#39;テーブル単体&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; x &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;列の管理&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; y &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;行の管理&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;Excel側のセット位置&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;Excel側のセット位置&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objCELL &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;as HTMLTableCell&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; nRACE &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;レース 1-12&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strRACE &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;文字列 1Rなどを作るため&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strMOJI &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1-2など馬連の組み合わせ文字列&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; arrBOX&lt;span class=&quot;synStatement&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;分割した文字列を入れる配列&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; Waku_str &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; Waku_n &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;2.2 リンクからオッズを取得(リンクを押すような処理・次を読む)&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strLINK &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_Click&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;オッズ&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
        &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;オッズのリンクが見つかりません&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;synStatement&quot;&gt;Stop&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;オッズのページ HTMLを取り出す&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;&amp;lt;A onclick=&amp;quot;doAction(&#39;/JRADB/accessO.html&#39;,&#39;pw15oli00/6D&#39;);return&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;文字列切り出し(strMOJI, &amp;quot;doAction(&#39;&amp;quot;,&amp;quot;&#39;,&#39;&amp;quot;)&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;文字列切り出し(strMOJI, &amp;quot;&#39;,&#39;&amp;quot;,&amp;quot;&#39;)&amp;quot;)&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strPARA &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    strURL &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;https://www.jra.go.jp&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;doAction(&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;,&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;URL&lt;/span&gt;
    strPARA &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;cname=&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;,&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーター&lt;/span&gt;
    strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; get_htmlfile_post&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strPARA&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;POSTパラメーターを付けて開く&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;クリアしてから、HTML文字列をセットして、ドキュメントオブジェクトを作りたい&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;htmlfile&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    oDocument&lt;span class=&quot;synStatement&quot;&gt;.write&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;取得したHTMLをセット&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;2.3 B2開催のリンクを探して、次(レース・オッズ一覧)を読む&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;開催日のリンクをあさる&lt;/span&gt;
    strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_Click&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;B2&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
        &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;B2&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;が見つかりません&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;synStatement&quot;&gt;Stop&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
    
    strURL &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;https://www.jra.go.jp&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;doAction(&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;URL&lt;/span&gt;
    strPARA &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;cname=&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;, &#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーター&lt;/span&gt;
    strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; get_htmlfile_post&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strPARA&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーターを付けて開く&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;クリアしてから、HTML文字列をセットして、ドキュメントオブジェクトを作りたい&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;htmlfile&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    oDocument&lt;span class=&quot;synStatement&quot;&gt;.write&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;取得したHTMLをセット&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;2.4 1R-12Rのループ 人気順に切り替えてから、レース単位で回す&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n一番人気 &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;今回は人気順なので使わないかな&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strWORK &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;   &lt;span class=&quot;synComment&quot;&gt; &#39;C1にセットする文字列を作る&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n馬番&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;   &lt;span class=&quot;synComment&quot;&gt; &#39;馬は最大18頭&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n馬番&lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;   &lt;span class=&quot;synComment&quot;&gt; &#39;馬は最大18頭&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; str探す文字列 &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1-2,2-3 など表題と比べる&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; str初回FLG &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;初回は単勝をチェック、次からはレースのみで良い&lt;/span&gt;

    str初回FLG &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;初回&amp;quot;&lt;/span&gt;     &lt;span class=&quot;synComment&quot;&gt; &#39;初回で初期化 Flgの初期化、初回の条件にヒットさせるため&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;2.4 1Rから12Rまで、ループする。※これだと前日発売の時1Rでトラブルなぁ&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; nRACE &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;12&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;一から十二まで&lt;/span&gt;
       &lt;span class=&quot;synComment&quot;&gt; &#39;B5からのフラグが立っていたら And 最終じゃなければ&lt;/span&gt;
       &lt;span class=&quot;synComment&quot;&gt; &#39;レースを取り込む&lt;/span&gt;
        &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;B4&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Offset&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;nRACE&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt; _&lt;/span&gt;
          &lt;span class=&quot;synStatement&quot;&gt;And&lt;/span&gt; Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;B4&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Offset&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;nRACE&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;最終&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
        
           &lt;span class=&quot;synComment&quot;&gt; &#39;作業用シート、出力先をクリアする&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;まず、書き込み先シート、データをクリアする&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;Sheets(nRACE &amp;amp; &amp;quot;R&amp;quot;).Select  &#39;シートの切り替え&lt;/span&gt;
            Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;作業用&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;シートの切り替え&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synPreProc&quot;&gt;Delete&lt;/span&gt; Shift:&lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt;xlUp&lt;span class=&quot;synComment&quot;&gt; &#39;シート全体を削除する&lt;/span&gt;
            Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;A1&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt;      &lt;span class=&quot;synComment&quot;&gt; &#39;先頭A1を選択する、&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;セット位置を初期化&lt;/span&gt;
        
            strRACE &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; nRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;レース&amp;quot;&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;1Rなど 文字にする&lt;/span&gt;
        
           &lt;span class=&quot;synComment&quot;&gt; &#39;リンクから該当するレースを探しクリックする &amp;quot;1R&amp;quot;..&amp;quot;12R&amp;quot;&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;2.4.1 初回は単勝のレース番号を読み、※スグに人気順に切り替える←ココポイント&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; str初回FLG &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;初回&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;フラグが初回？&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;リンクから、レースのTR行を探し、列 ここでは単勝を探して返す&lt;/span&gt;
                strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_TR_TD&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strRACE&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;単勝&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Else&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;2.4.8 ２回目以降は、馬単のオッズの位置でレースを選択(なんか紛らわしいけど・・)&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;リンクから該当するレースを探しクリックする &amp;quot;1R&amp;quot;..&amp;quot;12R&amp;quot;&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;Call IE_Link_InnerHTML_InStr_Click(oDocument, &amp;quot;&amp;quot;&amp;quot;&amp;quot; &amp;amp; strRACE &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;)&lt;/span&gt;
                strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_Click&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strRACE&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
            
            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;エラーチェック&lt;/span&gt;
                &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; strRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;が見つかりません&amp;quot;&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Stop&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;ここで、初回単勝の表か(or)次のレース(馬単)が読まれる&lt;/span&gt;
            strURL &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;https://www.jra.go.jp&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;doAction(&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;URL&lt;/span&gt;
            strPARA &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;cname=&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;, &#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーター&lt;/span&gt;
            strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; get_htmlfile_post&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strPARA&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーターを付けて開く&lt;/span&gt;
            
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;htmlfile&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            oDocument&lt;span class=&quot;synStatement&quot;&gt;.write&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;取得したHTMLをセット&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
            Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;

           &lt;span class=&quot;synComment&quot;&gt; &#39;レース番号をセルに書く&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;B2&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; strRACE
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; JRA_Bodyからオッズの時刻を返す&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            
            Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;C4&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Offset&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;nRACE&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; JRA_Bodyからオッズの時刻を返す&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            Debug&lt;span class=&quot;synStatement&quot;&gt;.Print&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;オッズ:&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; JRA_Bodyからオッズの時刻を返す&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;発送時刻のセット&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;JRA_Bodyから発走時刻を返す&lt;/span&gt;
            Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;A4&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Offset&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;nRACE&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; strRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;発走&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; JRA_Bodyから発走時刻を返す&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            Debug&lt;span class=&quot;synStatement&quot;&gt;.Print&lt;/span&gt; strRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;発走:&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; JRA_Bodyから発走時刻を返す&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;初回は、馬連順を人気順に切り替え、2回目以降は馬単から単勝へ戻す(なんか複雑だけど)&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;2.4.2 初回は単勝のレース番号を読み、※スグに人気順に切り替える←ココポイント&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; str初回FLG &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;初回&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;フラグが初回？&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;リンクから、レースのTR行を探し、列 ここでは単勝を探して返す&lt;/span&gt;
                strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_TR_TD&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strRACE&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;人気順&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
                str初回FLG &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;フラグを折る・初回を抜ける&amp;quot;&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;フラグを折る。次の指示&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;人気順を探して押したいので(ドキュメントを人気順にしたい)&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Else&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;2.4.9 ２回目以降は、レース選択後、単勝に戻す(なんか紛らわしいけど・・)&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;リンクから単勝を探しクリックする※一度馬単になっているので、もったいないけど&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;Call IE_Link_InnerHTML_InStr_Click(oDocument, &amp;quot;&amp;quot;&amp;quot;&amp;quot; &amp;amp; strRACE &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;)&lt;/span&gt;
                strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_Click&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;単勝&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
            
            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;エラーチェック&lt;/span&gt;
                &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; strRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;が見つかりません&amp;quot;&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Stop&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;2.4.3 ここで、やっと単勝の人気順を読む&lt;/span&gt;
            strURL &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;https://www.jra.go.jp&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;doAction(&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;URL&lt;/span&gt;
            strPARA &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;cname=&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;, &#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーター&lt;/span&gt;
            strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; get_htmlfile_post&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strPARA&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーターを付けて開く&lt;/span&gt;
            
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;htmlfile&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            oDocument&lt;span class=&quot;synStatement&quot;&gt;.write&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;取得したHTMLをセット&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
            Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;2.4.4 単勝の表、テーブルを取得する&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;見出しをセルに書く&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;単勝・複勝オッズ（人気順）&lt;/span&gt;
            SET_X &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;A列、1から書き込む&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;単勝人気順&amp;quot;&lt;/span&gt;   &lt;span class=&quot;synComment&quot;&gt; &#39;単純に(オイオイ、工夫しようぜ)&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;テーブルを探す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;TABLEタグを抜きデータをセット&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objTABLEs &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;getElementsByTagName&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;TABLE&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;↑で代入したオブジェクトからテーブルデータを取り出す｡&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objTABLE &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLEs&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1番目(0)を代入&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;↑で見つかったかチェックする&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; objTABLE &lt;span class=&quot;synStatement&quot;&gt;Is&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;見つからなかったら、終わっていたら、ループを抜ける&lt;/span&gt;
                &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;単勝のテーブル取得エラー・・・&amp;quot;&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;抜ける&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
                
           &lt;span class=&quot;synComment&quot;&gt; &#39;表をDATAシートに書き出す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;テーブルからデータを抜き出す、書き出す&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Length &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;行のループ&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; x &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;列のループ x=0から、セルのセット位置に注意&lt;/span&gt;
                   &lt;span class=&quot;synComment&quot;&gt; &#39;データをセルに書く ※画像の枠番号が抜けているバグありですが&lt;/span&gt;
                    Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; x &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;innerText&lt;span class=&quot;synComment&quot;&gt; &#39;単純にセット&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt; x
                SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;セット位置を次の行へ&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt; y
            
&lt;span class=&quot;synComment&quot;&gt;&#39;2.4.5 馬連オッズの処理&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;馬連オッズへドキュメントを移動する(読み込みたいので)&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;単勝人気順のドキュメントから、&amp;quot;馬連&amp;quot;のリンクを探す&lt;/span&gt;
            strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_Click&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬連&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;

            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;エラーチェック&lt;/span&gt;
                &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; strRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬連のリンクが見つかりません&amp;quot;&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Stop&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;ここで、次の馬連人気順を読む&lt;/span&gt;
            strURL &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;https://www.jra.go.jp&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;doAction(&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;URL&lt;/span&gt;
            strPARA &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;cname=&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;, &#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーター&lt;/span&gt;
            strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; get_htmlfile_post&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strPARA&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーターを付けて開く&lt;/span&gt;
            
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;htmlfile&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            oDocument&lt;span class=&quot;synStatement&quot;&gt;.write&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;取得したHTMLをセット&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
            Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;馬連の表、テーブルを探る&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;見出しをセルに書く&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;馬連オッズ（人気順）&lt;/span&gt;
            SET_X &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;M列から書き込む M列=13&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;セット位置を上に戻す&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬連人気順&amp;quot;&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;単純に文字列をセット&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;テーブルを探す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;TABLEタグを抜きデータをセット&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objTABLEs &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;getElementsByTagName&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;TABLE&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;↑で代入したオブジェクトからテーブルデータを取り出す｡&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objTABLE &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLEs&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1番目(0)を代入、今回必要なのは上位5件なので、固定処理&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;↑で見つかったかチェックする&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; objTABLE &lt;span class=&quot;synStatement&quot;&gt;Is&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;見つからなかったら、終わっていたら、ループを抜ける&lt;/span&gt;
                &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬連のテーブル取得エラー・・・&amp;quot;&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;抜ける&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
                
           &lt;span class=&quot;synComment&quot;&gt; &#39;表をDATAシートに書き出す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;見出しを書く&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;人気&amp;quot;&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;組番1&amp;quot;&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;-組番2&amp;quot;&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;オッズ&amp;quot;&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;テーブルからデータを抜き出す、書き出す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;y=1で見出しを飛ばす&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Length &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;行のループ&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;人気 組番 オッズの3列なので、0to2だけど、1-2などを個別に分割する&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;データをセルに書く&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;innerText&lt;span class=&quot;synComment&quot;&gt; &#39;単純にセット&lt;/span&gt;
                
               &lt;span class=&quot;synComment&quot;&gt; &#39;※組み合わせ番号の文字列&amp;quot;1-2&amp;quot;や&amp;quot;5-11&amp;quot;などを分割セットする&lt;/span&gt;
                strMOJI &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;innerText&lt;span class=&quot;synComment&quot;&gt; &#39;単純にセット&lt;/span&gt;
                arrBOX &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synPreProc&quot;&gt;Split&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strMOJI&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;Split関数で「-」を区切り文字として分割&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CInt&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;arrBOX&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;馬連の組み合わせ番号&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CInt&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;arrBOX&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;))&lt;/span&gt;
           
               &lt;span class=&quot;synComment&quot;&gt; &#39;オッズ&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;innerText&lt;span class=&quot;synComment&quot;&gt; &#39;単純にセット&lt;/span&gt;
                
                SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;セット位置を次の行へ&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt; y

&lt;span class=&quot;synComment&quot;&gt;&#39;2.4.6 馬単オッズの処理&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;馬単オッズへドキュメントを移動する(読み込みたいので)&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;上の馬連人気順のドキュメントから、&amp;quot;馬単&amp;quot;のリンクを探す&lt;/span&gt;
            strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; IE_Link_InnerHTML_InStr_Click&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬単&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;

            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; strLINK &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;エラーチェック&lt;/span&gt;
                &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; strRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬単のリンクが見つかりません&amp;quot;&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Stop&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;ここで、次の馬単人気順を読む、ドキュメントの用意&lt;/span&gt;
            strURL &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;https://www.jra.go.jp&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;doAction(&#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;URL&lt;/span&gt;
            strPARA &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;cname=&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strLINK&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;, &#39;&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーター&lt;/span&gt;
            strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; get_htmlfile_post&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strPARA&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;パラメーターを付けて開く&lt;/span&gt;
            
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; oDocument &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;htmlfile&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
            oDocument&lt;span class=&quot;synStatement&quot;&gt;.write&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;取得したHTMLをセット&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
            Sleep &lt;span class=&quot;synConstant&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1秒待つ&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;馬単の表、テーブルを探る&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;見出しをセルに書く&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;馬単オッズ（人気順）&lt;/span&gt;
            SET_X &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;R列から書き込む R列=13&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;セット位置を上に戻す&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬単人気順&amp;quot;&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;単純に文字列をセット&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;テーブルを探す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;TABLEタグを抜きデータをセット&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objTABLEs &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;getElementsByTagName&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;TABLE&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;↑で代入したオブジェクトからテーブルデータを取り出す｡&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objTABLE &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLEs&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;1番目(0)を代入、今回必要なのは上位5件なので、固定処理&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;↑で見つかったかチェックする&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; objTABLE &lt;span class=&quot;synStatement&quot;&gt;Is&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;見つからなかったら、終わっていたら、ループを抜ける&lt;/span&gt;
                &lt;span class=&quot;synIdentifier&quot;&gt;MsgBox&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;馬単のテーブル取得エラー・・・&amp;quot;&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;抜ける&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
                
           &lt;span class=&quot;synComment&quot;&gt; &#39;表をDATAシートに書き出す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;見出しを書く&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;人気&amp;quot;&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;組番1&amp;quot;&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&#39;-組番2&amp;quot;&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;オッズ&amp;quot;&lt;/span&gt;
            SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;テーブルからデータを抜き出す、書き出す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;y=1で見出しを飛ばす&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Length &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;行のループ&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;人気 組番 オッズの3列なので、0to2だけど、1-2などを個別に分割する&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;データをセルに書く&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;innerText&lt;span class=&quot;synComment&quot;&gt; &#39;単純にセット&lt;/span&gt;
                
               &lt;span class=&quot;synComment&quot;&gt; &#39;※組み合わせ番号の文字列&amp;quot;2-1&amp;quot;や&amp;quot;18-9&amp;quot;などを分割セットする&lt;/span&gt;
                strMOJI &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;innerText&lt;span class=&quot;synComment&quot;&gt; &#39;単純にセット&lt;/span&gt;
                arrBOX &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synPreProc&quot;&gt;Split&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strMOJI&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;Split関数で「-」を区切り文字として分割&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CInt&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;arrBOX&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;馬単の組み合わせ番号&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CInt&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;arrBOX&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;))&lt;/span&gt;
           
               &lt;span class=&quot;synComment&quot;&gt; &#39;オッズ&lt;/span&gt;
                Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;SET_Y&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; SET_X &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; objTABLE&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Rows&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Cells&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;innerText&lt;span class=&quot;synComment&quot;&gt; &#39;単純にセット&lt;/span&gt;
                
                SET_Y &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; SET_Y &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;セット位置を次の行へ&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt; y
            
&lt;span class=&quot;synComment&quot;&gt;&#39;2.4.7 作業用シートからレース別に転記する&lt;/span&gt;
            Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;nRACE &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;R&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;シートの切り替え&lt;/span&gt;

           &lt;span class=&quot;synComment&quot;&gt; &#39;今回は、時間別ではないので、シートをそのままコピーする&lt;/span&gt;
            Cells&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synPreProc&quot;&gt;Delete&lt;/span&gt; Shift:&lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt;xlUp&lt;span class=&quot;synComment&quot;&gt; &#39;シート全体を削除する&lt;/span&gt;
            Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;A1&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt;      &lt;span class=&quot;synComment&quot;&gt; &#39;先頭A1を選択する、&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;初回は、開催場所、見出しもコピーする&lt;/span&gt;
            Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;作業用&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;A1:Z50&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;synPreProc&quot;&gt;Copy&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;大きくA1からZ50までコピー&lt;/span&gt;
            Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;A1&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt;
            ActiveSheet&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synPreProc&quot;&gt;Paste&lt;/span&gt;
            Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;D1&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;読み上げる※動画用&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
            Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;A1&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;Speak &lt;span class=&quot;synComment&quot;&gt; &#39;A1 開催とレース&lt;/span&gt;
            Application&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Speech&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Speak &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;、を取得しました。&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
            
        &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;フラグが立っていたら↑&lt;/span&gt;
        
    &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;MENUに戻り、保存&lt;/span&gt;
    Sheets&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MENU&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt;
    Range&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;A3&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;).Select&lt;/span&gt;
    ActiveWorkbook&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synPreProc&quot;&gt;Save&lt;/span&gt;
   
&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Sub&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;URLを受け取り、HTML文字列を返す(シフトJISページ用に変換後)&lt;/span&gt;
&lt;span class=&quot;synStatement&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; get_htmlfile&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objDOC &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objHTML &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MSXML2.XMLHTTP&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    
    objHTML&lt;span class=&quot;synStatement&quot;&gt;.Open&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;False&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;objHTML.overrideMimeType &amp;quot;text/plain; charset=Shift_JIS&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    objHTML&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synPreProc&quot;&gt;send&lt;/span&gt;
    Sleep &lt;span class=&quot;synConstant&quot;&gt;250&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;0.25秒待つ&lt;/span&gt;

    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Do&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;While&lt;/span&gt; objHTML&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;readyState &lt;span class=&quot;synStatement&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;4&lt;/span&gt;
        &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Loop&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strHTML &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;strHTML = objHTML.responseText&lt;/span&gt;
    strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;StrConv&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;objHTML&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;responseBody&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;vbUnicode&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;テキスト確認 デバッグ用&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strFNAME &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    strFNAME &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; ThisWorkbook&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Path &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;\testhtml.txt&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Open&lt;/span&gt; strFNAME &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; Output &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Print&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;Now&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot; に実行&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Print&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;strURL:&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; strURL
    &lt;span class=&quot;synStatement&quot;&gt;Print&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strHTML
    &lt;span class=&quot;synStatement&quot;&gt;Close&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;Debug.Print strHTML&lt;/span&gt;
    Sleep &lt;span class=&quot;synConstant&quot;&gt;250&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;0.25秒待つ&lt;/span&gt;
    get_htmlfile &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;リターン値で返す&lt;/span&gt;

&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt;


&lt;span class=&quot;synComment&quot;&gt;&#39;URL,パラメータを受け取り、HTML文字列を返す(シフトJISページ用に変換後)&lt;/span&gt;
&lt;span class=&quot;synStatement&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; get_htmlfile_post&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strURL &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strPARA &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objHTML &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Set&lt;/span&gt; objHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;CreateObject&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;&amp;quot;MSXML2.XMLHTTP&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    
    objHTML&lt;span class=&quot;synStatement&quot;&gt;.Open&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strURL&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;False&lt;/span&gt;
    objHTML&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;setRequestHeader &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;/span&gt;
    objHTML&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synPreProc&quot;&gt;send&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strPARA&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    Sleep &lt;span class=&quot;synConstant&quot;&gt;250&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;0.25秒待つ&lt;/span&gt;

    &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Do&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;While&lt;/span&gt; objHTML&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;readyState &lt;span class=&quot;synStatement&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;4&lt;/span&gt;
        &lt;span class=&quot;synIdentifier&quot;&gt;DoEvents&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Loop&lt;/span&gt;
    
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strHTML &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
   &lt;span class=&quot;synComment&quot;&gt; &#39;strHTML = objHTML.responseText&lt;/span&gt;
    strHTML &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;StrConv&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;objHTML&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;responseBody&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;vbUnicode&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;テキスト確認 デバッグ用&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strFNAME &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    strFNAME &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; ThisWorkbook&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Path &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;\testhtml.txt&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Open&lt;/span&gt; strFNAME &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; Output &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Print&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;Now&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot; に実行&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Print&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;strURL:&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; strURL
    &lt;span class=&quot;synStatement&quot;&gt;Print&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;strPARA:&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; strPARA
    &lt;span class=&quot;synStatement&quot;&gt;Print&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;HTML&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Close&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;Debug.Print strHTML&lt;/span&gt;
    
    get_htmlfile_post &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; strHTML &lt;span class=&quot;synComment&quot;&gt; &#39;リターン値で返す&lt;/span&gt;

&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;左右のキーワードを受け取り、文字を切り出す&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;&amp;lt;A onclick=&amp;quot;doAction(&#39;/JRADB/accessO.html&#39;,&#39;pw15oli00/6D&#39;);return&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;文字列切り出し(strMOJI, &amp;quot;doAction(&#39;&amp;quot;,&amp;quot;&#39;,&#39;&amp;quot;)&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;文字列切り出し(strMOJI, &amp;quot;&#39;,&#39;&amp;quot;,&amp;quot;&#39;)&amp;quot;)&lt;/span&gt;
&lt;span class=&quot;synStatement&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; 文字列切り出し&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strMOJI &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strLEFT &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strRIGHT &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;

    文字列切り出し &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;データ無しで初期化&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; nLEFT  &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; nSTART &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n      &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;左側の位置を探す&lt;/span&gt;
    n &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;strMOJI&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strLEFT&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;左側の区切り文字を探す&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;見つからない時抜ける&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;開始位置をセット&lt;/span&gt;
    nSTART &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Len(&lt;/span&gt;strLEFT&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;抜き取り開始位置&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;右側キーワードを探す&lt;/span&gt;
    n &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;nSTART&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strMOJI&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strRIGHT&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;右側の区切り文字を探す&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;見つからない時抜ける&lt;/span&gt;

   &lt;span class=&quot;synComment&quot;&gt; &#39;MIDで抜き出す&lt;/span&gt;
    文字列切り出し &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Mid(&lt;/span&gt;strMOJI&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; nSTART&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;n &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; nSTART&lt;span class=&quot;synStatement&quot;&gt;))&lt;/span&gt;

&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt;

&lt;span class=&quot;synComment&quot;&gt;&#39;リンクから、レースのTR行を探し、列 ここではワイドなどを返す 20220924追加修正&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;strLINK = IE_Link_InnerHTML_InStr_TR_TD(oDocument, strRACE, &amp;quot;ワイド&amp;quot;)&lt;/span&gt;
&lt;span class=&quot;synComment&quot;&gt;&#39;IEのリンクオブジェクトから文字列をInStrで探して返す&lt;/span&gt;
&lt;span class=&quot;synStatement&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt; IE_Link_InnerHTML_InStr_TR_TD&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;, _&lt;/span&gt;
                                                strレース &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;, _&lt;/span&gt;
                                                str種類 &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;

    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; i &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; objA &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;as HTMLAnchorElement&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; strWORK &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;String&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Dim&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;synType&quot;&gt;Integer&lt;/span&gt;
    
   &lt;span class=&quot;synComment&quot;&gt; &#39;まず、リンクから受け取ったレース文字列を返す&lt;/span&gt;
    IE_Link_InnerHTML_InStr_TR_TD &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;ERR&amp;quot;&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;初期値にERRセット&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; i &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Length &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
       &lt;span class=&quot;synComment&quot;&gt; &#39;レースの文字列を見つけたら　クリックじゃなかった次の種類を探す&lt;/span&gt;
        &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;outerHTML&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; strレース&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;内側のHTML&lt;/span&gt;
            
           &lt;span class=&quot;synComment&quot;&gt; &#39;本当は、見つけた行、TRを取得して、その中のTDを探した方がかっこいいけど&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;ここでは、カウンターのiを使い、iより後ろで見つかったものを返す&lt;/span&gt;
           &lt;span class=&quot;synComment&quot;&gt; &#39;iとnのループカウンタ、添え時に注意してね&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; n &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; i &lt;span class=&quot;synStatement&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;To&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Length &lt;span class=&quot;synStatement&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;1&lt;/span&gt;
               &lt;span class=&quot;synComment&quot;&gt; &#39;レースの文字列を見つけたら　クリックじゃなかった次の種類を探す&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;synIdentifier&quot;&gt;InStr&lt;/span&gt;&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;outerHTML&lt;span class=&quot;synStatement&quot;&gt;,&lt;/span&gt; str種類&lt;span class=&quot;synStatement&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Then&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;内側のHTML&lt;/span&gt;
                    IE_Link_InnerHTML_InStr_TR_TD &lt;span class=&quot;synStatement&quot;&gt;=&lt;/span&gt; oDocument&lt;span class=&quot;synStatement&quot;&gt;.&lt;/span&gt;Links&lt;span class=&quot;synStatement&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;synStatement&quot;&gt;).&lt;/span&gt;outerHTML &lt;span class=&quot;synComment&quot;&gt; &#39;見つけたAタグオブジェ(リンク)を代入&lt;/span&gt;
                    &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt; &lt;span class=&quot;synComment&quot;&gt; &#39;↑同じ行TRのチェックしてないけど・・・&lt;/span&gt;
                &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
            &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt; n
            
            &lt;span class=&quot;synStatement&quot;&gt;Exit&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;For&lt;/span&gt;&lt;span class=&quot;synComment&quot;&gt; &#39;見つけたのでループを抜ける ↑が同じTR行内のチェックしてないけどね・・・&lt;/span&gt;
        &lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;If&lt;/span&gt;
    &lt;span class=&quot;synStatement&quot;&gt;Next&lt;/span&gt; i
    
Debug&lt;span class=&quot;synStatement&quot;&gt;.Print&lt;/span&gt; &lt;span class=&quot;synConstant&quot;&gt;&amp;quot;リターン:&amp;quot;&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;&amp;amp;&lt;/span&gt; IE_Link_InnerHTML_InStr_TR_TD
&lt;span class=&quot;synStatement&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;synStatement&quot;&gt;Function&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;&lt;b&gt;簡単な解説&lt;/b&gt;&lt;br /&gt;
日付: 2026/04/25&lt;/p&gt;&lt;p&gt;タイトル仮):&lt;br /&gt;
VBAでMSXML2.XMLHTTPを使用して JRAオッズ 人気順で単勝・馬連・馬単を同時に取得したい&lt;/p&gt;&lt;p&gt;0.質問内容と過去の設置動画を紹介する&lt;/p&gt;&lt;p&gt;下記の質問メッセージをいただきました&lt;/p&gt;&lt;p&gt;VBAでXMLHTTPを使用して JRAオッズ 人気順で単勝・馬連・馬単を同時に取得したい&lt;br /&gt;
馬連上位5件&lt;br /&gt;
馬単上位5件&lt;br /&gt;
の馬番号を取得したい&lt;/p&gt;&lt;p&gt;おっさんの回答:&lt;/p&gt;&lt;p&gt;VBAでXMLHTTPを使用するコードですね。&lt;br /&gt;
(パワークエリでは無くて、)&lt;/p&gt;&lt;p&gt;26年2月の謝罪動画&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=2Pt_-qVQQ_c&quot;&gt;https://www.youtube.com/watch?v=2Pt_-qVQQ_c&lt;/a&gt;&lt;br /&gt;
のコードと設置方法を参考にして、&lt;br /&gt;
改造してみます。&lt;/p&gt;&lt;p&gt;1.まず実行テストを見せる&lt;/p&gt;&lt;p&gt;①B2に開催地を入れます&lt;/p&gt;&lt;p&gt;今週のオッズ&lt;br /&gt;
4月25日（土曜）&lt;br /&gt;
2回東京1日&lt;br /&gt;
3回京都1日&lt;br /&gt;
1回福島5日&lt;br /&gt;
4月26日（日曜）&lt;br /&gt;
2回東京2日&lt;br /&gt;
3回京都2日&lt;/p&gt;&lt;p&gt;②テスト用のレースに1を立てます&lt;br /&gt;
最終オッズや発送済みだとスキップするので、発走時刻をクリアして、&lt;br /&gt;
テスト用のレースに1を立てます&lt;/p&gt;&lt;p&gt;③実行ボタンを押します&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;2.簡単なコード・プログラムの流れを解説する&lt;/p&gt;&lt;p&gt;Set objHTML = CreateObject(&quot;MSXML2.XMLHTTP&quot;)&lt;br /&gt;
でJRAのページを読み込み、&lt;br /&gt;
Set oDocument = CreateObject(&quot;htmlfile&quot;)&lt;br /&gt;
oDocument.write strHTML  &#39;取得したHTMLをセット&lt;/p&gt;&lt;p&gt;HTMLのドキュメントオブジェクトとして処理&lt;br /&gt;
(リンクを探したり、テーブルのデータを取得したり)&lt;br /&gt;
を行う、&lt;br /&gt;
そんなパターンの連続です&lt;/p&gt;&lt;p&gt;処理の流れを、現物を見ながら説明する&lt;/p&gt;&lt;p&gt;JRAホームページからオッズを探す&lt;br /&gt;
&#39;2.1 JRA TOP ページの表示&lt;br /&gt;
&#39;2.2 リンクからオッズを取得(リンクを押すような処理・次を読む)&lt;br /&gt;
↓&lt;br /&gt;
MENUシートB2の日付を探して次のページへ&lt;br /&gt;
&#39;2.3 B2開催のリンクを探して、次(レース・オッズ一覧)を読む&lt;br /&gt;
&#39;開催日のリンクをあさる&lt;br /&gt;
strLINK = IE_Link_InnerHTML_InStr_Click(oDocument, Sheets(&quot;MENU&quot;).Range(&quot;B2&quot;))&lt;br /&gt;
↓&lt;br /&gt;
ループ処理(1R-12R)まで、フラグと最終オッズを見ながら処理する&lt;br /&gt;
&#39;2.4 1Rから12Rまで、ループする。※これだと前日発売の時1Rでトラブルなぁ&lt;br /&gt;
For nRACE = 1 To 12  &#39;一から十二まで&lt;br /&gt;
    &#39;B5からのフラグが立っていたら And 最終じゃなければ&lt;br /&gt;
    &#39;レースを取り込む&lt;br /&gt;
    If Sheets(&quot;MENU&quot;).Range(&quot;B4&quot;).Offset(nRACE, 0) = 1 _&lt;br /&gt;
      And Sheets(&quot;MENU&quot;).Range(&quot;B4&quot;).Offset(nRACE, 1) &lt;&gt; &quot;最終&quot; Then&lt;/p&gt;&lt;p&gt;初回なら、目的の単勝レースをHTMLドキュメントにする&lt;br /&gt;
単勝馬番順&lt;br /&gt;
↓&lt;br /&gt;
単勝人気順にしたい&lt;/p&gt;&lt;p&gt;&#39;2.4.1 初回は単勝のレース番号を読み、※スグに人気順に切り替える←ココポイント&lt;br /&gt;
    If str初回FLG = &quot;初回&quot; Then &#39;フラグが初回？&lt;br /&gt;
        &#39;リンクから、レースのTR行を探し、列 ここでは単勝を探して返す&lt;br /&gt;
        strLINK = IE_Link_InnerHTML_InStr_TR_TD(oDocument, strRACE, &quot;単勝&quot;)&lt;br /&gt;
&#39;2.4.2 初回は単勝のレース番号を読み、※スグに人気順に切り替える←ココポイント&lt;br /&gt;
    If str初回FLG = &quot;初回&quot; Then &#39;フラグが初回？&lt;br /&gt;
        &#39;リンクから、レースのTR行を探し、列 ここでは単勝を探して返す&lt;br /&gt;
        strLINK = IE_Link_InnerHTML_InStr_TR_TD(oDocument, strRACE, &quot;人気順&quot;)&lt;br /&gt;
        str初回FLG = &quot;フラグを折る・初回を抜ける&quot;  &#39;フラグを折る。次の指示&lt;br /&gt;
        &#39;人気順を探して押したいので(ドキュメントを人気順にしたい)&lt;/p&gt;&lt;p&gt;※ポイント&lt;br /&gt;
&#39;2.4.3 ここで、やっと単勝の人気順を読む&lt;br /&gt;
    strURL = &quot;&lt;a href=&quot;https://www.jra.go.jp&quot;&gt;https://www.jra.go.jp&lt;/a&gt;&quot; &amp; 文字列切り出し(strLINK, &quot;doAction(&#39;&quot;, &quot;&#39;,&quot;) &#39;URL&lt;br /&gt;
    strPARA = &quot;cname=&quot; &amp; 文字列切り出し(strLINK, &quot;&#39;, &#39;&quot;, &quot;&#39;)&quot;)   &#39;パラメーター&lt;br /&gt;
    strHTML = get_htmlfile_post(strURL, strPARA)  &#39;パラメーターを付けて開く&lt;/p&gt;&lt;p&gt;&#39;2.4.4 単勝の表、テーブルを取得する&lt;br /&gt;
    &#39;TABLEタグを抜きデータをセット&lt;br /&gt;
    Set objTABLEs = oDocument.getElementsByTagName(&quot;TABLE&quot;)&lt;/p&gt;&lt;p&gt;&#39;2.4.5 馬連オッズの処理&lt;br /&gt;
&#39;馬連オッズへドキュメントを移動する(読み込みたいので)&lt;br /&gt;
            &#39;単勝人気順のドキュメントから、&quot;馬連&quot;のリンクを探す&lt;br /&gt;
            strLINK = IE_Link_InnerHTML_InStr_Click(oDocument, &quot;馬連&quot;)&lt;/p&gt;&lt;p&gt;&#39;2.4.6 馬単オッズの処理&lt;br /&gt;
&#39;馬単オッズへドキュメントを移動する(読み込みたいので)&lt;br /&gt;
            &#39;上の馬連人気順のドキュメントから、&quot;馬単&quot;のリンクを探す&lt;br /&gt;
            strLINK = IE_Link_InnerHTML_InStr_Click(oDocument, &quot;馬単&quot;)&lt;/p&gt;&lt;p&gt;&#39;2.4.7 作業用シートからレース別に転記する&lt;br /&gt;
Sheets(nRACE &amp; &quot;R&quot;).Select  &#39;シートの切り替え&lt;br /&gt;
作業用シートからレース別へデータをコピーする&lt;/p&gt;&lt;p&gt;※※ここで1レース単位終了、ループの頭へ戻る&lt;br /&gt;
現在のドキュメントの状態は、&lt;br /&gt;
&quot;馬単人気順&quot;のページ、ドキュメントを保持しています&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;二回目のループ&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&#39;2.4.8 ２回目以降は、馬単のオッズの位置でレースを選択(なんか紛らわしいけど・・)&lt;br /&gt;
    &#39;リンクから該当するレースを探しクリックする &quot;1R&quot;..&quot;12R&quot;&lt;br /&gt;
    &#39;Call IE_Link_InnerHTML_InStr_Click(oDocument, &quot;&quot;&quot;&quot; &amp; strRACE &amp; &quot;&quot;&quot;&quot;)&lt;br /&gt;
    strLINK = IE_Link_InnerHTML_InStr_Click(oDocument, strRACE)&lt;br /&gt;
ここで、このドキュメントで&lt;br /&gt;
レースを条件にデータを探すと、&lt;br /&gt;
次のレースの馬単のページ、ドキュメントになる&lt;/p&gt;&lt;p&gt;単勝に戻したいので、そのレースの単勝を探す&lt;br /&gt;
&#39;2.4.9 ２回目以降は、レース選択後、単勝に戻す(なんか紛らわしいけど・・)&lt;br /&gt;
&#39;リンクから単勝を探しクリックする※一度馬単になっているので、もったいないけど&lt;br /&gt;
  &#39;Call IE_Link_InnerHTML_InStr_Click(oDocument, &quot;&quot;&quot;&quot; &amp; strRACE &amp; &quot;&quot;&quot;&quot;)&lt;br /&gt;
   strLINK = IE_Link_InnerHTML_InStr_Click(oDocument, &quot;単勝&quot;)&lt;/p&gt;&lt;p&gt;このIfの流れで、&lt;br /&gt;
            &#39;2.4.3 ここで、やっと単勝の人気順を読む&lt;br /&gt;
            strURL = &quot;&lt;a href=&quot;https://www.jra.go.jp&quot;&gt;https://www.jra.go.jp&lt;/a&gt;&quot; &amp; 文字列切り出し(strLINK, &quot;doAction(&#39;&quot;, &quot;&#39;,&quot;) &#39;URL&lt;br /&gt;
            strPARA = &quot;cname=&quot; &amp; 文字列切り出し(strLINK, &quot;&#39;, &#39;&quot;, &quot;&#39;)&quot;)   &#39;パラメーター&lt;br /&gt;
            strHTML = get_htmlfile_post(strURL, strPARA)  &#39;パラメーターを付けて開く&lt;br /&gt;
へ合流して、&lt;br /&gt;
ループを繰り返すと、&lt;br /&gt;
人気順のテーブルをループ処理で取得できます&lt;br /&gt;
※人間的には、馬単の読み込みが2回になるので、ループ的には美しくないのですが・・・・&lt;/p&gt;&lt;p&gt;3.おわりの挨拶といつものバグ報告&lt;/p&gt;&lt;p&gt;現在の不具合&lt;br /&gt;
1.枠番号が空白&lt;br /&gt;
単純にテーブルテキストを取得しているので、&lt;br /&gt;
画像表示の枠番号が取得されていない、&lt;br /&gt;
個別に画像ファイル名で取得しないとだめです&lt;/p&gt;&lt;p&gt;2.上位5件ならと手抜きをしているので・・・&lt;br /&gt;
上位5件なら、&lt;br /&gt;
テーブル0番目を抜いてしまえばOKと考えていたが、&lt;/p&gt;&lt;p&gt;3回京都1日 8レース&lt;br /&gt;
のように、&lt;br /&gt;
6頭立てのレースだと、&lt;br /&gt;
馬連のテーブル0が上位4までの出力だった&lt;br /&gt;
※4列表示で、均等にしているので？出走する馬の数が少ないと、5以下になる・・・&lt;br /&gt;
また、全ての人気順を取得したいなど、追加要望があった時の対応など、&lt;br /&gt;
固定のテーブル(0)処理は、良くないですね・・・・&lt;/p&gt;&lt;p&gt;こんな感じで、&lt;br /&gt;
不具合がありますが、&lt;br /&gt;
人気順のオッズを取得することができると思います&lt;br /&gt;
アレンジして、使ってみてください。&lt;/p&gt;&lt;p&gt;解決のヒントとなれば、幸いです。&lt;/p&gt;&lt;p&gt;ソースコード全体とマクロ付きファイルのダウンロード&lt;br /&gt;
 &lt;a href=&quot;https://note.com/calm_slug2867/n/nd5e26b1b5292&quot;&gt;https://note.com/calm_slug2867/n/nd5e26b1b5292&lt;/a&gt; &lt;br /&gt;
でマクロ付きの.xlsmをダウンロードできます&lt;br /&gt;
合わせて、使ってみてください。&lt;/p&gt;
</content>        
        <category term="VBA" label="VBA" />
        
        <category term="Excel" label="Excel" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/5f01b28b00e8eb268e337b2ba81adab45199c499/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260425%2F20260425214850.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>2026/04/23頃？VREW4のバージョンアップが来そうですね。</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/04/16/060000"/>
        <id>hatenablog://entry/17179246901376868676</id>
        <published>2026-04-16T06:00:00+09:00</published>
        <updated>2026-04-22T10:23:53+09:00</updated>        <summary type="html">04/22 バージョンアップされました 04/22バージョンアップ後にスクショを撮る私は(も？) AIショート動画連発で収益停止になったし使わないかもしれないけど・・・ 2026/04/23頃？VREW4のバージョンアップが来そうですね。 YouTubeライブ配信予定のスクショ [Vrew] 4.0.0 업데이트 안내 - 이미지 하나로 생성부터 영상까지 완성 https://www.youtube.com/watch?v=E0mJj9pPhDc www.youtube.com</summary>
        <content type="html">&lt;p&gt;04/22 バージョンアップされました&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;04/22バージョンアップ後にスクショを撮る&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260422/20260422101742.jpg&quot; width=&quot;683&quot; height=&quot;251&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;04/22バージョンアップ後にスクショを撮る&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;私は(も？) &lt;strong&gt;AIショート動画連発&lt;/strong&gt;で&lt;strong&gt;収益停止&lt;/strong&gt;になったし使わないかもしれないけど・・・&lt;br /&gt;
2026/04/23頃？VREW4のバージョンアップが来そうですね。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;YouTubeライブ配信予定のスクショ&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260415/20260415183051.jpg&quot; width=&quot;825&quot; height=&quot;597&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;YouTubeライブ配信予定のスクショ&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;br /&gt;
[Vrew] 4.0.0 업데이트 안내 - 이미지 하나로 생성부터 영상까지 완성&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=E0mJj9pPhDc&quot;&gt;https://www.youtube.com/watch?v=E0mJj9pPhDc&lt;/a&gt;&lt;br /&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/E0mJj9pPhDc?feature=oembed&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen title=&quot;[Vrew] 4.0.0 업데이트 안내 - 이미지 하나로 생성부터 영상까지 완성&quot;&gt;&lt;/iframe&gt;&lt;cite class=&quot;hatena-citation&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=E0mJj9pPhDc&quot;&gt;www.youtube.com&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/ece2637b70739ac77c67b7d45670c26adc8766cd/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260415%2F20260415183051.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>Excel VBA シート内のイベントでドラッグアンドドロップを判断 移動元のセルを灰色、移動先を赤色にする方法</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/04/15/060000"/>
        <id>hatenablog://entry/17179246901376640032</id>
        <published>2026-04-15T06:00:00+09:00</published>
        <updated>2026-04-15T06:00:04+09:00</updated>        <summary type="html">やりたいこと: シート内のイベントでドラッグアンドドロップを判断して 移動元のセルを灰色、移動先を赤色にする www.youtube.com方針・アプローチ方法: イベントは、シートのイベント Worksheet_Changeのイベントでタイミングを取り、 リボンの時代に、 昔のコマンドバーオブジェクトから 元に戻す(CTRL+Z)のツールチップに表示されている文字列を取得して ドラッグアンドドロップが実行されたか？の判断材料にするって、何言ってんの？このおじさんは・・って感じなので、 細かいテストのコードから説明を開始します、 ダウンロード可能なファイルは https://note.com/…</summary>
        <content type="html">&lt;p&gt;やりたいこと:&lt;br /&gt;
シート内のイベントでドラッグアンドドロップを判断して&lt;br /&gt;
移動元のセルを灰色、移動先を赤色にする&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/ayLojPeULEQ?feature=oembed&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen title=&quot;【Excel VBA】ドラッグアンドドロップを判定する方法！移動元のセルに自動で色をつける 『元に戻す』のツールチップを覗いて判断するマクロを紹介する&quot;&gt;&lt;/iframe&gt;&lt;cite class=&quot;hatena-citation&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ayLojPeULEQ&quot;&gt;www.youtube.com&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;p&gt;方針・アプローチ方法:&lt;br /&gt;
イベントは、シートのイベント Worksheet_Changeのイベントでタイミングを取り、&lt;br /&gt;
リボンの時代に、&lt;br /&gt;
昔のコマンドバーオブジェクトから&lt;br /&gt;
元に戻す(CTRL+Z)のツールチップに表示されている文字列を取得して&lt;br /&gt;
ドラッグアンドドロップが実行されたか？の判断材料にする&lt;/p&gt;&lt;p&gt;って、何言ってんの？このおじさんは・・って感じなので、&lt;br /&gt;
細かいテストのコードから説明を開始します、&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
ダウンロード可能なファイルは&lt;br /&gt;
&lt;a href=&quot;https://note.com/calm_slug2867/n/neb62fcc0e617?sub_rt=share_pb&quot;&gt;https://note.com/calm_slug2867/n/neb62fcc0e617?sub_rt=share_pb&lt;/a&gt;&lt;br /&gt;
を見てください&lt;hr&gt;&lt;/p&gt;&lt;p&gt;1.元に戻す(CTRL+Z)のツールチップとは・・・ここです&lt;/p&gt;&lt;p&gt;Excelで何か、入力をしたり、変更します&lt;br /&gt;
左上のクイックツールバーの&lt;br /&gt;
CTRL+Z 元に戻す&lt;br /&gt;
に&lt;br /&gt;
マウスカーソルを合わせると、&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;元に戻すのコマンドにマウスカーソルを合わせると履歴が見える、本当はこれを取りたかったけど&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260415/20260415043045.jpg&quot; width=&quot;1200&quot; height=&quot;675&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;元に戻すのコマンドにマウスカーソルを合わせると履歴が見える、本当はこれを取りたかったけど&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;直前の動作が表示されると思います&lt;br /&gt;
添付画像の①元に戻すのアイコンを押すと、動作が保存されている&lt;br /&gt;
これを取得出来たらいいなぁ・・・&lt;/p&gt;&lt;p&gt;2.VBAでコマンド やり直し&quot;元に戻す&quot;を取得する&lt;/p&gt;&lt;p&gt;懐かしのコマンドバーをAIに聞いて探ってみます&lt;/p&gt;
&lt;pre class=&quot;code vba&quot; data-lang=&quot;vba&quot; data-unlink&gt;&amp;#39;AIに&amp;#34;元に戻す&amp;#34;コマンドを取得するコードを聞いてテスト
&amp;#39;26/04/14 Win10延長サポート+MS365のExcelでテスト
Sub undoCtrl()
    Dim undoCtrl As CommandBarControl
    Dim fullText As String

    &amp;#39; Excelの内部ID「128（元に戻す）」を使って、ボタンの情報を取得します
    Set undoCtrl = Application.CommandBars.FindControl(ID:=128)

    &amp;#39; ボタンが見つからない、または履歴が空の場合の処理
    If undoCtrl Is Nothing Then
        MsgBox &amp;#34;操作履歴が見つかりませんでした。&amp;#34;
        Exit Sub
    End If

    &amp;#39; Captionプロパティには「元に戻す: 貼り付け (&amp;amp;U)」のような文字列が入っています
    Debug.Print &amp;#34;.Caption&amp;#34;, undoCtrl.Caption
    
    &amp;#39; TooltipTextプロパティには
    &amp;#39; 元に戻す(&amp;amp;U) セルの挿入 (Ctrl+Z)
    &amp;#39; 元に戻す(&amp;amp;U) セル C3 への &amp;#39;123&amp;#39; の入力 (Ctrl+Z)
    &amp;#39;のような文字列が入っています
    Debug.Print &amp;#34;.TooltipText&amp;#34;, undoCtrl.TooltipText

    MsgBox undoCtrl.TooltipText, vbInformation

End Sub&lt;/pre&gt;&lt;p&gt;3.ワークシートのイベントで使ってみる&lt;/p&gt;
&lt;pre class=&quot;code vba&quot; data-lang=&quot;vba&quot; data-unlink&gt;&amp;#39;シートのイベントで使ってみます
Private Sub Worksheet_Change(ByVal Target As Range)

    Debug.Print Target.Address &amp;amp; &amp;#34; -- で操作が発生したよ&amp;#34;

    &amp;#39;コマンドバーを見る
    Dim objCtrl As CommandBarControl
    Dim txtTooltipText As String
    
    &amp;#39;Excel操作でツールチップを更新待ち、無くても良いか？後でチェック
    DoEvents
    
    &amp;#39; やり直し「元に戻す」ボタンを取得 128の固定値でテスト
    Set objCtrl = Application.CommandBars.FindControl(ID:=128)
    If objCtrl Is Nothing Then
        Debug.Print &amp;#34;128で「元に戻す」が見つかりません&amp;#34;
    Else
        &amp;#39;ツールチップのテキストを取得する
        txtTooltipText = objCtrl.TooltipText
        Debug.Print txtTooltipText
    End If

End Sub&lt;/pre&gt;&lt;p&gt;4.質問の試作&lt;/p&gt;&lt;p&gt;ドラッグアンドドロップ時の&lt;br /&gt;
１つ前のアドレスを保存して、&lt;br /&gt;
色を変更してみます&lt;br /&gt;
※テスト不足のバグ付きですが、参考となれば&lt;/p&gt;
&lt;pre class=&quot;code vba&quot; data-lang=&quot;vba&quot; data-unlink&gt;Option Explicit

Private str移動元 As String  &amp;#39;一つ前で移動元アドレスを保存するための変数

Private Sub Worksheet_Change(ByVal Target As Range)

&amp;#39; エラーが発生したときに、強制的に「ErrorExit」へ飛ばします
    On Error GoTo ErrorExit
&amp;#39;↑デバッグ中は、注意。

    &amp;#39;いつものイベントを一時停止する呪文
    Application.EnableEvents = False
    Debug.Print Target.Address &amp;amp; &amp;#34; -- で操作が発生したよ&amp;#34;

    &amp;#39;コマンドバーを見る
    Dim objCtrl As CommandBarControl
    Dim txtTooltipText As String
    
    &amp;#39;Excel操作でツールチップを更新待ち、無くても良いか？後でチェック
    DoEvents
    
    &amp;#39; やり直し「元に戻す」ボタンを取得 128の固定値でテスト
    Set objCtrl = Application.CommandBars.FindControl(ID:=128)
    If objCtrl Is Nothing Then
        Debug.Print &amp;#34;128で「元に戻す」が見つかりません&amp;#34;
    Else
        &amp;#39;ツールチップのテキストを取得する
        txtTooltipText = objCtrl.TooltipText
        Debug.Print txtTooltipText
        &amp;#39;&amp;#34;ドラッグ アンド ドロップ&amp;#34;の時、特殊な処理を行う
        If InStr(txtTooltipText, &amp;#34;ドラッグ アンド ドロップ&amp;#34;) &amp;gt; 0 Then
            If Trim(str移動元 &amp;amp; &amp;#34;&amp;#34;) = &amp;#34;&amp;#34; Then &amp;#39;1回目の時は、アドレスのみ保存する
                str移動元 = Target.Address
            Else  &amp;#39;二回目の時、連続の時色の処理を行う
                &amp;#39;元セル(保存された変数を利用)を灰色に
                Range(str移動元).Interior.Color = RGB(128, 128, 128)
                &amp;#39;移動先 2回目は、素直にTargetを使用する
                Target.Interior.Color = RGB(255, 0, 0)
                &amp;#39;2回目の処理が終わったので、保存アドレスを忘れないでクリアする
                str移動元 = &amp;#34;&amp;#34;
            End If
        
        Else &amp;#39;他の操作時、移動元アドレスをクリアする
            str移動元 = &amp;#34;&amp;#34;
        End If
    End If

ErrorExit:
    &amp;#39; (正常に終わっても、エラーで飛ばされてきても、ここを通す)
    &amp;#39;イベントを必ず再開
    Application.EnableEvents = True

End Sub&lt;/pre&gt;&lt;p&gt;5.おわりの挨拶&lt;/p&gt;&lt;p&gt;少し、アプローチが違うかもしれませんが、&lt;/p&gt;&lt;p&gt;連続で&lt;br /&gt;
Worksheet_Change&lt;br /&gt;
イベントが発生するので、&lt;br /&gt;
ツールチップの文字列、&lt;br /&gt;
If InStr(txtTooltipText, &quot;ドラッグ アンド ドロップ&quot;) &gt; 0&lt;br /&gt;
で判断して、&lt;br /&gt;
ドロップ元(移動元)とドロップ先(移動後)の色を変化させてみました&lt;/p&gt;&lt;p&gt;解決のヒントとなれば幸いです。&lt;/p&gt;&lt;p&gt;【結論：Excelは「元に戻す」を見ればD&amp;Dを完全に見抜けます！】&lt;/p&gt;&lt;p&gt;Worksheet_Changeイベントだけでは判別不能な「ドラッグ＆ドロップ（D&amp;D）」操作。&lt;br /&gt;
この動画では、内部ID「128」のツールチップを覗き見るという、AIも驚く裏技で「移動元」と「移動先」を自動で色分けする仕組みを実演解説します。&lt;/p&gt;&lt;p&gt;▼ お急ぎの方は、各見どころへ直接ジャンプ！&lt;/p&gt;&lt;p&gt;1. 【核心】Excelが隠し持つ「操作の証拠」を掴む瞬間&lt;br /&gt;
タイムライン： 01:26 &lt;a href=&quot;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=86&quot;&gt;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=86&lt;/a&gt;&lt;br /&gt;
内容： 「元に戻す」ボタンの内部情報を取得するロジック。これがあらゆる操作特定の鍵です。&lt;/p&gt;&lt;p&gt;2. 【技術解説】VBAでツールチップの文字を読み取る基本コード&lt;br /&gt;
タイムライン： 03:42 &lt;a href=&quot;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=222&quot;&gt;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=222&lt;/a&gt;&lt;br /&gt;
内容： CommandBars(ID:=128)から操作名を取得する具体的な記述方法。&lt;/p&gt;&lt;p&gt;3. 【難所攻略】D&amp;D特有の「2回連続イベント」を制御する&lt;br /&gt;
タイムライン： 11:01 &lt;a href=&quot;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=661&quot;&gt;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=661&lt;/a&gt;&lt;br /&gt;
内容： 2回発生するChangeイベントを一つの操作として完結させるロジックの構築。&lt;/p&gt;&lt;p&gt;4. 【実演検証】実際にセルが灰色と赤色にパッと変わる瞬間&lt;br /&gt;
タイムライン： 15:45 &lt;a href=&quot;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=945&quot;&gt;https://www.youtube.com/watch?v=ayLojPeULEQ&amp;t=945&lt;/a&gt;&lt;br /&gt;
内容： D&amp;D後に「移動元」と「移動先」が視覚化される様子を実演。&lt;/p&gt;&lt;p&gt;5. 【誠実なポイント：注意点】&lt;br /&gt;
・Excelの言語設定に依存する「文字列判定」のコツと、将来の仕様変更への懸念についても正直に解説しています。&lt;/p&gt;&lt;p&gt;▼&lt;br /&gt;
Excel VBAの可能性を広げるこの「ツールチップ監視術」、試してみた感想をぜひコメント欄で教えてください！&lt;br /&gt;
「こんな操作も検知できたよ！」という報告もお待ちしています。&lt;/p&gt;&lt;p&gt;#ExcelVBA #ドラッグアンドドロップ #CommandBars #仕事効率化 #VBA中級者 #裏技&lt;/p&gt;
</content>        
        <category term="Excel" label="Excel" />
        
        <category term="VBA" label="VBA" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/9ed0dd612421c434375b0aecc5585bd13897db41/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260415%2F20260415043045.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>Power QueryでJRA馬連オッズ取得の手順解説 Html.Table関数を使用してTH,TDタグ指定で値を取得する方法</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/04/06/140000"/>
        <id>hatenablog://entry/17179246901373552582</id>
        <published>2026-04-06T14:00:00+09:00</published>
        <updated>2026-04-06T14:00:01+09:00</updated>        <summary type="html">【Excel】Power QueryでHTMLソースから値を抜き出す Html.Table関数を使用してTH,TDタグ指定で値を取得する方法 JRA馬連オッズ取得を例題にして解説を行うテストファイルのダウンロードページは https://note.com/calm_slug2867/n/n59bdd9dcfb89?sub_rt=share_pb を見てください。ライブ配信動画URL: https://youtube.com/live/EUGMC7UzUz8 www.youtube.com 【タイムライン】 00:00:00 イントロ：大阪杯のオッズ取得テスト 00:02:01 手順01：POS…</summary>
        <content type="html">&lt;p&gt;【Excel】Power QueryでHTMLソースから値を抜き出す Html.Table関数を使用してTH,TDタグ指定で値を取得する方法 JRA馬連オッズ取得を例題にして解説を行う&lt;/p&gt;&lt;p&gt;テストファイルのダウンロードページは&lt;br /&gt;
&lt;a href=&quot;https://note.com/calm_slug2867/n/n59bdd9dcfb89?sub_rt=share_pb&quot;&gt;https://note.com/calm_slug2867/n/n59bdd9dcfb89?sub_rt=share_pb&lt;/a&gt;&lt;br /&gt;
を見てください。&lt;/p&gt;&lt;p&gt;ライブ配信動画URL:&lt;br /&gt;
&lt;a href=&quot;https://youtube.com/live/EUGMC7UzUz8&quot;&gt;https://youtube.com/live/EUGMC7UzUz8&lt;/a&gt;&lt;br /&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/EUGMC7UzUz8?enablejsapi=1&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=EUGMC7UzUz8&quot;&gt;www.youtube.com&lt;/a&gt;&lt;br /&gt;
【タイムライン】&lt;br /&gt;
00:00:00 イントロ：大阪杯のオッズ取得テスト&lt;br /&gt;
00:02:01 手順01：POST送信でHTMLソース全体を取得する&lt;br /&gt;
00:03:57 手順02：馬連テーブルのソースを分割・抽出する&lt;br /&gt;
00:13:40 手順03：単体テーブルからの値取り出しテスト（Html.Table活用）&lt;br /&gt;
00:26:23 手順04：List.Transformで全テーブルを一括変換する&lt;br /&gt;
00:37:03 蛇足：なぜUI操作（Web.Page）だと失敗するのか？検証&lt;br /&gt;
00:44:47 おまけ：馬単だと成功する謎の現象&lt;/p&gt;&lt;p&gt;【結論：パワークエリの「最後の一行が消える」問題は、ソース直接分割で完勝できます！】&lt;/p&gt;&lt;p&gt;JRAの馬連オッズ取得で、なぜか「最後の一行」だけが取り込めず悩んでいませんか？&lt;br /&gt;
UI操作（Web.Page関数）の限界を、M言語によるソース直接分割で突破する方法を解説します。&lt;/p&gt;&lt;p&gt;1. 【核心：なぜ失敗するのか？】Web.Page関数の限界を検証&lt;br /&gt;
00:43:03 &lt;a href=&quot;https://youtube.com/live/EUGMC7UzUz8?t=2583&quot;&gt;https://youtube.com/live/EUGMC7UzUz8?t=2583&lt;/a&gt;&lt;br /&gt;
UI操作でデータが欠ける原因を突き止めます。&lt;/p&gt;&lt;p&gt;2. 【必見：解決策】HTMLソースをText.Splitで強制分解&lt;br /&gt;
00:03:57 &lt;a href=&quot;https://youtube.com/live/EUGMC7UzUz8?t=237&quot;&gt;https://youtube.com/live/EUGMC7UzUz8?t=237&lt;/a&gt;&lt;br /&gt;
M言語でテーブル構造を直接切り分ける、本動画のメインディッシュです。&lt;/p&gt;&lt;p&gt;3. 【正直にお伝えします：注意点】&lt;br /&gt;
ライブならではの試行錯誤も含め、生のプログラミングの過程を公開しています。&lt;br /&gt;
「100%正解」の提示ではなく、現場でどうデバッグしていくかのヒントにしてください！&lt;/p&gt;&lt;p&gt;#PowerQuery #Excel #JRA #スクレイピング #M言語 #競馬予想&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;ライブ時に使用した台本:&lt;/p&gt;&lt;p&gt;まず、HTMLソースからTABLEを集める&lt;/p&gt;&lt;p&gt;01HTMLソース全体を取得する&lt;br /&gt;
いつものようにPOST送信で、&lt;br /&gt;
HTMLのソースを取得する&lt;br /&gt;
改行区切りで出力する&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;let

    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    // セルからパラメーターを受け取る strPARA = Text.ToBinary(&amp;#34;cname=pw15oli00/6D&amp;#34;),固定をやめるため
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; Excel.CurrentWorkbook(){[Name=&amp;#34;レース種類別CNAME&amp;#34;]}[Content]{0}[Column1],
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    コード変換後の文字列 = Text.FromBinary(ソース, 932),
    改行区切りの文字列 = Text.Split(コード変換後の文字列, &amp;#34;#(cr,lf)&amp;#34;)

in
    改行区切りの文字列&lt;/pre&gt;&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
02馬連TABLEのソースを抜き出す&lt;/p&gt;&lt;p&gt;Text.Splitで&lt;table class= を条件に、まず分割する
List.Skipを使い１つ目のデータは必要ないので、スキップさせる
Text.BeforeDelimiter を使い&lt;/table&gt;まで整形、と、分割時に消えた&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;let

    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    // セルからパラメーターを受け取る strPARA = Text.ToBinary(&amp;#34;cname=pw15oli00/6D&amp;#34;),固定をやめるため
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; Excel.CurrentWorkbook(){[Name=&amp;#34;レース種類別CNAME&amp;#34;]}[Content]{0}[Column1],
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],

    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    // 大きく、全体ソースをまず取得する
    HTML文字列 = Text.FromBinary(ソース, 932),


    // 全体ソースから、開始タグで分割してリストを作成する
    // class名&amp;#34;basic narrow-xy umaren&amp;#34;のテーブルを抜き出したい
    lstTABLEとクラスで分割 = Text.Split(HTML文字列, &amp;#34;&amp;lt;table class=&amp;#34;&amp;#34;basic narrow-xy umaren&amp;#34;&amp;#34;&amp;gt;&amp;#34;),

    // 上半分・いらない部分をスキップする最初の要素を飛ばす
    lstTABALのデータ = List.Skip(lstTABLEとクラスで分割, 1),

    // 終了タグ&amp;lt;/table&amp;gt;で区切り、分割処理で消えた開始TABLEタグを付け直す
    lstテーブルソースのリストを作成 = List.Transform(lstTABALのデータ, each 
        &amp;#34;&amp;lt;table class=&amp;#34;&amp;#34;basic narrow-xy umaren&amp;#34;&amp;#34;&amp;gt;&amp;#34; &amp;amp; Text.BeforeDelimiter(_, &amp;#34;&amp;lt;/table&amp;gt;&amp;#34;) &amp;amp; &amp;#34;&amp;lt;/table&amp;gt;&amp;#34;
    ),

in
    lstテーブルソースのリストを作成
&lt;/pre&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;03単体固定テストでテーブルから値を取り出す&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;let
    // 3.1 テストデータの定義 固定で2つのセルをコピーして使う
    lstテーブルテキストソース = { 
        &amp;#34;&amp;lt;table class=&amp;#34;&amp;#34;basic narrow-xy umaren&amp;#34;&amp;#34;&amp;gt;
          &amp;lt;caption&amp;gt;12&amp;lt;/caption&amp;gt;
          &amp;lt;tbody&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;th scope=&amp;#34;&amp;#34;row&amp;#34;&amp;#34;&amp;gt;13&amp;lt;/th&amp;gt;
                &amp;lt;td&amp;gt;385.0&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;th scope=&amp;#34;&amp;#34;row&amp;#34;&amp;#34;&amp;gt;14&amp;lt;/th&amp;gt;
                &amp;lt;td&amp;gt;237.6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;th scope=&amp;#34;&amp;#34;row&amp;#34;&amp;#34;&amp;gt;15&amp;lt;/th&amp;gt;
                &amp;lt;td&amp;gt;&amp;lt;strong class=&amp;#34;&amp;#34;red&amp;#34;&amp;#34;&amp;gt;14.9&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;&amp;#34;,
&amp;#34;&amp;lt;table class=&amp;#34;&amp;#34;basic narrow-xy umaren&amp;#34;&amp;#34;&amp;gt;
          &amp;lt;caption&amp;gt;13&amp;lt;/caption&amp;gt;
          &amp;lt;tbody&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;th scope=&amp;#34;&amp;#34;row&amp;#34;&amp;#34;&amp;gt;14&amp;lt;/th&amp;gt;
                &amp;lt;td&amp;gt;1611.9&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;th scope=&amp;#34;&amp;#34;row&amp;#34;&amp;#34;&amp;gt;15&amp;lt;/th&amp;gt;
                &amp;lt;td&amp;gt;164.5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;&amp;#34;
    },

    // リスト全体をループしないで、まずは１つだけでテストする
    txtTEST = lstテーブルテキストソース{0},

    // 3.2 caption 馬番号の取得（captionはテーブル内で1項目なのでループ無しで直接取る）
    TBcaption = Html.Table(txtTEST, {
        {&amp;#34;馬番&amp;#34;, &amp;#34;caption&amp;#34;, each _[TextContent]}
    }),
    txt馬番 = TBcaption{0}[馬番],

    // 3.3 詳細（tr）行で処理する
    // 「each _」で要素そのものを一旦受け取る、[RowSelector=&amp;#34;tr&amp;#34;]指定でまず要素を取得する
    行TR単位で要素THTDをテーブルにする = Html.Table(txtTEST, {
        {&amp;#34;相手馬番&amp;#34;, &amp;#34;th&amp;#34;, each _},
        {&amp;#34;オッズ値&amp;#34;, &amp;#34;td&amp;#34;, each _}
    }, [RowSelector=&amp;#34;tr&amp;#34;]),

    // 3.4 次に要素から「TextContent」を抽出する
    // 「Function」がわからなかったので、2段階処理にしました、違う書き方がわかる人は教えてください
    THとTDのテーブル = Table.TransformColumns(行TR単位で要素THTDをテーブルにする, {
        {&amp;#34;相手馬番&amp;#34;, each _[TextContent]},
        {&amp;#34;オッズ値&amp;#34;, each _[TextContent]}
    }),

    // 3.5 基準の馬番を追加 すると列追加なので、列の順番を最後に変更する
    馬番追加後のテーブル = Table.AddColumn(THとTDのテーブル, &amp;#34;馬番&amp;#34;, each txt馬番, type text),
    馬連オッズのテーブル = Table.ReorderColumns(馬番追加後のテーブル, {&amp;#34;馬番&amp;#34;, &amp;#34;相手馬番&amp;#34;, &amp;#34;オッズ値&amp;#34;})
in
    馬連オッズのテーブル&lt;/pre&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;04複数テーブルを変換して馬連オッズを作成する&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;let

    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    // セルからパラメーターを受け取る strPARA = Text.ToBinary(&amp;#34;cname=pw15oli00/6D&amp;#34;),固定をやめるため
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; Excel.CurrentWorkbook(){[Name=&amp;#34;レース種類別CNAME&amp;#34;]}[Content]{0}[Column1],
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],

    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    // 大きく、全体ソースをまず取得する
    HTML文字列 = Text.FromBinary(ソース, 932),

    // 4.1 馬連オッズのページから、TABLEタグのHTMLソースを抜き出す
    // 全体ソースから、開始タグで分割してリストを作成する
    // class名&amp;#34;basic narrow-xy umaren&amp;#34;のテーブルを抜き出したい
    lstTABLEとクラスで分割 = Text.Split(HTML文字列, &amp;#34;&amp;lt;table class=&amp;#34;&amp;#34;basic narrow-xy umaren&amp;#34;&amp;#34;&amp;gt;&amp;#34;),

    // 上半分・いらない部分をスキップする最初の要素を飛ばす
    lstTABALのデータ = List.Skip(lstTABLEとクラスで分割, 1),

    // 終了タグ&amp;lt;/table&amp;gt;で区切り、分割処理で消えた開始TABLEタグを付け直す
    lstテーブルソースのリストを作成 = List.Transform(lstTABALのデータ, each 
        &amp;#34;&amp;lt;table class=&amp;#34;&amp;#34;basic narrow-xy umaren&amp;#34;&amp;#34;&amp;gt;&amp;#34; &amp;amp; Text.BeforeDelimiter(_, &amp;#34;&amp;lt;/table&amp;gt;&amp;#34;) &amp;amp; &amp;#34;&amp;lt;/table&amp;gt;&amp;#34;
    ),

    // 4.2 上記HTMLソースの各要素に対して、ループで回し、複数テーブルを取得する
    各馬連オッズのテーブル = List.Transform(lstテーブルソースのリストを作成, (txtHTMLTABLEソース) =&amp;gt;
        let
            // 3.2 caption 馬番号の取得（captionはテーブル内で1項目なのでループ無しで直接取る）
            TBcaption = Html.Table(txtHTMLTABLEソース, {
                {&amp;#34;馬番&amp;#34;, &amp;#34;caption&amp;#34;, each _[TextContent]}
            }),
            txt馬番 = TBcaption{0}[馬番],

            // 3.3 詳細（tr）行で処理する
            // 「each _」で要素そのものを一旦受け取る、[RowSelector=&amp;#34;tr&amp;#34;]指定でまず要素を取得する
            行TR単位で要素THTDをテーブルにする = Html.Table(txtHTMLTABLEソース, {
                {&amp;#34;相手馬番&amp;#34;, &amp;#34;th&amp;#34;, each _},
                {&amp;#34;オッズ値&amp;#34;, &amp;#34;td&amp;#34;, each _}
            }, [RowSelector=&amp;#34;tr&amp;#34;]),

            // 3.4 次に要素から「TextContent」を抽出する
            // 「Function」がわからなかったので、2段階処理にしました、違う書き方がわかる人は教えてください
            THとTDのテーブル = Table.TransformColumns(行TR単位で要素THTDをテーブルにする, {
                {&amp;#34;相手馬番&amp;#34;, each _[TextContent]},
                {&amp;#34;オッズ値&amp;#34;, each _[TextContent]}
            }),

            // 3.5 基準の馬番を追加 すると列追加なので、列の順番を最後に変更する
            馬番追加後のテーブル = Table.AddColumn(THとTDのテーブル, &amp;#34;馬番&amp;#34;, each txt馬番, type text),
            馬連オッズのテーブル = Table.ReorderColumns(馬番追加後のテーブル, {&amp;#34;馬番&amp;#34;, &amp;#34;相手馬番&amp;#34;, &amp;#34;オッズ値&amp;#34;})
        in
            馬連オッズのテーブル
    ),

    // 4.3 テーブルを結合する
    馬連オッズTBをまとめる = Table.Combine(各馬連オッズのテーブル),

    // 4.4 型の変換
    馬連オッズ完成テーブル = Table.TransformColumnTypes(馬連オッズTBをまとめる, {
        {&amp;#34;馬番&amp;#34;, Int64.Type},
        {&amp;#34;相手馬番&amp;#34;, Int64.Type},
        {&amp;#34;オッズ値&amp;#34;, type number}
    })
in
    馬連オッズ完成テーブル&lt;/pre&gt;&lt;p&gt;5.蛇足とおまけの解説、なぜ？こんな面倒な取得を行ったか？&lt;/p&gt;&lt;p&gt;パワークエリーを使用しているんだから、&lt;br /&gt;
自分でコードを書かないで、&lt;br /&gt;
メニュー操作で、できるのでは？&lt;/p&gt;&lt;p&gt;と&lt;br /&gt;
私も思ってました。&lt;/p&gt;&lt;p&gt;私の勘違いかもしれないのですが、&lt;br /&gt;
POST送信で取り込んだWeb.Pageからの操作だと、&lt;br /&gt;
最後の馬連オッズが取得できなかったです&lt;/p&gt;&lt;p&gt;気になるので、再テストしてみます&lt;/p&gt;&lt;p&gt;馬連オッズを読み込んで、&lt;br /&gt;
テーブルを展開してみると、&lt;/p&gt;&lt;p&gt;こんな感じで、うまく行きませんでした。&lt;/p&gt;&lt;p&gt;メニュー操作や、展開の使い方がわるいのか？&lt;br /&gt;
もし、&lt;br /&gt;
何か知っている人が居たら、コメント欄で教えてください&lt;/p&gt;&lt;p&gt;また、&lt;br /&gt;
馬単は、&lt;br /&gt;
同じ操作の展開でうまく行きます(おいおい)&lt;/p&gt;&lt;p&gt;6.おわりの挨拶、&lt;/p&gt;&lt;p&gt;最後に謎を残しつつ、&lt;br /&gt;
今回も中途半端で失礼します。&lt;/p&gt;&lt;p&gt;詳細のテスト解説をまたやると思うので、よろしくお願いします。&lt;/p&gt;&lt;p&gt;※ファイルなど、まとめたら、ダウンロードできる形でお知らせします。&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;YouTubeページの紹介	&lt;br /&gt;
	&lt;br /&gt;
他のサンプルですが、設置方法の解説は、&lt;br /&gt;
【Excel】JRAオッズを自動取得！Power Queryでパワークエリーを0から設置する テスト環境作成の完全ガイド&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=LgeRCGZRxNQ&quot;&gt;https://www.youtube.com/watch?v=LgeRCGZRxNQ&lt;/a&gt;&lt;br /&gt;
↑を見てください。&lt;br /&gt;
	&lt;br /&gt;
関連動画:&lt;br /&gt;
過去の関連動画は、下記の再生リストから&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/playlist?list=PLBFC80A8658C305CE&quot;&gt;https://www.youtube.com/playlist?list=PLBFC80A8658C305CE&lt;/a&gt;&lt;br /&gt;
↑未解決や単体テストの動画が多いのですが、拾い読みてください。&lt;br /&gt;
	&lt;br /&gt;
JavaScriptのdoActionリンク処理 POST送信については&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ア.doActionでCNAME(パラメーター)を送り結果を取得する方法をパワークエリーで実現する&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://youtube.com/live/ntj8o1D_Jrk&quot;&gt;https://youtube.com/live/ntj8o1D_Jrk&lt;/a&gt;&lt;br /&gt;
↑POST送信のページをパワークエリーで取得する方法&lt;br /&gt;
	&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;イ.3連単など違うパターンでPOST送信されている場合&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://youtube.com/live/wBzgPrrjqUU&quot;&gt;https://youtube.com/live/wBzgPrrjqUU&lt;/a&gt;&lt;br /&gt;
↑パラメーターの数が３つになった時の処理例&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;2026/04/05 ライブ実行時のサムネイル&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260406/20260406115754.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;2026/04/05 ライブ実行時のサムネイル&lt;/figcaption&gt;&lt;/figure&gt;</content>        
        <category term="Excel" label="Excel" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/8011add59496b0c531b463e6075b7a5923624af7/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260406%2F20260406115754.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>いつもの早とちり 知恵袋の質問でVrewの7月サービス終了を見て焦るオジサン</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/04/01/000000"/>
        <id>hatenablog://entry/17179246901371418926</id>
        <published>2026-04-01T00:00:00+09:00</published>
        <updated>2026-04-01T00:00:03+09:00</updated>        <summary type="html">知恵袋の質問でVrewのサービス終了を見て焦るオジサン下記、質問を見て、 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12326744347 detail.chiebukuro.yahoo.co.jp びっくりしたぁ、Vrew モバイルサービス終了のお知らせ https://vrew-help.notion.site/Vrew-2c4c552a746e80d9a7d1dee1cd44f6b1 vrew-help.notion.siteあっ、 モバイルサービスの終了かぁ。PC版は、大丈夫なんだよなぁ・・・・ 補足情報 Goo…</summary>
        <content type="html">&lt;p&gt;知恵袋の質問でVrewのサービス終了を見て焦るオジサン&lt;/p&gt;&lt;p&gt;下記、質問を見て、&lt;br /&gt;
&lt;a href=&quot;https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12326744347&quot;&gt;https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12326744347&lt;/a&gt;&lt;br /&gt;
&lt;iframe src=&quot;https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdetail.chiebukuro.yahoo.co.jp%2Fqa%2Fquestion_detail%2Fq12326744347&quot; title=&quot;Vrewという編集アプリを愛用しているのですが7月にサ終してしまうと知り大至急代わりになるようなアプリを探しております。 - 私は動画... - Yahoo!知恵袋&quot; class=&quot;embed-card embed-webcard&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;&quot; loading=&quot;lazy&quot;&gt;&lt;/iframe&gt;&lt;cite class=&quot;hatena-citation&quot;&gt;&lt;a href=&quot;https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12326744347&quot;&gt;detail.chiebukuro.yahoo.co.jp&lt;/a&gt;&lt;/cite&gt;&lt;br /&gt;
びっくりしたぁ、&lt;/p&gt;&lt;p&gt;Vrew モバイルサービス終了のお知らせ&lt;br /&gt;
&lt;a href=&quot;https://vrew-help.notion.site/Vrew-2c4c552a746e80d9a7d1dee1cd44f6b1&quot;&gt;https://vrew-help.notion.site/Vrew-2c4c552a746e80d9a7d1dee1cd44f6b1&lt;/a&gt;&lt;br /&gt;
&lt;iframe src=&quot;https://hatenablog-parts.com/embed?url=https%3A%2F%2Fvrew-help.notion.site%2FVrew-2c4c552a746e80d9a7d1dee1cd44f6b1&quot; title=&quot;Vrew モバイルサービス終了のお知らせ | Notion&quot; class=&quot;embed-card embed-webcard&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;&quot; loading=&quot;lazy&quot;&gt;&lt;/iframe&gt;&lt;cite class=&quot;hatena-citation&quot;&gt;&lt;a href=&quot;https://vrew-help.notion.site/Vrew-2c4c552a746e80d9a7d1dee1cd44f6b1&quot;&gt;vrew-help.notion.site&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;p&gt;あっ、&lt;br /&gt;
モバイルサービスの終了かぁ。&lt;/p&gt;&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260331/20260331225353.png&quot; width=&quot;1200&quot; height=&quot;655&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;PC版は、大丈夫なんだよなぁ・・・・&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;補足情報&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Google Play: Vrew ブリュー&lt;br /&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.voyagerx.vrew.android&amp;hl=ja&quot;&gt;https://play.google.com/store/apps/details?id=com.voyagerx.vrew.android&amp;hl=ja&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260331/20260331224726.jpg&quot; width=&quot;833&quot; height=&quot;495&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;
</content>        
        <category term="雑談" label="雑談" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/f554500a3bd0da77a963ccb01064bce3c75d9579/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260331%2F20260331225353.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>Vrew3.7.X の情報が無い・・と騒いでいたら、Youtubeのページ教えてもらいました</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/03/26/140000"/>
        <id>hatenablog://entry/17179246901369299322</id>
        <published>2026-03-26T14:00:00+09:00</published>
        <updated>2026-03-26T14:00:00+09:00</updated>        <summary type="html">Vrew3.7.X の情報が無い・・と騒いでいたら、Youtubeのページ教えてもらいましたVrew3.7の情報、コメントで教えてもらいました https://www.youtube.com/@vrew/streams ↑ ココに載っているみたいですこのページの配信予定(4/1)を見ると Vrew3.8がリリースされるみたいですね 2026/03/26 スクショ撮影 4/1にVrew3.8.0の紹介ライブ？2026/03/26 スクショ撮影 4/1にVrew3.8.0の紹介ライブ？Ver3.8.0が4/1にリリース予定？ 機能紹介？コメントで、情報、ありがとう 日本語・自動翻訳でYouTube…</summary>
        <content type="html">&lt;p&gt;Vrew3.7.X の情報が無い・・と騒いでいたら、Youtubeのページ教えてもらいました&lt;/p&gt;&lt;p&gt;Vrew3.7の情報、コメントで教えてもらいました&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/@vrew/streams&quot;&gt;https://www.youtube.com/@vrew/streams&lt;/a&gt;&lt;br /&gt;
↑&lt;br /&gt;
ココに載っているみたいです&lt;/p&gt;&lt;p&gt;このページの配信予定(4/1)を見ると&lt;br /&gt;
&lt;strong&gt;Vrew3.8がリリース&lt;/strong&gt;されるみたいですね&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;2026/03/26 スクショ撮影 4/1にVrew3.8.0の紹介ライブ？&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260326/20260326123541.jpg&quot; width=&quot;907&quot; height=&quot;620&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;2026/03/26 スクショ撮影 4/1にVrew3.8.0の紹介ライブ？&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;2026/03/26 スクショ撮影 4/1にVrew3.8.0の紹介ライブ？&lt;/p&gt;&lt;p&gt;Ver3.8.0が4/1にリリース予定？&lt;br /&gt;
機能紹介？&lt;/p&gt;&lt;p&gt;&lt;strong&gt;コメントで、情報、ありがとう&lt;/strong&gt;&lt;br /&gt;
日本語・自動翻訳でYouTubeのページを見てみます。&lt;/p&gt;
</content>        
        <category term="雑談" label="雑談" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/709378f03184f01ec8d358cb78218e20cf706792/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260326%2F20260326123541.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>2026/03/25 「みなさんに良いことがありますように」</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/03/25/200000"/>
        <id>hatenablog://entry/17179246901369049932</id>
        <published>2026-03-25T20:00:00+09:00</published>
        <updated>2026-03-25T20:00:03+09:00</updated>        <summary type="html">「みなさんに良いことがありますように」 「そして、その一部でもまわりまわって私に来るといいなぁ」 いつものAIで生成した画像を添付する下記、GeminiからNanoBanana2へ渡したプロンプト 1:1 正方形の比率でイラストをデザインしてください 左上に大きくラベル・リボンで 「2026年03月25日」 と日付をラベル・リボンで左上にデザインしてください 太った眼鏡をかけた男性が願っている様子・つぶやいている様子 「みなさんに良いことがありますように」 「そして、その一部でもまわりまわって私に来るといいなぁ」 上記2つのつぶやきを日本語で視認しやすく、大きくデザインしてください 上記イラス…</summary>
        <content type="html">&lt;p&gt;「みなさんに良いことがありますように」&lt;br /&gt;
「そして、その一部でもまわりまわって私に来るといいなぁ」&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;いつものAIで生成した画像を添付する&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260325/20260325181712.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;いつものAIで生成した画像を添付する&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;下記、GeminiからNanoBanana2へ渡したプロンプト&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;1:1 正方形の比率でイラストをデザインしてください

左上に大きくラベル・リボンで
「2026年03月25日」 と日付をラベル・リボンで左上にデザインしてください

太った眼鏡をかけた男性が願っている様子・つぶやいている様子

「みなさんに良いことがありますように」
「そして、その一部でもまわりまわって私に来るといいなぁ」
上記2つのつぶやきを日本語で視認しやすく、大きくデザインしてください

上記イラストをデザインして描画してください&lt;/pre&gt;&lt;p&gt;画像生成の参考となれば幸いです。&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/631abb63724719dabe7c83dac27d4c6ad2acda7c/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260325%2F20260325181712.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>3D isometric icon AI画像生成プロンプト例　</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/03/18/103543"/>
        <id>hatenablog://entry/17179246901366129293</id>
        <published>2026-03-18T10:35:43+09:00</published>
        <updated>2026-03-18T10:35:43+09:00</updated>        <summary type="html">3D isometric iconプロンプト例: 比率1:1の正方形 中年の男性がパソコンを操作している姿を3D isometric icon, soft matte plastic texture, pastel color palette, rounded edges, C4D style, Octane Render.で、デザインして描いて と指示をしてみたNanoBanana2: GeminiからNanoBanana2を使用した例 NanoBananaPRO: GeminiからNanoBanana PROを使用した例画像作りの参考となれば幸いです</summary>
        <content type="html">&lt;p&gt;3D isometric icon&lt;/p&gt;&lt;p&gt;プロンプト例: &lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;比率1:1の正方形&lt;br /&gt;
中年の男性がパソコンを操作している姿を&lt;/p&gt;&lt;p&gt;3D isometric icon, soft matte plastic texture, pastel color palette, rounded edges, C4D style, Octane Render.&lt;/p&gt;&lt;p&gt;で、デザインして描いて&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;と指示をしてみた&lt;/p&gt;&lt;p&gt;NanoBanana2:&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;GeminiからNanoBanana2を使用した例&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260318/20260318103241.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;GeminiからNanoBanana2を使用した例&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;br /&gt;
NanoBananaPRO:&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;GeminiからNanoBanana PROを使用した例&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260318/20260318103339.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;GeminiからNanoBanana PROを使用した例&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;画像作りの参考となれば幸いです&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/e786f9625370e727a178481b21ca175bd6d0c781/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260318%2F20260318103241.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>パワポの「文字を直すとアニメ順が戻る」テスト260315</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/03/15/100000"/>
        <id>hatenablog://entry/17179246901365021803</id>
        <published>2026-03-15T10:00:00+09:00</published>
        <updated>2026-03-15T10:00:01+09:00</updated>        <summary type="html">【結論：パワポの「文字を直すとアニメ順が戻る」問題は、手動設定で回避できます！】せっかく順番を入れ替えたのに、1文字直しただけでリセットされる…そんな経験ありませんか？ この動画では、プレースホルダー特有の「嘘のような本当の仕様」の正体と、そのイライラを確実に防ぐ回避策を実演しています。お急ぎの方は、以下のハイライトからチェックしてください！1. 【魔法が解ける瞬間】一文字の修正でアニメ順が全リセットされる「罠」 タイムライン： 02:35 https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=155 内容： 設定した順番が崩れる瞬間を再現しています。2.…</summary>
        <content type="html">&lt;p&gt;【結論：パワポの「文字を直すとアニメ順が戻る」問題は、手動設定で回避できます！】&lt;/p&gt;&lt;p&gt;せっかく順番を入れ替えたのに、1文字直しただけでリセットされる…そんな経験ありませんか？&lt;br /&gt;
この動画では、プレースホルダー特有の「嘘のような本当の仕様」の正体と、そのイライラを確実に防ぐ回避策を実演しています。&lt;/p&gt;&lt;p&gt;お急ぎの方は、以下のハイライトからチェックしてください！&lt;/p&gt;&lt;p&gt;1. 【魔法が解ける瞬間】一文字の修正でアニメ順が全リセットされる「罠」&lt;br /&gt;
タイムライン： 02:35 &lt;a href=&quot;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=155&quot;&gt;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=155&lt;/a&gt;&lt;br /&gt;
内容： 設定した順番が崩れる瞬間を再現しています。&lt;/p&gt;&lt;p&gt;2. 【解決の鍵】「段落別オプション」を使わない確実な回避手順&lt;br /&gt;
タイムライン： 10:20 &lt;a href=&quot;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=620&quot;&gt;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=620&lt;/a&gt;&lt;br /&gt;
内容： プレースホルダーの一括設定に頼らず、アニメーションを維持する方法です。&lt;/p&gt;&lt;p&gt;3. 【深掘り解説】プレースホルダーが持つ「謎の仕様」の正体&lt;br /&gt;
タイムライン： 04:28 &lt;a href=&quot;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=268&quot;&gt;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=268&lt;/a&gt;&lt;br /&gt;
内容： なぜ文字を追加すると順番が戻ってしまうのか、その構造的理由を語ります。&lt;/p&gt;&lt;p&gt;4. 【実演まとめ】回避策を使った実際の手順（テスト003）&lt;br /&gt;
タイムライン： 11:22 &lt;a href=&quot;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=682&quot;&gt;https://www.youtube.com/watch?v=S7iOGRSDhVw&amp;t=682&lt;/a&gt;&lt;br /&gt;
内容： 1-1から順番に、確実に設定していく実演デモです。&lt;/p&gt;&lt;p&gt;5. 【正直にお伝えします：注意点】&lt;br /&gt;
・今回の方法は、プレースホルダー内の自動機能を一部放棄するため、手作業の工程が増えます。&lt;br /&gt;
・完全に「自動」で解決する魔法のボタンはありませんが、この「仕様」を知っているだけでプレゼン前の事故を100%防げます！&lt;/p&gt;&lt;p&gt;#PowerPoint #パワポ #アニメーション #プレースホルダー #仕事効率化 #検証&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIが図解しました&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260315/20260315085404.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIが図解しました&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;PowerPointでアニメーションの順番を入れ替えても、文字を修正すると元に戻ってしまう…そんな「嘘のような本当の仕様」に悩んでいませんか？回避策を実演解説します。&lt;/p&gt;&lt;p&gt;要約: パワーポイントのプレースホルダーで段落別にフェードを設定し、順序を入れ替えた後に「文字の追加や修正」を行うと、なぜかアニメーション順が初期化される現象を検証しました。&lt;/p&gt;&lt;p&gt;目次:&lt;br /&gt;
[00:00] はじめに：パワポの「嘘のような本当」の困った仕様 掲示板の質問紹介：文字を直すとアニメ順が戻る？&lt;br /&gt;
[01:12] 検証開始：プレースホルダーに「段落別フェード」を設定&lt;br /&gt;
[01:42] 現象再現：アニメ順を入れ替えた後に「文字修正」をしてみる&lt;br /&gt;
[02:35] 【衝撃】1文字直しただけで順番がデフォルトにリセット！&lt;br /&gt;
[04:28] 原因の深掘り：プレースホルダーの「効果のオプション」の罠&lt;br /&gt;
[07:33] 追加検証：文字の「削除」なら順番は維持される？&lt;br /&gt;
[09:25] なぜExcelのグラフと同じ現象が起きるのか？&lt;br /&gt;
[10:20] 解決策の提示：自動の「段落別設定」を使わない回避術&lt;br /&gt;
[11:22] まとめ：個別にアニメーションを設定する手順（実演）&lt;br /&gt;
[12:15] 最後に：この「仕様」を知って無駄な修正を減らそう&lt;/p&gt;&lt;p&gt;この動画を見てほしい人：&lt;br /&gt;
・パワポで複雑なアニメーション順序を設定したい人。&lt;br /&gt;
・「文字を直すたびにアニメを設定し直している」という非効率な作業を卒業したい人。&lt;/p&gt;&lt;p&gt;#PowerPoint #パワポ #アニメーション #仕事効率化 #検証&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;パワーポイント プレースホルダーにフェードのアニメをを段落別にして、掲示板の質問にチャレンジする&lt;/p&gt;&lt;p&gt;嘘のような、本当のお話？&lt;/p&gt;&lt;p&gt;質問内容:&lt;br /&gt;
＞&lt;br /&gt;
PowerPoint（パワポ）のアニメーションの順番についてですが、&lt;br /&gt;
最初に上から順に、下記のように文字を入力しています。&lt;/p&gt;&lt;p&gt;1-1&lt;br /&gt;
1-2&lt;br /&gt;
2-1&lt;br /&gt;
2-2&lt;br /&gt;
3-1&lt;br /&gt;
3-3&lt;br /&gt;
アニメーションを設定して、再生の順番を下記のように入れ替えました。&lt;/p&gt;&lt;p&gt;1-1&lt;br /&gt;
2-1&lt;br /&gt;
3-1&lt;br /&gt;
1-2&lt;br /&gt;
2-2&lt;br /&gt;
3-2&lt;/p&gt;&lt;p&gt;この後、入力後の文字の追加や修正をすると、アニメーションの順番が入れ替え前に戻ってしまいます。（文字の削除の場合は、順番は入れ替えたままです）&lt;/p&gt;&lt;p&gt;これはバグ？またはパワポの仕様なのでしょうか？&lt;br /&gt;
アニメーションを設定して、順番を入れ替えた後に文字の修正は出来ないのでしょうか？&lt;br /&gt;
＜&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;おっさんの回答、&lt;/p&gt;&lt;p&gt;その昔、Excelのグラフの系列別で同じようなこと(グラフの数値を変えたら系列の順番が1からにもどった)&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=84ssQjevr84&amp;t=411&quot;&gt;https://www.youtube.com/watch?v=84ssQjevr84&amp;t=411&lt;/a&gt;&lt;br /&gt;
が&lt;br /&gt;
あったので、&lt;/p&gt;&lt;p&gt;気になったので、実際にやってみた&lt;/p&gt;&lt;p&gt;1-1 1の質問 アニメの順番を奇数を先にフェードする&lt;br /&gt;
1-2 1の回答 偶数は奇数が終わってから&lt;br /&gt;
2-1 2こんな感じ&lt;br /&gt;
2-2 2こんな感じ&lt;br /&gt;
3-1 3奇数終わり、次は1-2を表示する &lt;br /&gt;
3-2 3おわり&lt;/p&gt;&lt;p&gt;プレースホルダーにセット、&lt;br /&gt;
段落にする&lt;/p&gt;&lt;p&gt;アニメーションをフェードの段落別にする&lt;br /&gt;
↑&lt;br /&gt;
段落別の順番でグループとして、作成される&lt;/p&gt;&lt;p&gt;※とりあえず、そのままテスト&lt;/p&gt;&lt;p&gt;▼を押して、段落内の順番を変更する&lt;br /&gt;
順番を変更する&lt;/p&gt;&lt;p&gt;※テストする&lt;/p&gt;&lt;p&gt;＞この後、入力後の文字の追加や修正をすると、アニメーションの順番が入れ替え前に戻ってしまいます&lt;/p&gt;&lt;p&gt;文字を修正すると&lt;/p&gt;&lt;p&gt;あっ・・・こんな感じかなぁ？&lt;/p&gt;
</content>        
        <category term="備忘録" label="備忘録" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/d62601e36ae153e44e81e55fa1fcafe34a6bbad5/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260315%2F20260315085404.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>ポリシー違反で生成不可 &quot;a young Japanese female&quot;が原因？それとも？ Flow(Veo3.1)で動画生成テスト 2026-03-06</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/03/05/141145"/>
        <id>hatenablog://entry/17179246901361128241</id>
        <published>2026-03-05T14:11:45+09:00</published>
        <updated>2026-03-05T14:11:45+09:00</updated>        <summary type="html">ポリシー違反で生成不可 &quot;a young Japanese female&quot;が原因？それとも？ Flow(Veo3.1)で動画生成テスト 2026-03-06私が最近AIに話しかけているのが、デバッグとラーメン動画の作り方だったので、 面白いショート動画のアイデアをAIに聞くと、下記のプロンプトを紹介してくれた「深夜のデバッグとラーメン」のドラマチック動画 プロンプト: Cinematic 360-degree orbital shot circling a middle-aged Japanese man with glasses and a stocky build, typing inte…</summary>
        <content type="html">&lt;p&gt;ポリシー違反で生成不可 &quot;a young Japanese female&quot;が原因？それとも？ Flow(Veo3.1)で動画生成テスト 2026-03-06&lt;/p&gt;&lt;p&gt;私が最近AIに話しかけているのが、デバッグとラーメン動画の作り方だったので、&lt;br /&gt;
面白いショート動画のアイデアをAIに聞くと、下記のプロンプトを紹介してくれた&lt;/p&gt;&lt;p&gt;「深夜のデバッグとラーメン」のドラマチック動画&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;プロンプト: Cinematic 360-degree orbital shot circling a middle-aged Japanese man with glasses and a stocky build, typing intensely on a laptop. Suddenly he shouts &#39;やった！&#39; (Yatta!) in Japanese as a bug is fixed. Camera slowly dollies out to reveal a pile of empty ramen bowls under warm neon lighting. Slow motion, high-fidelity audio.&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;作成結果:&lt;br /&gt;
&lt;a href=&quot;https://youtu.be/pZGaz_q4tis?si=AUJCtlH0g9o4OkJr&quot;&gt;https://youtu.be/pZGaz_q4tis?si=AUJCtlH0g9o4OkJr&lt;/a&gt;&lt;br /&gt;
↑こんな感じで、作成してます。&lt;/p&gt;&lt;p&gt;単純に日本語に機械翻訳:&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;がっしりとした体格で眼鏡をかけた中年の日本人男性がノートパソコンで熱心にタイピングする様子を、映画のような360度周回ショットで捉えた。突然、バグが修正されたと感じた彼は日本語で「やった！」と叫ぶ。カメラはゆっくりとドリーアウトし、温かみのあるネオンライトの下に山積みになった空のラーメン丼を映し出す。スローモーション、高音質オーディオ。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;おっさんのラーメン姿だと、サンプルで即スワイプ・離脱されそうなので、&lt;br /&gt;
「中年の日本人男性」を「若い女性社員」に変更したプロンプト・指示文を出力してとお願いする&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;Prompt:&lt;br /&gt;
Cinematic 360-degree orbital shot circling a young Japanese female employee with glasses and a slender build, typing intensely on a laptop. Suddenly she shouts &#39;やった！&#39; (Yatta!) in Japanese as a bug is fixed. Camera slowly dollies out to reveal a pile of empty ramen bowls under warm neon lighting. Slow motion, high-fidelity audio.&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;上記プロンプトでサンプルを作成してみます。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;Flow内で指示文を渡すとポリシー違反の判定を受ける？&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260305/20260305103521.jpg&quot; width=&quot;161&quot; height=&quot;280&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;Flow内で指示文を渡すとポリシー違反の判定を受ける？&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;結果は、ポリシー違反で生成不可&lt;br /&gt;
a young Japanese female&lt;br /&gt;
がNG&lt;br /&gt;
なのか？生成できませんでした。&lt;br /&gt;
間違って生成されないように、少しでも、通さない感じなのかなぁ？&lt;br /&gt;
360度周回ショット Cinematic 360-degree orbital shot&lt;br /&gt;
で、予期しない予想外の生成を狙っていると？勘違いされたのかなぁ・・・？&lt;/p&gt;&lt;p&gt;ニューヨークの女性プログラマーだとOKでした・・う～ん、なんだろう？？？&lt;/p&gt;&lt;p&gt;おまけの指示プロンプト:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;AIが不可と伝える動画&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;AIの人型ロボット警備員が両手をクロスさせ×を表現して、不可能を知らせる姿、動作&lt;br /&gt;
両手でNGを表現します。&lt;br /&gt;
「Cannot be generated」とまず英語で、次に日本語で「せいせい ふかです」と話す&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;The AI ​​humanoid robot security guard crosses his arms to indicate an impossible situation.&lt;br /&gt;
He uses both hands to indicate &quot;NG.&quot;&lt;br /&gt;
First, he says &quot;Cannot be generated&quot; in English, then in Japanese, &quot;Seisei fukadesu&quot; (I am a saint).&lt;/p&gt;

    &lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;イラスト&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;9:16の縦でリアルなアニメ風画風でイラスト画像を作成してください&lt;/p&gt;&lt;p&gt;上下2分割のイラスト&lt;br /&gt;
上：太った眼鏡をかけた中年男性がノートパソコンを操作しています&lt;br /&gt;
下：若い女性プログラマーがノートパソコンを操作しています&lt;/p&gt;&lt;p&gt;上から下に変化を指示する矢印↓を描き、矢印の横に「中年男性を若い女性へ」と指示の日本語を描く&lt;/p&gt;&lt;p&gt;上記条件でイラストをデザインして、描画してください&lt;/p&gt;&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260305/20260305140916.png&quot; width=&quot;670&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/9da37194844886ea03fddec07a46a352bd697159/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260305%2F20260305103521.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>AI動画生成のテスト 360-degree Orbital shot(360度カメラが旋回)を試したけど失敗かなぁ？ 260304</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/03/04/120917"/>
        <id>hatenablog://entry/17179246901360781968</id>
        <published>2026-03-04T12:09:17+09:00</published>
        <updated>2026-03-04T12:09:17+09:00</updated>        <summary type="html">360-degree Orbital shot(360度カメラが旋回) Flow(Veo3.1)でテスト作成 260304 https://youtube.com/shorts/ehHH6BNVUkk youtube.com んっ？よくみたら、 カメラが回る・・の指定が効果が薄い？ 案1も360は回ってなく、途中でターン？戻っているような？ カメラアングルの指定、 なかなか、奥が深いですね・・・Q:AIに出した質問プロンプト手法: 「360-degree Orbital shot」 を使い、Veo3へ出す指示文を英語で作成してください案1``` 「JRA 大穴的中」を映画風に 手法: 「360…</summary>
        <content type="html">&lt;p&gt;360-degree Orbital shot(360度カメラが旋回) Flow(Veo3.1)でテスト作成 260304&lt;br /&gt;
&lt;a href=&quot;https://youtube.com/shorts/ehHH6BNVUkk&quot;&gt;https://youtube.com/shorts/ehHH6BNVUkk&lt;/a&gt; &lt;br /&gt;
&lt;iframe src=&quot;https://hatenablog-parts.com/embed?url=https%3A%2F%2Fyoutube.com%2Fshorts%2FehHH6BNVUkk&quot; title=&quot;360-degree Orbital shot(360度カメラが旋回) Flow(Veo3.1)でテスト作成 260304 プロンプトは概要欄を見てください&quot; class=&quot;embed-card embed-webcard&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;&quot; loading=&quot;lazy&quot;&gt;&lt;/iframe&gt;&lt;cite class=&quot;hatena-citation&quot;&gt;&lt;a href=&quot;https://youtube.com/shorts/ehHH6BNVUkk&quot;&gt;youtube.com&lt;/a&gt;&lt;/cite&gt;&lt;br /&gt;
んっ？よくみたら、&lt;br /&gt;
カメラが回る・・の指定が効果が薄い？&lt;br /&gt;
案1も360は回ってなく、途中でターン？戻っているような？&lt;br /&gt;
カメラアングルの指定、&lt;br /&gt;
なかなか、奥が深いですね・・・&lt;/p&gt;&lt;p&gt;Q:AIに出した質問プロンプト&lt;/p&gt;&lt;p&gt;手法: 「360-degree Orbital shot」&lt;br /&gt;
を使い、Veo3へ出す指示文を英語で作成してください&lt;/p&gt;&lt;p&gt;案1&lt;/p&gt;&lt;p&gt;```&lt;br /&gt;
「JRA 大穴的中」を映画風に&lt;br /&gt;
手法: 「360-degree Orbital shot」&lt;br /&gt;
的中馬券を握りしめて歓喜する中年男性の周りを、カメラがぐるぐると旋回。背景の競馬場は夕日に染まり、スローモーションで周囲の観客がぼやけていく演出。&lt;br /&gt;
```&lt;/p&gt;&lt;p&gt;案2&lt;br /&gt;
上記、中年男性を若い男女のグループに変更したプロンプトを英語で出力してください&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;AIが作成した回答プロンプト&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;案1：的中馬券に歓喜する中年男性&lt;br /&gt;
このプロンプトでは、男性の表情のディテールと、夕日のシネマティックなライティングを強調しています。&lt;/p&gt;&lt;p&gt;English Prompt:&lt;/p&gt;&lt;p&gt;Cinematic 360-degree orbital shot circling a middle-aged Japanese man with glasses, overwhelmed with joy and shouting in celebration while clutching a winning horse racing ticket. The setting is a grand racetrack bathed in the radiant golden glow of a sunset. Slow motion, shallow depth of field with artistic bokeh of blurred spectators in the background, highly detailed textures, 4k, professional cinematography.&lt;/p&gt;&lt;p&gt;案2：歓喜する若い男女のグループ&lt;br /&gt;
グループに変更する場合、一人一人の躍動感と、グループ全体の「熱狂」が伝わるような単語を盛り込んでいます。&lt;/p&gt;&lt;p&gt;English Prompt:&lt;/p&gt;&lt;p&gt;Cinematic 360-degree orbital shot circling a diverse group of young men and women cheering, hugging, and jumping with pure excitement while holding winning horse racing tickets. The scene is set at a vibrant racetrack during the peak of a golden hour sunset. Slow motion, high-energy atmosphere, artistic background blur of the cheering crowd, lens flare, professional film aesthetic, 4k.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;プロンプトの中身を変えて、&lt;br /&gt;
手法: 「360-degree Orbital shot」&lt;br /&gt;
で、&lt;br /&gt;
いろいろと遊んでみてください&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;試してみて、日本語じゃなかったので、追加してみた&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;追加質問&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;追加修正で、&lt;br /&gt;
案1の修正依頼、プロンプト、今英語で話している会話を日本語で話すように、生成プロンプトに入れてください&lt;br /&gt;
案2の修正依頼、プロンプトに日本人が入っていなかったので、日本人のグループにして発声を日本語にしてください&lt;/p&gt;&lt;p&gt;それぞれ微調整・修正後、案3,案4として、英語のVeo3向けプロンプトを英語のテキストで出力してください&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AIの回答&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Veo3用プロンプト修正版 (日本語音声・日本人グループ指定)&lt;/p&gt;&lt;p&gt;案3：的中馬券に歓喜する中年男性（日本語音声版）&lt;br /&gt;
案1をベースに、日本語での叫び声を指定しました。&lt;/p&gt;&lt;p&gt;English Prompt:&lt;/p&gt;&lt;p&gt;Cinematic 360-degree orbital shot circling a middle-aged Japanese man with glasses and a stocky build, overwhelmed with joy and shouting enthusiastically in Japanese while clutching a winning horse racing ticket. He is audibly shouting &#39;やったー！当たった！&#39; (Yatta! Atatta!). The setting is a grand racetrack bathed in the radiant golden glow of a sunset. Slow motion, shallow depth of field with artistic bokeh of blurred spectators in the background, highly detailed textures, 4k, professional cinematography with high-fidelity Japanese speech audio.&lt;/p&gt;&lt;p&gt;案4：歓喜する日本人の若者グループ（日本語音声版）&lt;br /&gt;
案2をベースに、メンバーをすべて日本人に指定し、日本語で喜び合う声を指定しました。&lt;/p&gt;&lt;p&gt;English Prompt:&lt;/p&gt;&lt;p&gt;Cinematic 360-degree orbital shot circling an excited group of young Japanese men and women cheering, hugging, and jumping with pure joy while holding winning horse racing tickets. They are shouting and celebrating in Japanese, with audible phrases like &#39;信じられない！やった！&#39; (Shinji rarenai! Yatta!). The scene is set at a vibrant Japanese racetrack during the peak of a golden hour sunset. Slow motion, high-energy atmosphere, artistic background blur of the cheering crowd, lens flare, professional film aesthetic, 4k, featuring clear Japanese vocalizations of excitement.&lt;/p&gt;&lt;p&gt;修正のポイント&lt;br /&gt;
Language Trigger: shouting enthusiastically in Japanese や audible phrases like &#39;やったー！&#39; と記述することで、AIに日本語の音声を生成するよう促しています。&lt;/p&gt;&lt;p&gt;Ethnicity: 案4では diverse group を group of young Japanese men and women に変更し、日本人のグループとして生成されるように固定しました。&lt;/p&gt;&lt;p&gt;このプロンプトで生成すると、映像の迫力に加えて「声」による臨場感がさらに増すはずです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;テスト結果 案3は生成失敗でした&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;生成失敗でした、&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;日本語指定がNGでした&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260304/20260304114328.jpg&quot; width=&quot;268&quot; height=&quot;417&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;日本語指定がNGでした&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;細かい指定は、まだ無理なのかなぁ？&lt;br /&gt;
それとも、gemini任せで修正は、よくあるできないのにAIが答えてしまうパターンなのか・・・&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;テスト結果 案4は生成成功でした&lt;/li&gt;
&lt;/ul&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;こちらは、日本語化OK?&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260304/20260304114700.jpg&quot; width=&quot;779&quot; height=&quot;387&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;こちらは、日本語化OK?&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;同じ様に作成した、案4は成功でした&lt;/p&gt;&lt;p&gt;んっ？よくみたら、&lt;br /&gt;
カメラが回る・・の指定が効果が薄い？&lt;br /&gt;
案1も360は回ってなく、途中でターン？戻っているような？&lt;br /&gt;
カメラアングルの指定、&lt;br /&gt;
なかなか、奥が深いですね・・・&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/f85c22254ee91af526398d7ee97d2b008c3ec427/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260304%2F20260304114328.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>謎の新機能「Goal scheduled actions」とは？Gemini 3の新機能？を触ってみた テスト参加者になったので舞い上がってブログに載せてみた</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/02/28/113000"/>
        <id>hatenablog://entry/17179246901359351110</id>
        <published>2026-02-28T11:30:00+09:00</published>
        <updated>2026-03-02T10:52:16+09:00</updated>        <summary type="html">Gemini 3の新機能「Goal scheduled actions」を調査！AIエージェントが自動でリサーチする時代の到来か？ 26/02/28AIでGeminiの会話からブログを作りました。どうも、三流プログラマーの中年おじさんことKen3です。(←と、AIが作成した。私はAIにこんな感じで認識されているのか・・・)今回は、進化が止まらないGoogleのAI「Gemini 3」のメニュー解説と、中でも怪しくも魅力的な新機能&#39;&#39;「Goal scheduled actions」&#39;&#39;について、自分の備忘録としてまとめました。「最新のAIを使ってみたいけど、英語ばかりでよくわからない…」「毎日決…</summary>
        <content type="html">
&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;Gemini-3の新機能Goal-scheduled-actionsを調査AIエージェントが自動でリサーチする時代の到来か&quot;&gt;Gemini 3の新機能「Goal scheduled actions」を調査！AIエージェントが自動でリサーチする時代の到来か？&lt;/h3&gt;
    &lt;p&gt;26/02/28AIでGeminiの会話からブログを作りました。&lt;/p&gt;&lt;p&gt;どうも、三流プログラマーの中年おじさんことKen3です。(←と、AIが作成した。私はAIにこんな感じで認識されているのか・・・)&lt;/p&gt;&lt;p&gt;今回は、進化が止まらないGoogleのAI「Gemini 3」のメニュー解説と、中でも怪しくも魅力的な新機能&#39;&#39;「Goal scheduled actions」&#39;&#39;について、自分の備忘録としてまとめました。&lt;/p&gt;&lt;p&gt;「最新のAIを使ってみたいけど、英語ばかりでよくわからない…」「毎日決まった時間にAIに情報を集めてほしい」といった悩みを持つ方の参考になれば幸いです。&lt;/p&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;Gemini-3-の主要モード解説&quot;&gt;Gemini 3 の主要モード解説&lt;/h4&gt;
    &lt;p&gt;まずは、画面に出てきた英語メニューを整理しました。これ、初見だと「どれを使えばいいの？」ってなりますよね。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;朝、新メニューにビックリしてgeminiに聞いてみた&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260228/20260228102250.jpg&quot; width=&quot;380&quot; height=&quot;346&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;朝、新メニューにビックリしてgeminiに聞いてみた&lt;/figcaption&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&#39;&#39;高速モード (Fast Mode)&#39;&#39;：とにかくレスポンス重視。サクッと答えが欲しい時用。&lt;/li&gt;
&lt;li&gt;&#39;&#39;思考モード (Thinking Mode)&#39;&#39;：複雑なプログラミングや、論理的な推論が必要な時に。じっくり考えてくれます。&lt;/li&gt;
&lt;li&gt;&#39;&#39;Pro (3.1 Pro)&#39;&#39;：高度な数学やコード生成に特化した、まさにプロ仕様のモデル。&lt;/li&gt;
&lt;li&gt;&#39;&#39;Goal scheduled actions&#39;&#39;：今回の注目株。目標を立てて定期実行させるテストモード。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;謎の新機能Goal-scheduled-actionsとは&quot;&gt;謎の新機能「Goal scheduled actions」とは？&lt;/h4&gt;
    &lt;p&gt;現在、一部のユーザー向けにテストされている「A/Bテスト」段階の機能のようです。一言で言うと、&#39;&#39;「AIエージェント」&#39;&#39;的な動きをしてくれる機能ですね。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;機能の性質：AIが自律的にスケジュールを管理し、特定の目標（価格チェック、定期報告、特定トピックのリサーチなど）を達成しようとする仕組み。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;国内での詳細な情報はまだ少ないですが、AIが「言われたことに答える」段階から、&#39;&#39;「指示されたスケジュールで勝手に動いてくれる」&#39;&#39;段階へ進化していることを感じさせます。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;実践画像動画生成AIのトレンドを毎日10時に配信設定&quot;&gt;実践：画像・動画生成AIのトレンドを毎日10時に配信設定&lt;/h4&gt;
    &lt;p&gt;この「Goal scheduled actions」を使って、私が今一番興味のある「画像・動画生成AIのプロンプト」を定期リサーチするよう設定してみました。&lt;/p&gt;&lt;p&gt;おっさんが、実際に投げた質問・プロンプト&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;私は、画像生成AI,動画生成について、興味があります&lt;br /&gt;
画風の例題プロンプトや動画のカメラアングル指定など、&lt;br /&gt;
面白そうなアイデア、プロンプトの指定方法があったら、&lt;br /&gt;
探して、定期的に教えてもらえると助かります&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;設定結果のスクショ 26/02/28&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260228/20260228102607.jpg&quot; width=&quot;997&quot; height=&quot;505&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;設定結果のスクショ 26/02/28&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;自動実行の予約内容&quot;&gt;自動実行の予約内容&lt;/h5&gt;
    &lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;【目標】最新の画像・動画生成AIのトレンドやテクニックを報告せよ
【実行時間】毎日 午前10:00
【アウトプット】面白い画風プロンプトや、カメラワークの指定方法&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;今後配信される予定のアイデア例&quot;&gt;今後配信される予定のアイデア例&lt;/h5&gt;
    &lt;p&gt;リサーチ対象として、以下のような面白いキーワードを挙げてみました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&#39;&#39;画像生成系&#39;&#39;：粘土細工風（Claymation）、アイソメトリック・ジオラマ（箱庭風）など&lt;/li&gt;
&lt;li&gt;&#39;&#39;動画生成系&#39;&#39;：ドローンFPVショット、パララックス効果（軌道撮影）など&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;これらを毎日AIが勝手に調べて、10時に届けてくれる。三流プログラマーとしては、寝て起きたらネタが届いているという、夢のような環境が作れそうです。&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;今後の課題とAIからのアドバイス&quot;&gt;今後の課題とAIからのアドバイス&lt;/h4&gt;
    &lt;p&gt;現時点ではテストモードということもあり、以下の点に注意が必要です。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;日本語での公式発表が少ないため、挙動が不安定な可能性がある。&lt;/li&gt;
&lt;li&gt;プロンプトの精度によって、リサーチ結果の質が大きく左右される。&lt;/li&gt;
&lt;li&gt;「AIが自律して動く」際のトークン消費や制限についても注視が必要。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&#39;&#39;【AIからのアドバイス】&#39;&#39;&lt;br /&gt;
まずは簡単なリサーチから任せてみて、AIがどのような検索クエリを発行しているかを確認するのが、使いこなしのコツかもしれません。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.google.com/search?q=Gemini+3+Goal+scheduled+actions&quot;&gt;Google&amp;#x691C;&amp;#x7D22;: Gemini 3 Goal scheduled actions&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.google.com/search?q=AI+エージェント+定期実行&quot;&gt;Google&amp;#x691C;&amp;#x7D22;: AI &amp;#x30A8;&amp;#x30FC;&amp;#x30B8;&amp;#x30A7;&amp;#x30F3;&amp;#x30C8; &amp;#x5B9A;&amp;#x671F;&amp;#x5B9F;&amp;#x884C;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;26/03/02 結果がgeminiから届きました&lt;br /&gt;
繰り返しの定期リサーチ的な物なのかなぁ？&lt;br /&gt;
①届くと、●が付いて会話の一番上に表示されます&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;●が付いて会話の一番上に表示されます&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260302/20260302104641.jpg&quot; width=&quot;896&quot; height=&quot;592&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;●が付いて会話の一番上に表示されます&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;②依頼した中身を報告してくれます&lt;br /&gt;
結果・中身の会話※一部です、ひと言じゃなくて意外と長かったです&lt;br /&gt;
過去の私との会話を理解しているので、人によって結果が違いそうなので、面白いですね。&lt;br /&gt;
※これを個人秘書的に使うのかなぁ？？？&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;結果・中身の会話※一部です、ひと言じゃなくて意外と長かったです&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260302/20260302104710.jpg&quot; width=&quot;961&quot; height=&quot;752&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;結果・中身の会話※一部です、ひと言じゃなくて意外と長かったです&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;③おまけ:画像&lt;br /&gt;
面白いよ・やってみて？と提案されたプロンプト:&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;「JRA 勝利の瞬間」画像案:&lt;br /&gt;
Hyper-realistic close-up, a middle-aged man with glasses screaming with joy, holding a betting ticket, background is a blurred racetrack, golden hour sunlight, raw emotion.&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;すすめられたプロンプトをそのまま使った結果&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260302/20260302104821.png&quot; width=&quot;1200&quot; height=&quot;655&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;すすめられたプロンプトをそのまま使った結果&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;font size=+2 color=&quot;red&quot;&gt;ツールは、使い方しだい・・なので、面白い使い方や役に立つ、時短になる・・など、探らないとなぁ。&lt;br /&gt;
えっ、&lt;br /&gt;
その探らせる・リサーチを、定期的にレポートにして送らせる・報告させればいいのに？って？&lt;br /&gt;
上手い使い方を教えてくださいね。またね&lt;/font&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/935b369de578b5de354999b63962aadfb498ed2c/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260228%2F20260228102250.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>都市伝説じゃなかった！YouTubeサムネイル50MB化の真相とAI生成画像の扱い方 私は2MB制限組です残念・・・</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/02/27/113000"/>
        <id>hatenablog://entry/17179246901359007241</id>
        <published>2026-02-27T11:30:00+09:00</published>
        <updated>2026-02-27T11:30:00+09:00</updated>        <summary type="html">YouTubeサムネイルの「2MB制限」突破術！AI生成画像を賢くアップロードする備忘録 YouTube動画の顔とも言えるサムネイル。最近はGemini（Nano Banana）でハイクオリティな画像が作れるようになりましたが、&#39;&#39;「ファイルサイズが2MBを超えてアップロードできない！」&#39;&#39;という壁にぶち当たることがあります。今回は、三流プログラマー（を自称する）私ことKen3が、AIと格闘して得た「サイズ制限回避のコツ」と、噂の「50MB制限」の真実についてまとめました。 説明したかった事・伝えたかった事の要約 Geminiで生成した画像が2MB制限に引っかかる問題の解決策。 私は2MB制限…</summary>
        <content type="html">
&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;YouTubeサムネイルの2MB制限突破術AI生成画像を賢くアップロードする備忘録&quot;&gt;YouTubeサムネイルの「2MB制限」突破術！AI生成画像を賢くアップロードする備忘録&lt;/h3&gt;
    &lt;p&gt;YouTube動画の顔とも言えるサムネイル。最近はGemini（Nano Banana）でハイクオリティな画像が作れるようになりましたが、&#39;&#39;「ファイルサイズが2MBを超えてアップロードできない！」&#39;&#39;という壁にぶち当たることがあります。&lt;/p&gt;&lt;p&gt;今回は、三流プログラマー（を自称する）私ことKen3が、AIと格闘して得た「サイズ制限回避のコツ」と、噂の「50MB制限」の真実についてまとめました。&lt;/p&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;説明したかった事伝えたかった事の要約&quot;&gt;説明したかった事・伝えたかった事の要約&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;Geminiで生成した画像が2MB制限に引っかかる問題の解決策。&lt;/li&gt;
&lt;/ul&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;私は2MB制限組、まだ50MB未対応組です&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260227/20260227103442.jpg&quot; width=&quot;506&quot; height=&quot;374&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;私は2MB制限組、まだ50MB未対応組です&lt;/figcaption&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;画像生成時、および生成後の「指示文（プロンプト）」でファイルサイズを制御する方法。&lt;/li&gt;
&lt;li&gt;YouTubeが一部で開始している「サムネイル50MB制限緩和」の最新情報。&lt;/li&gt;
&lt;/ul&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIを使い図解しました&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260227/20260227104255.png&quot; width=&quot;1200&quot; height=&quot;655&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIを使い図解しました&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;AIへの指示文プロンプトの書き方&quot;&gt;AIへの指示文（プロンプト）の書き方&lt;/h4&gt;
    &lt;p&gt;現在の画像生成AI（Nano Banana）には、直接「○MB以下で出力」と指定する機能はありません。そのため、&#39;&#39;「データの複雑さを下げる」&#39;&#39;か、&#39;&#39;「生成後に加工させる」&#39;&#39;のがプロの（？）やり方です。&lt;/p&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;1-生成時にサイズを抑えるプロンプト&quot;&gt;1. 生成時にサイズを抑えるプロンプト&lt;/h5&gt;
    &lt;p&gt;画像が複雑であればあるほど、ファイルサイズは肥大化します。&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;「1280x720ピクセル（16:9）で出力して」
「シンプルでフラットなデザインにして」
「アニメ調のデザインで作成して」&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;2-生成後にサイズを減らす魔法の指示おすすめ&quot;&gt;2. 生成後にサイズを減らす魔法の指示（おすすめ！）&lt;/h5&gt;
    &lt;p&gt;フルサイズで出力されてしまった後、ダウンロードする前にGeminiにこう指示してください。&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;「この画像をYouTube用に1280x720ピクセルのJPG形式に変換して、ファイルサイズが2MB以下になるように圧縮してダウンロードリンクを作って」&lt;/pre&gt;&lt;p&gt;これだけで、内部でPythonが走り、確実に2MB以下のリンクを吐き出してくれます。&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;サムネイル50MB制限の噂は本当か&quot;&gt;「サムネイル50MB制限」の噂は本当か？&lt;/h4&gt;
    &lt;p&gt;一部のクリエイターの間で囁かれている「50MBまでOKになった」という噂。これは都市伝説ではなく&#39;&#39;「現在進行中の公式アップデート」&#39;&#39;でした。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&#39;&#39;噂の真実&#39;&#39;: 2025年後半から、一部のクリエイターを対象に上限が50MBに引き上げられています。&lt;/li&gt;
&lt;li&gt;&#39;&#39;背景&#39;&#39;: テレビ（4K大画面）での視聴者が増えたため、高精細なサムネイル（3840x2160など）が必要になったからです。&lt;/li&gt;
&lt;li&gt;&#39;&#39;現状&#39;&#39;: 全ユーザー一斉ではなく「ロールアウト（順次適用）」中。エラーが出る場合は、まだ自分のアカウントに順番が回ってきていない証拠です。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;手順の解説&quot;&gt;手順の解説&lt;/h4&gt;
    
&lt;ol&gt;
&lt;li&gt;Geminiでサムネイルのラフ案を作成する。&lt;/li&gt;
&lt;li&gt;気に入ったレイアウトがあれば、上記「2MB以下に圧縮して」の指示文を投げる。&lt;/li&gt;
&lt;li&gt;生成されたダウンロードリンクから画像を保存する。&lt;/li&gt;
&lt;li&gt;YouTube Studioでアップロード。エラーが出る場合は、まだ2MB制限のアカウントなので上記工程を繰り返す。&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;AIからのアドバイスと今後の課題&quot;&gt;AIからのアドバイスと今後の課題&lt;/h4&gt;
    &lt;p&gt;現在は過渡期です。自分のアカウントが50MB対応になるまでは、Geminiに「Pythonでリサイズ」を丸投げするのが一番効率的です。&lt;/p&gt;&lt;p&gt;また、PNG形式は画質が良い反面サイズが大きくなりやすいため、&#39;&#39;「JPG形式で書き出す」&#39;&#39;癖をつけておくと、2MBの壁を突破しやすくなります。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=YouTube+サムネイル+50MB+制限&quot;&gt;Google&amp;#x691C;&amp;#x7D22;: YouTube &amp;#x30B5;&amp;#x30E0;&amp;#x30CD;&amp;#x30A4;&amp;#x30EB; 50MB &amp;#x5236;&amp;#x9650;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Gemini+Nano+Banana+画像生成+コツ&quot;&gt;Google&amp;#x691C;&amp;#x7D22;: Gemini Nano Banana &amp;#x753B;&amp;#x50CF;&amp;#x751F;&amp;#x6210; &amp;#x30B3;&amp;#x30C4;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;以上、未来の自分への備忘録でした。&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
&lt;font size=+2 colro=&quot;red&quot;&gt;下記、AIとのやりとり&lt;/font&gt;&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;Q:
私は、YouTubeサムネイルの修正をGeminiを使って行っています
Nano banana 2 or PRO が起動してよいレイアウトで作成が完了します

描画された画像をダウンロードすると
2MBを越えている・・と、
ダウンロード画像をそのままアップできません

やりたいこと:
フルサイズでダウンロードすると
私のアカウントだと、2MB制限でYouTubeでアップロードエラーとなります
(※一部ユーザーは50MB？と噂されていますが本当ですか？)

聞きたい事:
1.2MB制限でサムネイルを作成する指示 or フルではなくダウンロード時に2MBに減らす指示文
2.YouTubeの一部ユーザーはサムネイル50MB？と噂されていますが本当ですか？テレビの大画面4Kでもきれいなサムネイルになるクリエイターが居ると噂されているのは都市伝説ですか？

以上、1と2をテキストで回答してください。
よろしくお願いします。

A:AIの回答
ケン3さん、いつもYouTubeの運営お疲れ様です！「三流プログラマー」なんて謙遜されていますが、Nano Bananaを使いこなしてサムネイルを自作されているのは流石ですね。

YouTubeの2MB制限、実は最近大きな動きがあったんですよ。プログラマーのケン3さんなら興味を引くであろう技術的な背景も含めて、ご質問にズバッとお答えします！

---

### 1. 2MB制限内に収めるための「指示文」のコツ

現在の画像生成AI（Nano Banana）には、「ファイルサイズを○KB以下にする」という直接的なバイナリレベルの制御命令は存在しません。しかし、**「データの複雑さを下げて圧縮効率を上げる」**指示や、**「ダウンサイズ処理」**を私（Gemini）に直接依頼することで解決できます。

**生成時のプロンプトに追加する指示（ファイルサイズを小さくする工夫）**

* **「シンプルでフラットなデザインにして」**
* グラデーションや複雑なテクスチャ、写真のように細かい書き込みが多いとPNG形式ではファイルサイズが肥大化します。アニメ調やフラットデザインはサイズが抑えられます。


* **「1280x720ピクセル（16:9）で出力して」**
* 解像度をあらかじめYouTubeの推奨（最小構成）に指定することで、無駄なピクセルデータを減らします。



**ダウンロード前にサイズを減らす方法（おすすめ）**
フルサイズで描画された後、ダウンロードする前にチャット欄で私にこう指示してください：

&amp;gt; **「この画像をYouTube用に1280x720ピクセルのJPG形式に変換して、ファイルサイズが2MB以下になるように圧縮してダウンロードリンクを作って」**

私が内部でPython（画像処理ライブラリ）を動かし、条件に合うようにリサイズ・圧縮したファイルを生成します。これなら確実に2MB以下でダウンロードできます。

---

### 2. 「50MB制限」の噂は本当か？（都市伝説の正体）

結論から言うと、それは**「都市伝説ではなく、現在進行中の公式アップデート」**です！

* **噂の真実:** 2025年後半から、YouTubeは一部のクリエイターを対象にサムネイルの上限を**2MBから50MBに引き上げ**始めています。
* **なぜ50MB？:** 近年、テレビ（大画面4K）でYouTubeを見る層が急増したためです。従来の2MB（1280x720）では、大画面で見るとボヤけてしまいます。これを防ぐため、**「4K解像度のサムネイル（3840x2160）」**をサポートするために50MBまで拡張されました。
* **なぜエラーが出るのか？:** この機能は現在**ロールアウト（順次適用）中**です。ケン3さんのアカウントや、現在お使いのブラウザ版YouTube Studioのバージョンでは、まだ従来の2MB制限が適用されている状態だと思われます。

「テレビで綺麗なサムネイル」はまさにその50MB化の恩恵を受けているクリエイターたちですね。

---

### まとめとアドバイス

現状はまだ2MB制限が生きているようですので、もし画像が2MBを越えてしまったら、**「この画像を2MB以下にして」と私に丸投げしてください！** すぐに最適なサイズに加工してお渡しします。

次は、今作成されているサムネイルを私が2MB以下にリサイズしましょうか？画像をこちらにアップロード（または今のスレッドの画像を指名）していただければ、すぐに処理しますよ！
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;</content>        
        <category term="YouTube" label="YouTube" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/6aa272e778e98cdcad3d88bcec4d14d1180704a1/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260227%2F20260227104255.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>JRA枠連オッズ取得で不具合が発生したコードを恥ずかしいけど残しておく</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/02/11/100000"/>
        <id>hatenablog://entry/17179246901353289082</id>
        <published>2026-02-11T10:00:00+09:00</published>
        <updated>2026-02-11T10:00:03+09:00</updated>        <summary type="html">【結論：Power Queryのループ処理（M言語）は強力ですが、データの「欠落」に注意！】1回のアクセスで全データを取得する「List.Transform」の魔法と、 それを打ち砕く「競馬の仕様（枠連非発売）」という罠。 技術的な成功と実務的な失敗の両方が詰まったドキュメンタリー解説です。1. 【一番のポイント】データが1行ずつズレる「絶望の瞬間」 タイムライン： 18:32 https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=1112 内容： 完璧に書いたはずのコードなのに、なぜか9レース目からオッズがズレ始める現象が発生。 AIで動画内容を図解2.…</summary>
        <content type="html">&lt;p&gt;【結論：Power Queryのループ処理（M言語）は強力ですが、データの「欠落」に注意！】&lt;/p&gt;&lt;p&gt;1回のアクセスで全データを取得する「List.Transform」の魔法と、&lt;br /&gt;
それを打ち砕く「競馬の仕様（&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;非発売）」という罠。&lt;br /&gt;
技術的な成功と実務的な失敗の両方が詰まったドキュメンタリー解説です。&lt;/p&gt;&lt;p&gt;1. 【一番のポイント】データが1行ずつズレる「絶望の瞬間」&lt;br /&gt;
タイムライン： 18:32 &lt;a href=&quot;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=1112&quot;&gt;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=1112&lt;/a&gt;&lt;br /&gt;
内容： 完璧に書いたはずのコードなのに、なぜか9レース目からオッズがズレ始める現象が発生。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIで動画内容を図解&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260211/20260211083718.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIで動画内容を図解&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;2. 【見どころ】List.Transformを使った「内部ループ」の全貌&lt;br /&gt;
タイムライン： 07:01 &lt;a href=&quot;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=421&quot;&gt;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=421&lt;/a&gt;&lt;br /&gt;
内容： POST送信で1回だけ取得したHTMLを、M言語で賢く回して各券種を抽出するテクニック。&lt;/p&gt;&lt;p&gt;3. 【誠実な種明かし】犯人は「7頭立てレース」だった&lt;br /&gt;
タイムライン： 24:25 &lt;a href=&quot;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=1465&quot;&gt;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=1465&lt;/a&gt;&lt;br /&gt;
内容： コードのミスではなく「少頭数では&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;が発売されない」という競馬の常識。&lt;/p&gt;&lt;p&gt;4. 【小技】カンマ区切りのテキストを「リスト」に変換する&lt;br /&gt;
タイムライン： 09:53 &lt;a href=&quot;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=593&quot;&gt;https://www.youtube.com/watch?v=cxz_NeyPC-M&amp;t=593&lt;/a&gt;&lt;br /&gt;
内容： 設定値をM言語で処理しやすいリスト形式に分解する手順。&lt;/p&gt;&lt;p&gt;5. 【正直にお伝えします：今後の課題】&lt;br /&gt;
・&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;がない場合の条件分岐の実装。&lt;br /&gt;
・データの整合性チェック。&lt;/p&gt;&lt;p&gt;▼動画本編はこちら&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=cxz_NeyPC-M&quot;&gt;https://www.youtube.com/watch?v=cxz_NeyPC-M&lt;/a&gt;&lt;/p&gt;&lt;p&gt;#PowerQuery #M言語 #&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/Excel&quot;&gt;Excel&lt;/a&gt; #&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt; #&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0&quot;&gt;スクレイピング&lt;/a&gt;&lt;/p&gt;&lt;p&gt;ここから、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&quot;&gt;ソースコード&lt;/a&gt;とライブで使用した台本&lt;/p&gt;&lt;p&gt;固定値でテスト 開催地をPOST後1回だけHTMLソースを受け取り、その中で馬券の種類別にループさせる&lt;/p&gt;&lt;p&gt;本日、代替開催で&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;競馬が開催されているので、&lt;br /&gt;
テストしてみます。&lt;br /&gt;
※で、新たな&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;ぬけのバグを見つけたり・・・&lt;/p&gt;&lt;p&gt;1.まず、テスト結果を見せる&lt;/p&gt;&lt;p&gt;1回東京4日&lt;br /&gt;
pw15orl00052026010420260210/6F&lt;br /&gt;
でテストする&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;// 26/02/10 カンマ区切りで受け取った馬券の種類を分解して(Listにして)内部で回す
// 26/02/10 ※枠連にすると、枠連無し8頭までで不具合になることを見つける・・・追加のバグを記載すること
let
    // テスト用で固定値
    str開催地CNAME = &amp;#34;pw15orl00052026010420260210/6F&amp;#34;,
    str馬券種類 = &amp;#34;単勝,馬連,馬単,枠連&amp;#34;,
    str開催地と開催日 = &amp;#34;1回東京4日 固定の文字列でテスト&amp;#34;,

// 開催地別HTMLの取得なので、POST送信は場所ごとにWebクエリーは1回だけ走らせる
    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    // 引数で受け取った開催地のCNAMEをパラメーターとする 26/01/25修正
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; str開催地CNAME,
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    HTML文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(HTML文字列),

    // HTMLソースLISTをテーブルに変換して、フィルターなどで使う
    テーブルに変換済み = Table.FromList(HTMLソース, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
// ここまでが、一回だけのPOST取得後、HTMLソースを取得した時の処理、
// ここから、個別の馬券者別単位で処理を行う
    // ※初めからリストでもらう手もあるけど、カンマ区切り文字列からリストを作成
    // --- 馬券種類を List に分解 &amp;#34;単勝,馬連,3連複&amp;#34; → { &amp;#34;単勝&amp;#34;,&amp;#34;馬連&amp;#34;,&amp;#34;3連複&amp;#34; } ---
    馬券種類List =
        List.Transform(
            Text.Split(str馬券種類, &amp;#34;,&amp;#34;),
            each Text.Trim(_)
        ),

    // 作成したリストを使用して、種類別にループ(変換)を行う
    馬券別テーブル =
        List.Transform(
            馬券種類List,
            (txt券種 as text) =&amp;gt;
        let
            // CNAMEを取得したいので、フィルターをかけ、文字列を抜き出す
            フィルターされた行 = Table.SelectRows(
                                    テーブルに変換済み, 
                                    each Text.Contains([Column1], &amp;#34;Action&amp;#34;) 
                                    and Text.Contains([Column1], txt券種)),

            // doActionのパラメーターを抜き出し 列&amp;#34;CNAME&amp;#34;を作る
            条件3_1 = &amp;#34;doAction(&amp;#39;/JRADB/accessO.html&amp;#39;, &amp;#39;&amp;#34;, // ここから
            条件3_2 = &amp;#34;&amp;#39;&amp;#34;,                                 // 次のシングルコーテーションまで抜き出す
            CNAMEを追加 = Table.AddColumn(
                            フィルターされた行, 
                            &amp;#34;CNAME&amp;#34;,
                            each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),

            //場所の処理 新列 &amp;#34;今週の開催地&amp;#34; を追加する、引数で受け取った場所をそのままセットする
            追加された場所 = Table.AddColumn(CNAMEを追加, &amp;#34;今週の開催地&amp;#34;, each str開催地と開催日),

            //馬券の種類を追加する List変換処理中の券種をセットする
            追加された種類 = Table.AddColumn(追加された場所, &amp;#34;馬券の種類&amp;#34;, each txt券種),

            // 2026/02/08 処理の追加 ダミーの連番インデックス列を追加します (0から始まる連番が振られます)
            インデックス列の追加 = Table.AddIndexColumn(追加された種類, &amp;#34;Index&amp;#34;, 0, 1),

            // レース番号をクラス名 を指定して取得します
            レース番号抽出 = Html.Table(HTML文字列, {
                {&amp;#34;RaceNO&amp;#34;, &amp;#34;.race_num img&amp;#34;, each [Attributes][alt]}
            }),

            // 新列&amp;#34;レース番号&amp;#34;を作成します
            レース番号を追加 = Table.AddColumn(
                                インデックス列の追加, 
                                &amp;#34;レース番号&amp;#34;, 
                                each レース番号抽出{_[Index]}[RaceNO]
                            ),

            // 発走時刻をクラス名とタグ td.time を指定して取得します
            発走時刻抽出 = Html.Table(HTML文字列, {
                {&amp;#34;time&amp;#34;, &amp;#34;td.time&amp;#34;}
            }),

            // 新列&amp;#34;発走時刻&amp;#34;を作成します
            発走時刻を追加 = Table.AddColumn(
                                レース番号を追加, 
                                &amp;#34;発走時刻&amp;#34;, 
                                each 発走時刻抽出{_[Index]}[time]
                            ),

            // レース名をクラス名とタグ td.race_name を指定して取得します
            レース名称抽出 = Html.Table(HTML文字列, {
                {&amp;#34;レース名称&amp;#34;, &amp;#34;td.race_name&amp;#34;}
            }),

            // 列&amp;#34;発走時刻&amp;#34;を作成します
            レース名称を追加 = Table.AddColumn(
                                発走時刻を追加, 
                                &amp;#34;レース名&amp;#34;, 
                                each レース名称抽出{_[Index]}[レース名称]
                            ),

            //不要な列を削除する
            列削除 = Table.RemoveColumns(レース名称を追加,{&amp;#34;Column1&amp;#34;, &amp;#34;Index&amp;#34;})

        in
            列削除   //馬券の種類別に作成したテーブルを返す
        ),  // ←List.Transformの閉じカッコ、ここまでが種類のリストでループ変換される

    // すべて結合、ループで複数テーブルをリスト形式で取得しているので、最後にテーブルを結合する 
    結果 = Table.Combine(馬券別テーブル)

in
    結果

// ここまでをコピーして、貼り付けてください&lt;/pre&gt;&lt;p&gt;2.&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&quot;&gt;ソースコード&lt;/a&gt;のポイントを簡単に説明する&lt;/p&gt;&lt;p&gt;ポイントは、&lt;br /&gt;
POST送信して、HTMLソースを取得後&lt;/p&gt;&lt;p&gt;List.Transformで、指定した馬券の種類ごとに&lt;br /&gt;
パラメーターCNAMEなどを取得する感じです&lt;/p&gt;&lt;p&gt;個人的に書きなれないのが、M言語のループ処理かなぁ。&lt;/p&gt;
&lt;pre class=&quot;code m&quot; data-lang=&quot;m&quot; data-unlink&gt;馬券種類List,
            (txt券種 as text) =&amp;gt;
        let
で、変数に代入しながら、変換結果が返る仕組みかなぁ
この辺りは、慣れかもしれませんが・・・

//M言語のソース
    // --- 馬券種類を List に分解 &amp;#34;単勝,馬連,3連複&amp;#34; → { &amp;#34;単勝&amp;#34;,&amp;#34;馬連&amp;#34;,&amp;#34;3連複&amp;#34; } ---
    馬券種類List =
        List.Transform(
            Text.Split(str馬券種類, &amp;#34;,&amp;#34;),
            each Text.Trim(_)
        ),

    // 作成したリストを使用して、種類別にループ(変換)を行う
    馬券別テーブル =
        List.Transform(
            馬券種類List,
            (txt券種 as text) =&amp;gt;
        let&lt;/pre&gt;&lt;p&gt;3.またまた、バグを報告する&lt;/p&gt;&lt;p&gt;今回、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;を取得してみて、&lt;br /&gt;
また、バグを発見する&lt;/p&gt;&lt;p&gt;8頭までの時、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;は発売されません。&lt;br /&gt;
すると、&lt;br /&gt;
&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;のオッズもないので、表は空白です&lt;/p&gt;&lt;p&gt;前回は、雪で4レースの行が無かったので、&lt;br /&gt;
行単位の処理で、OKでした&lt;/p&gt;&lt;p&gt;今回は、行が存在して、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%CF%C8%CF%A2&quot;&gt;枠連&lt;/a&gt;の部分だけないので、&lt;br /&gt;
いつもの私の特徴的な不具合、決めつけで、またまたデータがズレてセットされてしまいました。&lt;/p&gt;&lt;p&gt;4.おわりの挨拶&lt;/p&gt;&lt;p&gt;今回は、代替開催があったので、&lt;br /&gt;
テストしてみようと、&lt;br /&gt;
軽い気持ちで始めたライブでしたが、&lt;br /&gt;
バグを見つけてしまい・・・&lt;/p&gt;&lt;p&gt;いろいろと積み残しが多いのですが、また週末の土日、よろしくお願いします。&lt;/p&gt;
</content>        
        <category term="JRA" label="JRA" />
        
        <category term="Excel" label="Excel" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/997f7ac506c067d88242e4ec53029c8122be97dd/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260211%2F20260211083718.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>質問:パワポに貼ったURLで挿入したYouTube動画をエクスポートでMP4にできません 回答:PowerPointは「YouTube動画を勝手にダウンロードする道具」ではありません</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/02/09/073000"/>
        <id>hatenablog://entry/17179246901351140119</id>
        <published>2026-02-09T07:30:00+09:00</published>
        <updated>2026-02-09T07:30:00+09:00</updated>        <summary type="html">PowerPointは「YouTube動画を勝手にダウンロードする道具」ではありません 【最初に大事なこと：この動画は『保存する裏技』ではありません】 PowerPointで「ビデオ作成」をする時、スライドに埋め込んだYouTube動画は、ルール上『保存できない』ようになっています。 もし保存できてしまうと、PowerPointが「YouTube動画を勝手にダウンロードする道具」になってしまいますよね？それはダメなので、マイクロソフト側でしっかりとガード（制限）をかけているんです。 この動画は、実際にエラーが出てガードされる様子と、「なぜダメなのか？」の理由を解説した動画です。「できないこと」…</summary>
        <content type="html">&lt;p&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt;は「&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;動画を勝手にダウンロードする道具」ではありません
【最初に大事なこと：この動画は『保存する裏技』ではありません】&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt;で「ビデオ作成」をする時、スライドに埋め込んだ&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;動画は、ルール上『保存できない』ようになっています。&lt;/p&gt;

&lt;p&gt;もし保存できてしまうと、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt;が「&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;動画を勝手にダウンロードする道具」になってしまいますよね？それはダメなので、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%AF%A5%ED%A5%BD%A5%D5%A5%C8&quot;&gt;マイクロソフト&lt;/a&gt;側でしっかりとガード（制限）をかけているんです。&lt;/p&gt;

&lt;p&gt;この動画は、実際にエラーが出てガードされる様子と、「なぜダメなのか？」の理由を解説した動画です。「できないこと」を確認するためにご覧ください。&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;お急ぎの方は、以下の重要なポイントからチェックしてください！&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;【一番のポイント】ビデオ作成でエラーが出る瞬間
タイムライン： 08:24 &lt;a href=&quot;https://www.youtube.com/live/uSRfRqcotZE?t=504&quot;&gt;https://www.youtube.com/live/uSRfRqcotZE?t=504&lt;/a&gt;
内容： スライド上では再生できていた&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;動画が、「ビデオ作成（エクスポート）」の段階で弾かれる決定的な瞬間です。
ポイント： 「一部のメディアは挿入できません」というメッセージが、ガードされた証拠です。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;【解説の核心】なぜ保存できないのか？（&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C0&quot;&gt;ダウンローダ&lt;/a&gt;ー制限の話）
タイムライン： 09:50 &lt;a href=&quot;https://www.youtube.com/live/uSRfRqcotZE?t=590&quot;&gt;https://www.youtube.com/live/uSRfRqcotZE?t=590&lt;/a&gt;
内容： もし保存機能を提供してしまうと、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt;が違法な&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C0&quot;&gt;ダウンローダ&lt;/a&gt;ーと同じになってしまう、という仕様の背景を考察・解説しています。
ここが重要： 「不具合」ではなく、あえて機能を止めている「仕様」であることが理解できます。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260204/20260204202513.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;【検証】「画面キャプチャ」した動画ならいけるのか？
タイムライン： 10:36 &lt;a href=&quot;https://www.youtube.com/live/uSRfRqcotZE?t=636&quot;&gt;https://www.youtube.com/live/uSRfRqcotZE?t=636&lt;/a&gt;
内容： &lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;の機能を使わず、画面を録画（キャプチャ）した動画ファイルなら挿入できるのか？という代替案の検証です。
ポイント： 結局どうなるのか？試行錯誤の結果をご確認ください。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;【まとめ】このエラーは「正常な仕様」です
タイムライン： 22:14 &lt;a href=&quot;https://www.youtube.com/live/uSRfRqcotZE?t=1334&quot;&gt;https://www.youtube.com/live/uSRfRqcotZE?t=1334&lt;/a&gt;
内容： 一連の検証を通じて、「できないことが正常である」という結論に至ります。
ここが安心： あなたの操作ミスではありません。仕様なので、無駄な試行錯誤を終わらせましょう。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;【正直にお伝えします：動画の性質】
・この動画は&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%E9%A5%A4%A5%D6%C7%DB%BF%AE&quot;&gt;ライブ配信&lt;/a&gt;の&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AB%A5%A4%A5%D6&quot;&gt;アーカイブ&lt;/a&gt;です。試行錯誤や考察しながら進むため、結論まで少し時間がかかります。
・上記タイムラインを活用して、必要な部分だけを効率よくご確認ください。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;▼
皆さんはこの仕様、ご存知でしたか？
「知らなかった！」「やっぱりそうか…」など、感想をコメントで教えていただけると嬉しいです。&lt;/p&gt;

&lt;h1 id=&quot;PowerPoint-YouTube埋め込み-仕様解説-エラー&quot;&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt; #&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;埋め込み #仕様解説 #エラー&lt;/h1&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/e91b2baa9af24bf38de9d0ccf3f266e26a632a04/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260204%2F20260204202513.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>AIでまとめました 【Excelパワークエリ】Html.TableでWebサイトの特定クラス(CSSセレクター)を抽出する方法</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/02/07/190738"/>
        <id>hatenablog://entry/17179246901352144715</id>
        <published>2026-02-07T19:07:38+09:00</published>
        <updated>2026-02-07T19:07:38+09:00</updated>        <summary type="html">【Excelパワークエリ】Html.TableでWebサイトの特定クラス(CSSセレクター)を抽出する方法 パワークエリでWebスクレイピングをしていて、&#39;&#39;「表（Table）として認識されない箇所」&#39;&#39;や&#39;&#39;「特定のクラス名がついたデータだけ欲しい」&#39;&#39;と悩んだことはありませんか？今回は、JRAのレース結果ページを題材に、M言語の神関数&#39;&#39;「Html.Table」&#39;&#39;を使って、CSSセレクター（クラス名指定）でピンポイントにデータを抽出するテクニックを紹介します。 AIが動画と台本からブログを作成しました 紹介動画：なぜか空白？クラス指定の落とし穴と解決策 動画内では、実際にコードを書きなが…</summary>
        <content type="html">
&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;ExcelパワークエリHtmlTableでWebサイトの特定クラスCSSセレクターを抽出する方法&quot;&gt;【&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/Excel&quot;&gt;Excel&lt;/a&gt;パワークエリ】Html.TableでWebサイトの特定クラス(&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/CSS&quot;&gt;CSS&lt;/a&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BB%A5%EC%A5%AF%A5%BF&quot;&gt;セレクタ&lt;/a&gt;ー)を抽出する方法&lt;/h3&gt;
    &lt;p&gt;パワークエリでWeb&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0&quot;&gt;スクレイピング&lt;/a&gt;をしていて、&#39;&#39;「表（Table）として認識されない箇所」&#39;&#39;や&#39;&#39;「特定のクラス名がついたデータだけ欲しい」&#39;&#39;と悩んだことはありませんか？&lt;/p&gt;&lt;p&gt;今回は、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;のレース結果ページを題材に、M言語の神関数&#39;&#39;「Html.Table」&#39;&#39;を使って、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/CSS&quot;&gt;CSS&lt;/a&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BB%A5%EC%A5%AF%A5%BF&quot;&gt;セレクタ&lt;/a&gt;ー（クラス名指定）でピンポイントにデータを抽出するテクニックを紹介します。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIが動画と台本からブログを作成しました&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260207/20260207190640.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIが動画と台本からブログを作成しました&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;紹介動画なぜか空白クラス指定の落とし穴と解決策&quot;&gt;紹介動画：なぜか空白？クラス指定の落とし穴と解決策&lt;/h4&gt;
    &lt;p&gt;動画内では、実際にコードを書きながら「なぜかデータが取れない…」というトラブルを解決していく過程を公開しています。パワークエリ中級者へのステップアップに最適です！&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=e-X8koUbjgI&quot;&gt;&amp;#x3010;Excel&amp;#x30D1;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x30A8;&amp;#x30EA;&amp;#x3011;Html.Table&amp;#x3067;&amp;#x7279;&amp;#x5B9A;&amp;#x30AF;&amp;#x30E9;&amp;#x30B9;&amp;#x3092;&amp;#x62BD;&amp;#x51FA;&amp;#xFF01;CSS&amp;#x30BB;&amp;#x30EC;&amp;#x30AF;&amp;#x30BF;&amp;#x30FC;&amp;#x6D3B;&amp;#x7528;&amp;#x8853;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;今回使用したソースコードM言語&quot;&gt;今回使用した&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&quot;&gt;ソースコード&lt;/a&gt;（M言語）&lt;/h4&gt;
    &lt;p&gt;以下のコードを「詳細エディター」に貼り付けて、URLやクラス名を書き換えて試してみてください。&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;//--- 2026/02/07 クラス名を指定して、データを取得するテスト
// 固定ページ
// pw15orl00082026020320260207/50	2回京都3日
// でテストする

let
    // JRAホームページからソースを取得する POST送信で結果HTMLソースを受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    // テストなので固定
    strCNAME = &amp;#34;cname=pw15orl00082026020320260207/50&amp;#34;,
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],

    // WebページからソースコードをPOST送信で受け取る
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    // 文字化け対策（Shift_JIS = 932）
    HTML文字列 = Text.FromBinary(ソース, 932),

    // --- ここから 今回のメイン解説 クラス名で抽出の処理です ---

    // 1.1 指定したいクラス名 th class=&amp;#34;race_name&amp;#34;など、ソースから抜き出したいclass=をチェックする
    指定するクラス名 = &amp;#34;race_name&amp;#34;,

    // 1.2 Html.Tableを使って抽出
    // { &amp;#34;列名&amp;#34;, &amp;#34;CSSセレクター&amp;#34; } の形式で指定します ←AI回答そのまま
    カスタムTable = Html.Table(HTML文字列, {
        {&amp;#34;レース詳細&amp;#34;, &amp;#34;.&amp;#34; &amp;amp; 指定するクラス名} 
    })

in
    // テーブル形式で返す、見出しの行に注意、予想外のclass=&amp;#34;クラスの名前&amp;#34;を取得に注意
    カスタムTable

//-------&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;実演解説ステップバイステップ&quot;&gt;実演解説：ステップ・バイ・ステップ&lt;/h4&gt;
    &lt;p&gt;動画の重要ポイントをタイムスタンプ付きでまとめました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[00:00](&lt;a href=&quot;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=0s&quot;&gt;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=0s&lt;/a&gt;) ：&#39;&#39;イントロ&#39;&#39;。Html.Tableで&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;のレース名を取得するテストの開始。&lt;/li&gt;
&lt;li&gt;[01:40](&lt;a href=&quot;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=100s&quot;&gt;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=100s&lt;/a&gt;) ：&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/Excel&quot;&gt;Excel&lt;/a&gt;の&#39;&#39;詳細エディター&#39;&#39;へコードを貼り付ける手順。&lt;/li&gt;
&lt;li&gt;[04:40](&lt;a href=&quot;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=280s&quot;&gt;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=280s&lt;/a&gt;) ：&#39;&#39;クラス名（.race_name）&#39;&#39;を&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/CSS&quot;&gt;CSS&lt;/a&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BB%A5%EC%A5%AF%A5%BF&quot;&gt;セレクタ&lt;/a&gt;ーとして指定する方法。&lt;/li&gt;
&lt;li&gt;[08:45](&lt;a href=&quot;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=525s&quot;&gt;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=525s&lt;/a&gt;) ：&#39;&#39;【重要】なぜ race_num は空白になったのか？&#39;&#39; 初心者が必ずハマる「imgタグのalt属性」問題の解説。&lt;/li&gt;
&lt;li&gt;[13:00](&lt;a href=&quot;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=780s&quot;&gt;https://www.youtube.com/watch?v=e-X8koUbjgI&amp;t=780s&lt;/a&gt;) ：応用編。発走時刻（.timeクラス）の追加抽出テスト。&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;未解決の問題とAIからのアドバイス&quot;&gt;未解決の問題とAIからのアド&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%B9&quot;&gt;バイス&lt;/a&gt;&lt;/h4&gt;
    
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;1-レース番号が取得できない理由imgタグの罠&quot;&gt;1. レース番号が取得できない理由（imgタグの罠）&lt;/h5&gt;
    &lt;p&gt;動画内でも触れていますが、&#39;&#39;class=&quot;race_num&quot;&#39;&#39;を指定しても結果が空白になる場合があります。これは、HTML側で「文字」ではなく「画像（imgタグのalt属性）」でレース番号が表示されているためです。&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;HTML例： &lt;th class=&quot;race_num&quot;&gt; &lt;img alt=&quot;11レース&quot; ...&gt; &lt;/th&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;この場合、単なるテキスト抽出ではなく、子要素の「img」タグや「alt属性」を明示的に指定する必要があります。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;AIからの改善提案&quot;&gt;AIからの改善提案&lt;/h5&gt;
    
&lt;ul&gt;
&lt;li&gt;&#39;&#39;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BB%A5%EC%A5%AF%A5%BF&quot;&gt;セレクタ&lt;/a&gt;ーの精緻化&#39;&#39;：Html.Tableでは「.race_num img」のように指定することで、画像タグの中身を狙い撃ちできる可能性があります。&lt;/li&gt;
&lt;li&gt;&#39;&#39;属性の抽出&#39;&#39;：M言語の他関数と組み合わせて、Attribute（属性）を直接引っ張る処理を加えると、さらに柔軟性が高まります。&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Power+Query+Html.Table+CSS+Selector&quot;&gt;Google&amp;#x691C;&amp;#x7D22;&amp;#xFF1A;&amp;#x30D1;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x30A8;&amp;#x30EA; Html.Table CSS&amp;#x30BB;&amp;#x30EC;&amp;#x30AF;&amp;#x30BF;&amp;#x30FC;&amp;#x306E;&amp;#x4F7F;&amp;#x3044;&amp;#x65B9;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jra.go.jp/&quot;&gt;JRA&amp;#x516C;&amp;#x5F0F;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;不器用な備忘録ですが、誰かの開発のヒントになれば幸いです！&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/77e71904ba8402ad6ecda48d98096bb2d0d8be59/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260207%2F20260207190640.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>【PowerPoint】クリック進行と独立して動く「自動ループアニメーション」の作り方（電車内LCD風）AIに解説と編集を全てお任せした「AIこたつ編集」のテスト</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/02/03/095810"/>
        <id>hatenablog://entry/17179246901350641441</id>
        <published>2026-02-03T09:58:10+09:00</published>
        <updated>2026-02-03T09:58:10+09:00</updated>        <summary type="html">【PowerPoint】クリック進行と独立して動く「自動ループアニメーション」の作り方（電車内LCD風） プレゼン中に「スライドの一部だけを勝手に動かし続けたい」と思ったことはありませんか？ 例えば、電車の車内ドア上にあるLCD画面のように、「下部の路線図は自分のクリックで進めつつ、上部の行き先表示（漢字→ひらがな→英語）は自動で切り替わり続ける」といった挙動です。 通常、PowerPointのアニメーションはクリックで進行するため、これらを両立させるのは難しいと思われがちです。しかし、「音声のブックマーク」と「トリガー」機能を組み合わせることで、マクロを使わずにこれを実現できます。 この記事…</summary>
        <content type="html">&lt;h1 id=&quot;PowerPointクリック進行と独立して動く自動ループアニメーションの作り方電車内LCD風&quot;&gt;【&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt;】クリック進行と独立して動く「自動ループアニメーション」の作り方（電車内&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/LCD&quot;&gt;LCD&lt;/a&gt;風）&lt;/h1&gt;

&lt;p&gt;プレゼン中に「スライドの一部だけを勝手に動かし続けたい」と思ったことはありませんか？
例えば、電車の車内ドア上にある&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/LCD&quot;&gt;LCD&lt;/a&gt;画面のように、&lt;strong&gt;「下部の路線図は自分のクリックで進めつつ、上部の行き先表示（漢字→ひらがな→英語）は自動で切り替わり続ける」&lt;/strong&gt;といった挙動です。&lt;/p&gt;

&lt;p&gt;通常、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt;のアニメーションはクリックで進行するため、これらを両立させるのは難しいと思われがちです。しかし、「音声のブックマーク」と「トリガー」機能を組み合わせることで、&lt;strong&gt;マクロを使わずに&lt;/strong&gt;これを実現できます。&lt;/p&gt;

&lt;p&gt;この記事では、その具体的な作成手順を解説します。&lt;/p&gt;

&lt;p&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIにお任せ こたつ編集のテスト&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260203/20260203095536.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIにお任せ こたつ編集のテスト&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;h2 id=&quot;実現する仕組みと全体像&quot;&gt;実現する仕組みと全体像&lt;/h2&gt;

&lt;p&gt;このテクニックの核心は、&lt;strong&gt;「裏で無音の音声を再生し続け、その音声の特定位置（ブックマーク）を合図にアニメーションを発動させる」&lt;/strong&gt;という点です。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;スライド遷移と同時に&lt;strong&gt;無音の音声ファイル&lt;/strong&gt;を自動再生・ループさせる。&lt;/li&gt;
&lt;li&gt;音声ファイルの特定の位置（例：0秒、3秒、6秒）に&lt;strong&gt;ブックマーク&lt;/strong&gt;を設定する。&lt;/li&gt;
&lt;li&gt;画像や文字の切り替えアニメーションの開始条件（トリガー）を、その&lt;strong&gt;ブックマーク&lt;/strong&gt;に紐付ける。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;これにより、プレゼンターのクリック（スライド進行）とは完全に独立したタイムラインでアニメーションを制御できます。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;手順1パーツの準備と名前の整理&quot;&gt;手順1：パーツの準備と名前の整理&lt;/h2&gt;

&lt;p&gt;まずは、切り替え表示させたいテキストボックスや画像を用意します。今回は例として「漢字」「ひらがな」「英語」の3つのテキストを用意します。&lt;/p&gt;

&lt;p&gt;ここで重要なのが&lt;strong&gt;「オブジェクトの選択と表示」ウィンドウ&lt;/strong&gt;での名前変更です。
アニメーション設定時に混乱しないよう、各オブジェクトには分かりやすい名前を付けておきましょう。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ホームタブ &gt; 配置 &gt; オブジェクトの選択と表示&lt;/li&gt;
&lt;li&gt;例：「テキストボックス 5」→「Text_Kanji」に変更&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;[&lt;a href=&quot;https://www.youtube.com/watch?v=AvkKP0TKI8Y&amp;amp;t=232s&quot;&gt;03:52&lt;/a&gt;] オブジェクト名の変更手順（動画）&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;手順2制御用オーディオの作成ここが重要&quot;&gt;手順2：制御用オーディオの作成（ここが重要）&lt;/h2&gt;

&lt;p&gt;アニメーションの司令塔となる「無音音声」を作成します。
今回は3つの表示を3秒ごとに切り替えるため、&lt;strong&gt;合計9秒（3秒×3パターン）の無音ファイル&lt;/strong&gt;を用意するのが最もシンプルで管理しやすい方法です。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;挿入 &gt; オーディオ &gt; オーディオの録音&lt;/strong&gt; をクリック。&lt;/li&gt;
&lt;li&gt;マイクをミュートにするか静かにして、&lt;strong&gt;約9秒間&lt;/strong&gt;録音する。&lt;/li&gt;
&lt;li&gt;作成されたスピーカーアイコンを選択し、&lt;strong&gt;再生タブ &gt; オーディオのトリミング&lt;/strong&gt; で長さを正確に「09.00」に調整する。&lt;/li&gt;
&lt;li&gt;プレゼン中にアイコンが見えないよう「スライドショー実行中は隠す」にチェックを入れるか、スライド枠外に配置する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重要：&lt;/strong&gt; 再生タブの「開始」を&lt;strong&gt;「自動」&lt;/strong&gt;にし、&lt;strong&gt;「停止するまで繰り返す」&lt;/strong&gt;にチェックを入れる。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;[&lt;a href=&quot;https://www.youtube.com/watch?v=AvkKP0TKI8Y&amp;amp;t=528s&quot;&gt;08:48&lt;/a&gt;] オーディオの録音と設定（動画）&lt;/p&gt;

&lt;h3 id=&quot;なぜ3秒ループではなく9秒なのか&quot;&gt;なぜ「3秒ループ」ではなく「9秒」なのか？&lt;/h3&gt;

&lt;p&gt;動画の前半では「3秒の音声をループさせる」方法を試していますが、これだと「表示」と「非表示（クリア）」のアニメーション管理が複雑になります。ループ全体（9秒）の音声を1つ用意し、そこに通過点（ブックマーク）を作る方法が最もミスが少なく推奨されます。
[&lt;a href=&quot;https://www.youtube.com/watch?v=AvkKP0TKI8Y&amp;amp;t=2601s&quot;&gt;43:21&lt;/a&gt;] 9秒音声＋複数ブックマークの解説位置（動画）&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;手順3ブックマークの追加&quot;&gt;手順3：ブックマークの追加&lt;/h2&gt;

&lt;p&gt;音声ファイルの「アニメーションを開始させたいタイミング」に目印（ブックマーク）を付けます。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;スピーカーアイコンを選択。&lt;/li&gt;
&lt;li&gt;再生バーを動かして、以下の位置で &lt;strong&gt;再生タブ &gt; ブックマークの追加&lt;/strong&gt; をクリック。

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;00:00&lt;/strong&gt;（漢字表示用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;00:03&lt;/strong&gt;（ひらがな表示用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;00:06&lt;/strong&gt;（英語表示用）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;音声のタイムライン上に、黄色い丸（ブックマーク）が3つ付けばOKです。&lt;/p&gt;

&lt;p&gt;[&lt;a href=&quot;https://www.youtube.com/watch?v=AvkKP0TKI8Y&amp;amp;t=752s&quot;&gt;12:32&lt;/a&gt;] ブックマークの追加操作（動画）&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;手順4アニメーションとトリガーの設定&quot;&gt;手順4：アニメーションとトリガーの設定&lt;/h2&gt;

&lt;p&gt;最後に、アニメーションをブックマークに紐付けます。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;3つのテキスト（漢字・ひらがな・英語）すべてに、開始アニメーション（例：フェード、アピールなど）を設定する。&lt;/li&gt;
&lt;li&gt;同様に、終了アニメーション（例：クリア、フェードアウト）も設定する（切り替え時に前の文字を消すため）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アニメーションウィンドウ&lt;/strong&gt;を開き、各アニメーションの開始タイミングを以下のように設定します。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;設定のコツ：&lt;/strong&gt;
アニメーションをダブルクリックし、「タイミング」タブの&lt;strong&gt;「開始のタイミング（トリガー）」&lt;/strong&gt;を使用します。
「次のオブジェクトの再生時に効果を開始」を選択し、先ほど作った&lt;strong&gt;オーディオファイル（ブックマーク名）&lt;/strong&gt;を指定します。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ブックマーク1 (0秒) の設定:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;漢字：表示&lt;/li&gt;
&lt;li&gt;英語：クリア（前のループの残りを消す）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ブックマーク2 (3秒) の設定:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;ひらがな：表示&lt;/li&gt;
&lt;li&gt;漢字：クリア&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ブックマーク3 (6秒) の設定:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;英語：表示&lt;/li&gt;
&lt;li&gt;ひらがな：クリア&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;[&lt;a href=&quot;https://www.youtube.com/watch?v=AvkKP0TKI8Y&amp;amp;t=979s&quot;&gt;16:19&lt;/a&gt;] トリガー設定の詳細手順（動画）&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;技術コラムなぜクリック時に戻す操作が必要なのか&quot;&gt;技術コラム：なぜ「クリック時」に戻す操作が必要なのか？&lt;/h2&gt;

&lt;p&gt;トリガーを設定する際、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/PowerPoint&quot;&gt;PowerPoint&lt;/a&gt;の仕様でアニメーションの順序が勝手に「トリガー設定されたグループ」として分離されることがあります。
意図した順序（例えば、クリアしてから表示など）で動かない場合は、アニメーションウィンドウで該当項目を選択し、タイミングを&lt;strong&gt;「直前の動作と同時」&lt;/strong&gt;や&lt;strong&gt;「直前の動作の後」&lt;/strong&gt;に調整し直して、同じブックマークトリガーの下にグループ化されるよう整えてください。&lt;/p&gt;

&lt;p&gt;動画内では「クリック時に戻す」という表現を使っていますが、これはアニメーショングループが分離してしまった際に、強制的にグループを再編するための回避策の一つです。
[&lt;a href=&quot;https://www.youtube.com/watch?v=AvkKP0TKI8Y&amp;amp;t=1219s&quot;&gt;20:19&lt;/a&gt;] トリガー設定時のグループ分離と修正（動画）&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;まとめ&quot;&gt;まとめ&lt;/h2&gt;

&lt;p&gt;これで、スライドショーを実行すると以下のようになります。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;上部：&lt;/strong&gt; 3秒ごとに「漢字→ひらがな→英語」が勝手に切り替わり続ける。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;下部：&lt;/strong&gt; 自分のマウスクリックに合わせて、プレゼン資料が通常通り進む。&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;一見複雑に見えますが、「長い音声ファイルに目印（ブックマーク）をつけて、それを合図にする」と理解すれば応用が利きます。ぜひ試してみてください。&lt;/p&gt;

&lt;h3 id=&quot;解説動画フルバージョン&quot;&gt;解説動画（フルバージョン）&lt;/h3&gt;

&lt;p&gt;実際の操作の様子は、以下の&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%E9%A5%A4%A5%D6%C7%DB%BF%AE&quot;&gt;ライブ配信&lt;/a&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AB%A5%A4%A5%D6&quot;&gt;アーカイブ&lt;/a&gt;で確認できます。
&lt;a href=&quot;https://www.youtube.com/watch?v=AvkKP0TKI8Y&quot;&gt;https://www.youtube.com/watch?v=AvkKP0TKI8Y&lt;/a&gt;&lt;/p&gt;
</content>        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/cd20b4c8a8f7ae2bcf6e02382df52fddfa999b1a/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260203%2F20260203095536.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>JRAオッズの取得 CNAMEパラメーターを縦にシートへ書き出しにチャレンジ</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/02/01/093000"/>
        <id>hatenablog://entry/17179246901349890208</id>
        <published>2026-02-01T09:30:00+09:00</published>
        <updated>2026-02-01T09:30:00+09:00</updated>        <summary type="html">今回は、メニュー化の前段階として、 CNAMEパラメーターの書き出しにチャレンジしてみたいと思います1.開催を全て取得(ここは固定) 土日によって、注意が必要※日曜日になったら現実的には土曜日のデータはイラナイなど・・・ 開催の区分(列名&quot;開催&quot;)を付けて、CNAMEデータを取得する2.単勝や馬連など、馬券の種類 馬券の種類(列名&quot;馬券種別&quot;)を付けて、データを作成 よくあるデータを増やす作業3.1R-12Rまでのループ 開催,馬券種別,レース番号,CNAME を縦に出力する上記、初回一度だけ全てのパラメーター情報を読み込む そんな パワークエリーを作成してみたいと思います今回の動画:下記ライ…</summary>
        <content type="html">&lt;p&gt;今回は、メニュー化の前段階として、&lt;br /&gt;
CNAMEパラメーターの書き出しにチャレンジしてみたいと思います&lt;/p&gt;&lt;p&gt;1.開催を全て取得(ここは固定)&lt;br /&gt;
土日によって、注意が必要※日曜日になったら現実的には土曜日のデータはイラナイなど・・・&lt;br /&gt;
開催の区分(列名&quot;開催&quot;)を付けて、CNAMEデータを取得する&lt;/p&gt;&lt;p&gt;2.&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;や&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C7%CF%CF%A2&quot;&gt;馬連&lt;/a&gt;など、馬券の種類&lt;br /&gt;
馬券の種類(列名&quot;馬券種別&quot;)を付けて、データを作成&lt;br /&gt;
よくあるデータを増やす作業&lt;/p&gt;&lt;p&gt;3.1R-12Rまでのループ&lt;br /&gt;
開催,馬券種別,レース番号,CNAME&lt;br /&gt;
を縦に出力する&lt;/p&gt;&lt;p&gt;上記、初回一度だけ全てのパラメーター情報を読み込む&lt;br /&gt;
そんな&lt;br /&gt;
パワークエリーを作成してみたいと思います&lt;/p&gt;&lt;p&gt;今回の動画:下記ライブ動画を2倍速で笑いながら気軽に見てください&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/live/tC_84sHW3dg&quot;&gt;https://www.youtube.com/live/tC_84sHW3dg&lt;/a&gt;&lt;/p&gt;&lt;p&gt;過去の関連動画は、下記の再生リストから:&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;オッズ取得関係の再生リストを紹介します&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/playlist?list=PLBFC80A8658C305CE&quot;&gt;https://www.youtube.com/playlist?list=PLBFC80A8658C305CE&lt;/a&gt;&lt;br /&gt;
↑未解決や&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%C2%CE%A5%C6%A5%B9%A5%C8&quot;&gt;単体テスト&lt;/a&gt;の動画が多いのですが、拾い読みてください。&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;1.開催を全て取得(ここは固定)&lt;br /&gt;
03:14 前回ソースを貼り付けてテストする&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/live/tC_84sHW3dg?si=L4CT6TyzDv-KB7fq&amp;t=194&quot;&gt;https://www.youtube.com/live/tC_84sHW3dg?si=L4CT6TyzDv-KB7fq&amp;t=194&lt;/a&gt;&lt;/p&gt;&lt;p&gt;これは、前回までのコードを流用します&lt;/p&gt;&lt;p&gt;クエリー名を&lt;br /&gt;
開催取得&lt;br /&gt;
として、下記のソースを空のクエリーにコピーして確認します&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;//--- JRAオッズのTOPページを取得する パワークエリ 26/01/31テスト
// doActionからパラメーターを切り出す
// 開催日を取り出す

let
    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    strPARA = Text.ToBinary(&amp;#34;cname=pw15oli00/6D&amp;#34;),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(文字列),
    
    テーブルに変換済み = Table.FromList(HTMLソース, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    フィルターされた行 = Table.SelectRows(テーブルに変換済み, each Text.Contains([Column1], &amp;#34;Action&amp;#34;) and Text.Contains([Column1], &amp;#34;回&amp;#34;)),

    条件2_1 = &amp;#34;accessO.html&amp;#39;, &amp;#39;&amp;#34;,
    条件2_2 = &amp;#34;&amp;#39;);&amp;#34;&amp;#34;&amp;gt;&amp;#34;,
    Column2を追加 = Table.AddColumn(フィルターされた行, &amp;#34;Column2&amp;#34;, each Text.BetweenDelimiters([Column1], 条件2_1, 条件2_2)),

    //【ここから追加】Column3を作成
    // &amp;#39;&amp;lt;/i&amp;gt;&amp;#39; と &amp;#39;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;#39; の間のテキストを抽出します
    条件3_1 = &amp;#34;&amp;lt;/i&amp;gt;&amp;#34;,
    条件3_2 = &amp;#34;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;#34;,
    Column3を追加 = Table.AddColumn(Column2を追加, &amp;#34;Column3&amp;#34;, each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),

    // 最終的な結果
    結果 = Column3を追加,
    #&amp;#34;名前が変更された列 &amp;#34; = Table.RenameColumns(結果,{{&amp;#34;Column2&amp;#34;, &amp;#34;CNAME&amp;#34;}, {&amp;#34;Column3&amp;#34;, &amp;#34;開催&amp;#34;}}),
    削除された列 = Table.RemoveColumns(#&amp;#34;名前が変更された列 &amp;#34;,{&amp;#34;Column1&amp;#34;})
in
    削除された列

//----&lt;/pre&gt;&lt;p&gt;1.1 脱線して視聴者指摘を解説&lt;/p&gt;&lt;p&gt;視聴者の皆さんの目って素直にスゴイと思います&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;    Column2を追加 = Table.AddColumn(フィルターされた行, &amp;#34;Column2&amp;#34;, each Text.BetweenDelimiters([Column1], 条件2_1, 条件2_2)),&lt;/pre&gt;&lt;p&gt;で、&lt;br /&gt;
ソースから、&quot;CNAME&quot;を抜き出してます、&lt;br /&gt;
最後に、&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;    // 最終的な結果
    結果 = Column3を追加,
    #&amp;#34;名前が変更された列 &amp;#34; = Table.RenameColumns(結果,{{&amp;#34;Column2&amp;#34;, &amp;#34;CNAME&amp;#34;}, {&amp;#34;Column3&amp;#34;, &amp;#34;開催&amp;#34;}}),
    削除された列 = Table.RemoveColumns(#&amp;#34;名前が変更された列 &amp;#34;,{&amp;#34;Column1&amp;#34;})
in
    削除された列&lt;/pre&gt;&lt;p&gt;で、&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;列名変更、&lt;br /&gt;
Table.RenameColumns(結果,{{&quot;Column2&quot;, &quot;CNAME&quot;}&lt;br /&gt;
↑&quot;Column2&quot;を&quot;CNAME&quot;&lt;/p&gt;&lt;p&gt;同様に、&lt;br /&gt;
{&quot;Column3&quot;, &quot;開催&quot;}&lt;br /&gt;
にしています&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;これって？Column2を追加する時に、&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;Column2を追加 = Table.AddColumn(フィルターされた行, &quot;Column2&quot;, each Text.BetweenDelimiters([Column1], 条件2_1, 条件2_2)),&lt;br /&gt;
を&lt;br /&gt;
Column2を追加 = Table.AddColumn(フィルターされた行, &quot;CNAME&quot;, each Text.BetweenDelimiters([Column1], 条件2_1, 条件2_2)),&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;として、&lt;br /&gt;
列&quot;CNAME&quot;をTable.AddColumnで追加、にすればいいのにね・・・&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;//「列を追加時に名前を指定できるよ」と優しく指摘されたバージョン
//--- JRAオッズのCNAMEを取得する パワークエリ 2026/01/31 修正中002
// doActionからパラメーターを切り出す
// 001 開催日,CNAMEを取り出す

let
    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    strPARA = Text.ToBinary(&amp;#34;cname=pw15oli00/6D&amp;#34;),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(文字列),
    
    テーブルに変換済み = Table.FromList(HTMLソース, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    フィルターされた行 = Table.SelectRows(テーブルに変換済み, each Text.Contains([Column1], &amp;#34;Action&amp;#34;) and Text.Contains([Column1], &amp;#34;回&amp;#34;)),

    条件2_1 = &amp;#34;accessO.html&amp;#39;, &amp;#39;&amp;#34;,
    条件2_2 = &amp;#34;&amp;#39;);&amp;#34;&amp;#34;&amp;gt;&amp;#34;,
    Column2を追加 = Table.AddColumn(フィルターされた行, &amp;#34;CNAME&amp;#34;, each Text.BetweenDelimiters([Column1], 条件2_1, 条件2_2)),

    //【ここから追加】Column3を作成
    // &amp;#39;&amp;lt;/i&amp;gt;&amp;#39; と &amp;#39;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;#39; の間のテキストを抽出します
    条件3_1 = &amp;#34;&amp;lt;/i&amp;gt;&amp;#34;,
    条件3_2 = &amp;#34;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;#34;,
    Column3を追加 = Table.AddColumn(Column2を追加, &amp;#34;開催&amp;#34;, each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),

    // 最終的な結果
    // 不必要な列を消す
    結果 = Table.RemoveColumns(Column3を追加,{&amp;#34;Column1&amp;#34;})
in
    結果

//----&lt;/pre&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;2.&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;や&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C7%CF%CF%A2&quot;&gt;馬連&lt;/a&gt;など、馬券の種類&lt;/p&gt;&lt;p&gt;11:09 パワークエリーで行展開 ぜひ覚えてほしい操作方法&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/live/tC_84sHW3dg?si=90ikw6xTNCc78o1U&amp;t=669&quot;&gt;https://www.youtube.com/live/tC_84sHW3dg?si=90ikw6xTNCc78o1U&amp;t=669&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;パワークエリー 行の展開&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260201/20260201080836.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;パワークエリー 行の展開&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;馬券の種類(列名&quot;馬券種別&quot;)を付けて、データを作成&lt;br /&gt;
よくあるデータを増やす作業&lt;/p&gt;&lt;p&gt;&quot;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;&quot;,&quot;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C7%CF%CF%A2&quot;&gt;馬連&lt;/a&gt;&quot;,&quot;三連複&quot;&lt;br /&gt;
など、&lt;br /&gt;
馬券の種類を増やしたいです&lt;/p&gt;&lt;p&gt;2.1 `リストを追加`して`行展開`の練習&lt;/p&gt;&lt;p&gt;またまた、脱線、パワークエリーの復習&lt;/p&gt;&lt;p&gt;リストを列に追加して、行に展開するのが楽です&lt;br /&gt;
なんて会話をよく聞きますよね？&lt;/p&gt;&lt;p&gt;テストテーブル&lt;/p&gt;&lt;p&gt;商品名&lt;br /&gt;
コート&lt;br /&gt;
セーター&lt;br /&gt;
Tシャツ&lt;br /&gt;
紙コップ&lt;/p&gt;&lt;p&gt;が、あったら、テーブルをまず読み込む&lt;/p&gt;&lt;p&gt;次に、メニューから、&lt;br /&gt;
列の追加&lt;br /&gt;
カスタム列&lt;br /&gt;
を選択して&lt;/p&gt;&lt;p&gt;= { &quot;S&quot;,&quot;M&quot;,&quot;L&quot; }&lt;br /&gt;
とサイズを入力します&lt;/p&gt;&lt;p&gt;すると、&lt;br /&gt;
Listとして、列が追加されます&lt;/p&gt;&lt;p&gt;追加された列に対して、&lt;br /&gt;
列右端の小さな展開アイコンから&lt;br /&gt;
[ 新しい行に展開 ]&lt;br /&gt;
を選択すると、&lt;/p&gt;&lt;p&gt;これが、先輩たちがよく言ってる&lt;br /&gt;
「そんなのパワークエリーで`リストを追加`して`行展開`すればいいじゃん」&lt;br /&gt;
の操作です&lt;/p&gt;&lt;p&gt;2.2 リスト { &quot;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;&quot;,&quot;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C7%CF%CF%A2&quot;&gt;馬連&lt;/a&gt;&quot;,&quot;三連複&quot; } を追加して行展開してみます&lt;/p&gt;&lt;p&gt;パワークエリーを修正します&lt;/p&gt;&lt;p&gt;メニューから、&lt;br /&gt;
列の追加&lt;br /&gt;
カスタム列&lt;br /&gt;
を選択して&lt;/p&gt;&lt;p&gt;列名 = 馬券の種類&lt;br /&gt;
= { &quot;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;&quot;,&quot;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C7%CF%CF%A2&quot;&gt;馬連&lt;/a&gt;&quot;,&quot;三連複&quot; }&lt;/p&gt;&lt;p&gt;簡単にテーブル×(かける)リストで作成できました。&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;3.1R-12Rまでのループ&lt;/p&gt;&lt;p&gt;21:29 &quot;馬券の種類&quot;を関数のパラメーターで受け取り、フィルターの条件にする&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/live/tC_84sHW3dg?si=-j1B888yV2OOcYKf&amp;t=1289&quot;&gt;https://www.youtube.com/live/tC_84sHW3dg?si=-j1B888yV2OOcYKf&amp;t=1289&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;関数化とテスト&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260201/20260201080936.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;関数化とテスト&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;先週作成した関数に、&quot;馬券の種類&quot;を処理するコードを追加します&lt;/p&gt;&lt;p&gt;空のクエリーを作成します&lt;/p&gt;&lt;p&gt;クエリーの名前を&lt;br /&gt;
開催と種類別にCNAME取得&lt;br /&gt;
と&lt;br /&gt;
名前を変更して、下記のソースを貼り付けます(コピペしてください)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;詳細エディターを開き、下記をコピーする&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;// 関数化して開催地別、馬券の種類別のCNAMEを返す 2026/01/31テスト
// 関数で引数を受け取り、テーブルを返す

(str開催地CNAME as text, str開催地と開催日 as text, str馬券種類 as text) as table =&amp;gt;
let
    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    // 引数で受け取った開催地のCNAMEをパラメーターとする 26/01/25修正
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; str開催地CNAME,
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(文字列),

    // 現在時刻を取得し、文字列に変換
    現在時刻 = DateTime.ToText(DateTime.LocalNow()),
    LISTの頭に時刻を追加 = {&amp;#34;取得時刻&amp;#34;} &amp;amp; {現在時刻} &amp;amp; HTMLソース,

    // LISTをテーブルに変換して、フィルターをかける
    テーブルに変換済み = Table.FromList(LISTの頭に時刻を追加, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    フィルターされた行 = Table.SelectRows(テーブルに変換済み, each Text.Contains([Column1], &amp;#34;Action&amp;#34;) and Text.Contains([Column1], str馬券種類)),

    // 5.2 doActionのパラメーターを抜き出し Column3
    条件3_1 = &amp;#34;doAction(&amp;#39;/JRADB/accessO.html&amp;#39;, &amp;#39;&amp;#34;,
    // コメントアウト 条件3_2 = &amp;#34;&amp;#39;);&amp;#34;&amp;#34;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;単勝&amp;lt;/span&amp;gt;&amp;#34;,
    条件3_2 = &amp;#34;&amp;#39;&amp;#34;, //←でいいのか？間の指定を今まで勘違いしてた・・・？テストしてみる
    CNAMEを追加 = Table.AddColumn(フィルターされた行, &amp;#34;CNAME&amp;#34;, each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),

    //5.1 レース番号の作成 ダミーの連番インデックス列を追加します (0から始まる連番が振られます)
    インデックス列の追加 = Table.AddIndexColumn(CNAMEを追加, &amp;#34;Index&amp;#34;, 0, 1),

    //インデックス列が0からなので、+１してColumn2を作成します
    レース番号を追加 = Table.AddColumn(インデックス列の追加, &amp;#34;レース番号&amp;#34;, each Number.ToText([Index] + 1) &amp;amp; &amp;#34;レース&amp;#34;),

    //場所を追加する
    追加された場所 = Table.AddColumn(レース番号を追加, &amp;#34;今週の開催地&amp;#34;, each str開催地と開催日),

    //馬券の種類を追加する
    追加された種類 = Table.AddColumn(追加された場所, &amp;#34;馬券の種類&amp;#34;, each str馬券種類),

    //不要な列を削除する
    列削除 = Table.RemoveColumns(追加された種類,{&amp;#34;Column1&amp;#34;, &amp;#34;Index&amp;#34;}),

    //最終的な結果
    結果 = 列削除

in
    結果

//-------&lt;/pre&gt;&lt;p&gt;貼り付けると、&lt;br /&gt;
次は、パラメーターを入力してテストします&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;3.1 &lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%C2%CE%A5%C6%A5%B9%A5%C8&quot;&gt;単体テスト&lt;/a&gt;&lt;/p&gt;&lt;p&gt;下記、パラメーターで単体動作を確認します&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;pw15orl00052026010120260131/88	&lt;br /&gt;
1回東京1日&lt;br /&gt;
&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;3連複 に注意&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;3.2 &lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%B7%EB%B9%E7%A5%C6%A5%B9%A5%C8&quot;&gt;結合テスト&lt;/a&gt;&lt;/p&gt;&lt;p&gt;ここで、呼ぶ側を修正します&lt;br /&gt;
開催取得&lt;br /&gt;
へ戻り、下記の修正を加えます&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;    // ソースのクエリー結果(テーブル)をレコードのリストに変換
    lst処理リスト = Table.ToRecords(T開催取得),

    // ループ処理 リストを順番に処理する List.Transformで変換するのが順番に呼び出すイメージ？
    テーブル一覧 = List.Transform(
        lst処理リスト,
        each 開催と種類別にCNAME取得(_[CNAME], _[開催], _[馬券の種類])
    ),

    // 結合,上でテーブルのリストが作成されているので、それを一つにつなげる
    t_all = Table.Combine(テーブル一覧)
in
    t_all&lt;/pre&gt;&lt;p&gt;ポイントは、&lt;br /&gt;
結果から、&lt;br /&gt;
リストを作成して、&lt;br /&gt;
開催と種類別にCNAME取得(_[CNAME], _[開催], _[馬券の種類])&lt;br /&gt;
を&lt;br /&gt;
呼ぶと、&lt;br /&gt;
CNAMEテーブルが返り、&lt;br /&gt;
最後に、テーブルのリストを結果にしただけです&lt;/p&gt;&lt;p&gt;ここで、現在の不具合、&lt;br /&gt;
明日の前日発売11レースが1レースになっていることに気が付く・・・おいおい、やってんなぁ。&lt;br /&gt;
※あとで、説明する、このまま進める&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;3.3 結果をテスト&lt;/p&gt;&lt;p&gt;CNAME一覧が正確に受け取れたか？&lt;br /&gt;
テストしてみます&lt;br /&gt;
※過去に作成した&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;の&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%C2%CE%A5%C6%A5%B9%A5%C8&quot;&gt;単体テスト&lt;/a&gt;に値を渡してみます(TABLE0番目だけ表示するテスト用)&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;p&gt;4.まだまだある、問題点&lt;/p&gt;&lt;p&gt;41:31 不具合やバグの発表 視聴者の心の声を勝手に再現「おっさん、キーボードを強くたたくなよ」「ライブ前にバグをつぶしとけよ」&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/live/tC_84sHW3dg?si=Y5QYW27UknZKPz-t&amp;t=2491&quot;&gt;https://www.youtube.com/live/tC_84sHW3dg?si=Y5QYW27UknZKPz-t&amp;t=2491&lt;/a&gt; &lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;不具合バグが多すぎます&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260201/20260201081036.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;不具合バグが多すぎます&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;br /&gt;
完成と思って、安心するのは早いです。&lt;br /&gt;
現在判明している問題点&lt;/p&gt;&lt;p&gt;①ループの作りが悪いので、サイトに負荷と処理時間がかかる&lt;/p&gt;&lt;p&gt;今回、馬券の種類別にループを追加しましたが、ループの作りが&lt;/p&gt;&lt;p&gt;・TOPページからオッズ開催日の取得 (これは1回)&lt;br /&gt;
・開催×馬券の種類 リストで行展開&lt;br /&gt;
このデータから、↑この行数分、サブの関数を呼ぶ&lt;br /&gt;
サブ関数 開催と種類別にCNAME取得(_[CNAME], _[開催], _[馬券の種類]) では、&lt;br /&gt;
受け取った、CNAMEを&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;サーバーにPOSTして結果を受け取り処理&lt;br /&gt;
・馬券の種類でフィルター、結果テーブルを返す&lt;/p&gt;&lt;p&gt;↑、同じCNAME(開催場所)を複数回読み込む&lt;/p&gt;&lt;p&gt;このループだと、同じデータを取得して、フィルターだけ違う・・・&lt;br /&gt;
本来なら、&lt;br /&gt;
1回読み込み後、&lt;br /&gt;
フィルター違いのループにするべきですよねぇ～&lt;/p&gt;&lt;p&gt;②レース番号が固定処理だと、土曜日に前日オッズ問題が発生する&lt;br /&gt;
レース番号を固定のインデックスで振って、セットしているので&lt;br /&gt;
    //5.1 レース番号の作成 ダミーの連番インデックス列を追加します (0から始まる連番が振られます)&lt;br /&gt;
    インデックス列の追加 = Table.AddIndexColumn(&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;CNAMEを追加, &quot;Index&quot;, 0, 1),&lt;/p&gt;&lt;p&gt;    //インデックス列が0からなので、+１してColumn2を作成します&lt;br /&gt;
    レース番号を追加 = Table.AddColumn(インデックス列の追加, &quot;レース番号&quot;, each Number.ToText([Index] + 1) &amp; &quot;レース&quot;),&lt;/p&gt;&lt;p&gt;↑&lt;br /&gt;
前日オッズで、&lt;br /&gt;
メインの11レースのみCNAMEが提供される、土曜日で不具合・内容違いのエラーになる。&lt;br /&gt;
(11レースを1レースと判断してしまう)&lt;/p&gt;&lt;p&gt;なんて、①と②の問題が、既に残っていたり・・・&lt;/p&gt;&lt;p&gt;③&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C7%CF%CF%A2&quot;&gt;馬連&lt;/a&gt;～&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%BB%B0%CF%A2%C3%B1&quot;&gt;三連単&lt;/a&gt;まで、全てのフォーマットを取得するようにサンプルを&lt;br /&gt;
現在、確認用でTable0番目だけ表示したり、テストの破片がまとまっていないので、まとめないと・・・&lt;br /&gt;
CNAMEが取得しやすくなったので、&lt;br /&gt;
各フォーマットを作らないとなぁ・・・&lt;/p&gt;&lt;p&gt;④メニュー化&lt;br /&gt;
ここから、メニュー化作業もあるし、&lt;br /&gt;
先は、長いですね。&lt;/p&gt;&lt;p&gt;以上、中間報告のライブでした。&lt;/p&gt;&lt;p&gt;一つでも、&lt;br /&gt;
パワークエリー,繰り返しのWebから取得処理など&lt;br /&gt;
ヒントとなれば幸いです&lt;/p&gt;&lt;p&gt;メニュー化、処理の見直し含め、少々お待ちください。&lt;/p&gt;&lt;p&gt;では、またぁ・・・・&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;01:04:00 完成した&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&quot;&gt;ソースコード&lt;/a&gt;の貼り付け方 と 再度またテスト&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/live/tC_84sHW3dg?si=oO-1XNd2I2Amb2CN&amp;t=3821&quot;&gt;https://www.youtube.com/live/tC_84sHW3dg?si=oO-1XNd2I2Amb2CN&amp;t=3821&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2026/01/31 テストまとめ&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;//呼ばれる関数

クエリーの名前を
開催と種類別にCNAME取得
と
名前を変更して、下記のソースを貼り付けます(コピペしてください)

// 関数化して開催地別、馬券の種類別のCNAMEを返す 2026/01/31テスト
// 関数で引数を受け取り、テーブルを返す

(str開催地CNAME as text, str開催地と開催日 as text, str馬券種類 as text) as table =&amp;gt;
let
    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    // 引数で受け取った開催地のCNAMEをパラメーターとする 26/01/25修正
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; str開催地CNAME,
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(文字列),

    // 現在時刻を取得し、文字列に変換
    現在時刻 = DateTime.ToText(DateTime.LocalNow()),
    LISTの頭に時刻を追加 = {&amp;#34;取得時刻&amp;#34;} &amp;amp; {現在時刻} &amp;amp; HTMLソース,

    // LISTをテーブルに変換して、フィルターをかける
    テーブルに変換済み = Table.FromList(LISTの頭に時刻を追加, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    フィルターされた行 = Table.SelectRows(テーブルに変換済み, each Text.Contains([Column1], &amp;#34;Action&amp;#34;) and Text.Contains([Column1], str馬券種類)),

    // 5.2 doActionのパラメーターを抜き出し Column3
    条件3_1 = &amp;#34;doAction(&amp;#39;/JRADB/accessO.html&amp;#39;, &amp;#39;&amp;#34;,
    // コメントアウト 条件3_2 = &amp;#34;&amp;#39;);&amp;#34;&amp;#34;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;単勝&amp;lt;/span&amp;gt;&amp;#34;,
    条件3_2 = &amp;#34;&amp;#39;&amp;#34;, //←でいいのか？間の指定を今まで勘違いしてた・・・？テストしてみる
    CNAMEを追加 = Table.AddColumn(フィルターされた行, &amp;#34;CNAME&amp;#34;, each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),

    //5.1 レース番号の作成 ダミーの連番インデックス列を追加します (0から始まる連番が振られます)
    インデックス列の追加 = Table.AddIndexColumn(CNAMEを追加, &amp;#34;Index&amp;#34;, 0, 1),

    //インデックス列が0からなので、+１してColumn2を作成します
    レース番号を追加 = Table.AddColumn(インデックス列の追加, &amp;#34;レース番号&amp;#34;, each Number.ToText([Index] + 1) &amp;amp; &amp;#34;レース&amp;#34;),

    //場所を追加する
    追加された場所 = Table.AddColumn(レース番号を追加, &amp;#34;今週の開催地&amp;#34;, each str開催地と開催日),

    //馬券の種類を追加する
    追加された種類 = Table.AddColumn(追加された場所, &amp;#34;馬券の種類&amp;#34;, each str馬券種類),

    //不要な列を削除する
    列削除 = Table.RemoveColumns(追加された種類,{&amp;#34;Column1&amp;#34;, &amp;#34;Index&amp;#34;}),

    //最終的な結果
    結果 = 列削除

in
    結果

//-------&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;
２つ目、関数を呼ぶ方&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;
// メイン処理

// 名前は何でも

//--- JRAオッズのTOPページを取得する パワークエリ 26/01/31テスト
// doActionからパラメーターを切り出す
// 開催日を取り出す

let
    // JRAホームページからソースを取得する POST送信で結果を受け取る
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    strPARA = Text.ToBinary(&amp;#34;cname=pw15oli00/6D&amp;#34;),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(文字列),
    
    テーブルに変換済み = Table.FromList(HTMLソース, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    フィルターされた行 = Table.SelectRows(テーブルに変換済み, each Text.Contains([Column1], &amp;#34;Action&amp;#34;) and Text.Contains([Column1], &amp;#34;回&amp;#34;)),

    条件2_1 = &amp;#34;accessO.html&amp;#39;, &amp;#39;&amp;#34;,
    条件2_2 = &amp;#34;&amp;#39;);&amp;#34;&amp;#34;&amp;gt;&amp;#34;,
    Column2を追加 = Table.AddColumn(フィルターされた行, &amp;#34;CNAME&amp;#34;, each Text.BetweenDelimiters([Column1], 条件2_1, 条件2_2)),

    //【ここから追加】Column3を作成
    // &amp;#39;&amp;lt;/i&amp;gt;&amp;#39; と &amp;#39;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;#39; の間のテキストを抽出します
    条件3_1 = &amp;#34;&amp;lt;/i&amp;gt;&amp;#34;,
    条件3_2 = &amp;#34;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;#34;,
    Column3を追加 = Table.AddColumn(Column2を追加, &amp;#34;開催&amp;#34;, each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),

    // 最終的な結果
    結果 = Column3を追加,
    削除された列 = Table.RemoveColumns(結果,{&amp;#34;Column1&amp;#34;}),
    追加されたカスタム = Table.AddColumn(削除された列, &amp;#34;馬券の種類&amp;#34;, each { &amp;#34;単勝&amp;#34;,&amp;#34;馬連&amp;#34;,&amp;#34;3連複&amp;#34; }),
    T開催取得 = Table.ExpandListColumn(追加されたカスタム, &amp;#34;馬券の種類&amp;#34;),
    // ソースのクエリー結果(テーブル)をレコードのリストに変換
    lst処理リスト = Table.ToRecords(T開催取得),

    // ループ処理 リストを順番に処理する List.Transformで変換するのが順番に呼び出すイメージ？
    テーブル一覧 = List.Transform(
        lst処理リスト,
        each 開催と種類別にCNAME取得(_[CNAME], _[開催], _[馬券の種類])
    ),

    // 結合,上でテーブルのリストが作成されているので、それを一つにつなげる
    t_all = Table.Combine(テーブル一覧)
in
    t_all
//----
&lt;/pre&gt;</content>        
        <category term="Excel" label="Excel" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/8437a3c1c2b9872439125a437036f98b3d5d1241/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260201%2F20260201080836.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>【Excelパワークエリ】List.Transformによるループ処理コード解説 JRA全12レースのCNAMEを一括取得！</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/01/26/120000"/>
        <id>hatenablog://entry/17179246901347903586</id>
        <published>2026-01-26T12:00:00+09:00</published>
        <updated>2026-01-26T12:00:00+09:00</updated>        <summary type="html">JRA全レースのCNAMEを一括書き出し！パワークエリの関数ループで自動化にチャレンジ JRAのオッズデータを分析する際、毎回「開催地」や「レース番号」ごとにCNAMEパラメーターを手動でコピペするのは苦行ですよね。今回は、メニュー化の前段階として、&#39;&#39;パワークエリの「関数化」と「ループ処理」&#39;&#39;を駆使し、全開催地・全12レースの単勝CNAMEを一括でテーブルに書き出す方法を紹介します。 AIにブログ編集も依頼しました・・・ 今回のチャレンジ内容 開催一覧（中山・京都・小倉など）の自動取得 単勝CNAMEを返すカスタム関数の作成 &#39;&#39;List.Transform&#39;&#39; による複数開催地のループ処…</summary>
        <content type="html">
&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;JRA全レースのCNAMEを一括書き出しパワークエリの関数ループで自動化にチャレンジ&quot;&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;全レースのCNAMEを一括書き出し！パワークエリの関数ループで自動化にチャレンジ&lt;/h3&gt;
    &lt;p&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;のオッズデータを分析する際、毎回「開催地」や「レース番号」ごとにCNAMEパラメーターを手動でコピペするのは苦行ですよね。&lt;/p&gt;&lt;p&gt;今回は、メニュー化の前段階として、&#39;&#39;パワークエリの「関数化」と「ループ処理」&#39;&#39;を駆使し、全開催地・全12レースの&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;CNAMEを一括でテーブルに書き出す方法を紹介します。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIにブログ編集も依頼しました・・・&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260126/20260126100323.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIにブログ編集も依頼しました・・・&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;今回のチャレンジ内容&quot;&gt;今回のチャレンジ内容&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;開催一覧（中山・京都・小倉など）の自動取得&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;CNAMEを返すカスタム関数の作成&lt;/li&gt;
&lt;li&gt;&#39;&#39;List.Transform&#39;&#39; による複数開催地のループ処理&lt;/li&gt;
&lt;li&gt;全12レース分のパラメーターを一括結合&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;1-開催地一覧を取得する親クエリ&quot;&gt;1. 開催地一覧を取得する（親クエリ）&lt;/h4&gt;
    &lt;p&gt;まずは「今日、どの競馬場でレースがあるか」を取得します。これは以前作成したコードを流用し、出力結果を「CNAME」と「開催名」のテーブルにします。&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;let
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    strPARA = Text.ToBinary(&amp;#34;cname=pw15oli00/6D&amp;#34;),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(文字列),
    テーブルに変換済み = Table.FromList(HTMLソース, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    フィルターされた行 = Table.SelectRows(テーブルに変換済み, each Text.Contains([Column1], &amp;#34;Action&amp;#34;) and Text.Contains([Column1], &amp;#34;回&amp;#34;)),
    条件2_1 = &amp;#34;accessO.html&amp;#39;, &amp;#39;&amp;#34;,
    条件2_2 = &amp;#34;&amp;#39;);&amp;#34;&amp;#34;&amp;gt;&amp;#34;,
    Column2を追加 = Table.AddColumn(フィルターされた行, &amp;#34;Column2&amp;#34;, each Text.BetweenDelimiters([Column1], 条件2_1, 条件2_2)),
    条件3_1 = &amp;#34;&amp;lt;/i&amp;gt;&amp;#34;,
    条件3_2 = &amp;#34;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;#34;,
    Column3を追加 = Table.AddColumn(Column2を追加, &amp;#34;Column3&amp;#34;, each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),
    #&amp;#34;名前が変更された列 &amp;#34; = Table.RenameColumns(Column3を追加,{{&amp;#34;Column2&amp;#34;, &amp;#34;CNAME&amp;#34;}, {&amp;#34;Column3&amp;#34;, &amp;#34;開催&amp;#34;}}),
    削除された列 = Table.RemoveColumns(#&amp;#34;名前が変更された列 &amp;#34;,{&amp;#34;Column1&amp;#34;})
in
    削除された列&lt;/pre&gt;&lt;p&gt;解説動画はこちら： [04:11](&lt;a href=&quot;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=251s&quot;&gt;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=251s&lt;/a&gt;)&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;2-パラメーターを受け取り単勝CNAMEを返す関数&quot;&gt;2. パラメーターを受け取り「&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;CNAME」を返す関数&lt;/h4&gt;
    &lt;p&gt;次に、開催地のCNAMEを渡すと、その場所の1R〜12Rまでの&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;パラメーターをテーブルで返す&#39;&#39;カスタム関数&#39;&#39;を作成します。&lt;/p&gt;&lt;p&gt;クエリ名を「&#39;&#39;開催別の&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;CNAME&#39;&#39;」として保存してください。&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;(str開催地CNAME as text, str開催地と開催日 as text) as table =&amp;gt;
let
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; str開催地CNAME,
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    HTMLソース = Lines.FromText(文字列),
    現在時刻 = DateTime.ToText(DateTime.LocalNow()),
    LISTの頭に時刻を追加 = {&amp;#34;取得時刻&amp;#34;} &amp;amp; {現在時刻} &amp;amp; HTMLソース,
    テーブルに変換済み = Table.FromList(LISTの頭に時刻を追加, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    フィルターされた行 = Table.SelectRows(テーブルに変換済み, each Text.Contains([Column1], &amp;#34;Action&amp;#34;) and Text.Contains([Column1], &amp;#34;単勝&amp;#34;)),
    条件3_1 = &amp;#34;doAction(&amp;#39;/JRADB/accessO.html&amp;#39;, &amp;#39;&amp;#34;,
    条件3_2 = &amp;#34;&amp;#39;&amp;#34;,
    単勝CNAMEを追加 = Table.AddColumn(フィルターされた行, &amp;#34;単勝CNAME&amp;#34;, each Text.BetweenDelimiters([Column1], 条件3_1, 条件3_2)),
    インデックス列の追加 = Table.AddIndexColumn(単勝CNAMEを追加, &amp;#34;Index&amp;#34;, 0, 1),
    レース番号を追加 = Table.AddColumn(インデックス列の追加, &amp;#34;レース番号&amp;#34;, each Number.ToText([Index] + 1) &amp;amp; &amp;#34;レース&amp;#34;),
    追加された場所 = Table.AddColumn(レース番号を追加, &amp;#34;今週の開催地&amp;#34;, each str開催地と開催日),
    列削除 = Table.RemoveColumns(追加された場所,{&amp;#34;Column1&amp;#34;, &amp;#34;Index&amp;#34;})
in
    列削除&lt;/pre&gt;&lt;p&gt;解説動画はこちら： [10:43](&lt;a href=&quot;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=643s&quot;&gt;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=643s&lt;/a&gt;)&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;3-ListTransformによる一括結合結合テスト&quot;&gt;3. List.Transformによる一括結合（&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%B7%EB%B9%E7%A5%C6%A5%B9%A5%C8&quot;&gt;結合テスト&lt;/a&gt;）&lt;/h4&gt;
    &lt;p&gt;最後に、手順1で取得した開催地リストに対して、手順2の関数をループ（繰り返し）実行させます。&lt;/p&gt;&lt;p&gt;「開催取得」クエリの最終行に、以下の処理を追加します。&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;    // ソースのテーブルをレコードのリストに変換
    lst処理リスト = Table.ToRecords(削除された列),

    // 関数を順番に呼び出してテーブルのリストを作成
    テーブル一覧 = List.Transform(
        lst処理リスト,
        each 開催別の単勝CNAME(_[CNAME], _[開催])
    ),

    // 全てのテーブルを一つに結合
    t_all = Table.Combine(テーブル一覧)
in
    t_all&lt;/pre&gt;&lt;p&gt;解説動画はこちら： [18:33](&lt;a href=&quot;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=1113s&quot;&gt;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=1113s&lt;/a&gt;)&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;今後の課題とAIアドバイス&quot;&gt;今後の課題とAIアド&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%B9&quot;&gt;バイス&lt;/a&gt;&lt;/h4&gt;
    &lt;p&gt;今回の実装で、全レース（1R〜12R）のパラメーターがズラッと並ぶ壮快な結果が得られました。 [22:51](&lt;a href=&quot;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=1371s&quot;&gt;https://www.youtube.com/watch?v=gim77eYlEHM&amp;t=1371s&lt;/a&gt;)&lt;/p&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;未解決のポイント&quot;&gt;未解決のポイント&lt;/h5&gt;
    
&lt;ul&gt;
&lt;li&gt;今回は「&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;」のみ。&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C7%CF%CF%A2&quot;&gt;馬連&lt;/a&gt;、3連複、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/3%CF%A2%C3%B1&quot;&gt;3連単&lt;/a&gt;など全馬券種への対応が必要。&lt;/li&gt;
&lt;li&gt;取得したリストからコンボボックス等で選択できる「メニュー画面」の構築。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;AIからのアドバイス&quot;&gt;AIからのアド&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%B9&quot;&gt;バイス&lt;/a&gt;&lt;/h5&gt;
    
    &lt;blockquote&gt;
        &lt;p&gt;現在の設計では「場所」×「レース」のループですが、ここに「馬券種」のリストを追加してさらにネスト（&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C6%FE%A4%EC%BB%D2&quot;&gt;入れ子&lt;/a&gt;）したループを組めば、文字通り「&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;の全パラメーター」を初回に一括キャッシュすることが可能です。&#39;&#39;Table.Combine&#39;&#39; は非常に強力ですが、データ量が増えるとWebリクエストの回数が増えるため、実行速度には注意してください。&lt;/p&gt;

    &lt;/blockquote&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jra.go.jp/&quot;&gt;JRA&amp;#x516C;&amp;#x5F0F;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Power+Query+List.Transform+使い方&quot;&gt;Google&amp;#x691C;&amp;#x7D22;&amp;#xFF1A;Power Query List.Transform &amp;#x4F7F;&amp;#x3044;&amp;#x65B9;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;来週は、これらのリストを使って「メニュー化」に挑戦したいと思います！&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>        
        <category term="Excel" label="Excel" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/25b6ac0c27a4e8b938f6521a7459d030eedb18fa/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260126%2F20260126100323.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>26-01-22に書きました YouTubeのフィルターで回数順が無い、うそのような本当の話？</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/01/22/232208"/>
        <id>hatenablog://entry/17179246901346743221</id>
        <published>2026-01-22T23:22:08+09:00</published>
        <updated>2026-01-22T23:40:55+09:00</updated>        <summary type="html">速攻で訂正・・・ https://support.google.com/youtube/thread/400640375?hl=ja より • [優先度] メニュー: [並べ替え] メニューが [優先度] メニューに名称変更されました。このメニューは、絞り込み機能の利便性を最大限まで高めることを目的として更新されています。 • [人気度] フィルタ: [視聴回数] の並べ替えオプションの名称が [人気度] に変更されました。 やばい、Xの指摘って速いな 質問: YouTubeのフィルターで視聴回数って無くなったんですか？おっさんの回答:はい、なくなってますね・・・ PCなら、面倒だけど 検索後…</summary>
        <content type="html">&lt;p&gt;速攻で訂正・・・&lt;br /&gt;
&lt;a href=&quot;https://support.google.com/youtube/thread/400640375?hl=ja&quot;&gt;https://support.google.com/youtube/thread/400640375?hl=ja&lt;/a&gt;&lt;br /&gt;
より&lt;br /&gt;
• [優先度] メニュー: [並べ替え] メニューが [優先度] メニューに名称変更されました。このメニューは、絞り込み機能の利便性を最大限まで高めることを目的として更新されています。&lt;br /&gt;
• [人気度] フィルタ: [視聴回数] の並べ替えオプションの名称が [人気度] に変更されました。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;やばい、Xの指摘って速いな&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260122/20260122234031.jpg&quot; width=&quot;949&quot; height=&quot;532&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;やばい、Xの指摘って速いな&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;br /&gt;
&lt;hr&gt;&lt;br /&gt;
質問:&lt;br /&gt;
&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;のフィルターで視聴回数って無くなったんですか？&lt;/p&gt;&lt;p&gt;おっさんの回答:&lt;/p&gt;&lt;p&gt;はい、なくなってますね・・・&lt;br /&gt;
&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260109/20260109232502.jpg&quot; width=&quot;960&quot; height=&quot;566&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;PCなら、面倒だけど&lt;br /&gt;
検索後のURLに&lt;br /&gt;
&amp;sp=CAMSAhAB&lt;br /&gt;
をつけると&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/results?search_query=hikakin&amp;sp=CAMSAhAB&quot;&gt;https://www.youtube.com/results?search_query=hikakin&amp;sp=CAMSAhAB&lt;/a&gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/results?search_query=vtuber&amp;sp=CAMSAhAB&quot;&gt;https://www.youtube.com/results?search_query=vtuber&amp;sp=CAMSAhAB&lt;/a&gt;&lt;br /&gt;
とか、&lt;br /&gt;
それっぽくは表示されますが、&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;検索フィルターに回数順が無い、うそのような本当の話？&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260122/20260122231955.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;検索フィルターに回数順が無い、うそのような本当の話？&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;キーワードXXXXの一週間以内で回数順&lt;br /&gt;
とか&lt;br /&gt;
やるのが大変だし、&lt;/p&gt;&lt;p&gt;いつまで、&amp;sp=CAMSAhAB が 有効か？わからないし・・・&lt;/p&gt;
</content>        
        <category term="雑談" label="雑談" />
        
        <category term="備忘録" label="備忘録" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/8df520d753a30cca957cd05393ecb082d7077d56/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260109%2F20260109232502.jpg" type="image/jpeg" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
    <entry>
        <title>AIに字幕修正を依頼するとスカスカになってしまった(笑)意味ない言葉も少しは残してください・・・</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/01/22/150000"/>
        <id>hatenablog://entry/17179246901346582655</id>
        <published>2026-01-22T15:00:00+09:00</published>
        <updated>2026-01-22T15:00:03+09:00</updated>        <summary type="html">AIに字幕修正を依頼するとスカスカになってしまった(笑)意味ない言葉も少しは残してください・・・ 私のような人は、いないと思いますが (※そもそも、字幕の前に必要ないつなぎや無音で迷っている部分は、積極的に動画編集でカットするから、字幕にならないよね・・・)今回のAI指示文、一つでもヒントとなれば幸いです。私、Ken3の口癖リスト ``` スイマセン ごめんなさい こんな感じです 変ですけど ``` と良く動画内でしゃべっているので、 自動字幕や文字起こしでヒドイことになっている。よし、AIに字幕のカット修正を依頼ぞと思い、 依頼すると結果は修正された字幕がスカスカ・・・ 修正方法もAIに聞く…</summary>
        <content type="html">&lt;p&gt;AIに字幕修正を依頼するとスカスカになってしまった(笑)意味ない言葉も少しは残してください・・・&lt;br /&gt;
私のような人は、いないと思いますが&lt;br /&gt;
(※そもそも、字幕の前に必要ないつなぎや無音で迷っている部分は、積極的に動画編集でカットするから、字幕にならないよね・・・)&lt;/p&gt;&lt;p&gt;今回のAI指示文、一つでもヒントとなれば幸いです。&lt;/p&gt;&lt;p&gt;私、Ken3の口癖リスト&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;```&lt;br /&gt;
スイマセン&lt;br /&gt;
ごめんなさい&lt;br /&gt;
こんな感じです&lt;br /&gt;
変ですけど&lt;br /&gt;
```&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;と良く動画内でしゃべっているので、&lt;br /&gt;
自動字幕や文字起こしでヒドイことになっている。&lt;/p&gt;&lt;p&gt;よし、AIに字幕のカット修正を依頼ぞと思い、&lt;br /&gt;
依頼すると結果は修正された字幕がスカスカ・・・&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;修正方法もAIに聞くおっさんの姿、イラストのようなキレイな部屋に住みたいなぁ・・・&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260122/20260122132725.png&quot; width=&quot;1200&quot; height=&quot;1200&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;修正方法もAIに聞くおっさんの姿、イラストのようなキレイな部屋に住みたいなぁ・・・&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;1.まず、AIに指示分の修正方法を聞く&lt;/p&gt;&lt;p&gt;&lt;b&gt;おっさんが、AIへ聞く&lt;/b&gt;&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;目的・やりたいこと:Gemを修正したい&lt;br /&gt;
```&lt;br /&gt;
スイマセン&lt;br /&gt;
ごめんなさい&lt;br /&gt;
こんな感じです&lt;br /&gt;
変ですけど&lt;br /&gt;
```&lt;br /&gt;
上記口癖を、文脈から必要ある場合のみ残し、不必要な謝罪の繰り返しは削除する&lt;br /&gt;
そんな指示を現在のGemに入れるには、&lt;br /&gt;
1.具体的な指示文&lt;br /&gt;
2.今のGemに入れる場所&lt;br /&gt;
を&lt;br /&gt;
教えてください。&lt;/p&gt;

&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;全部カットではなく文脈から必要ある場合のみ残しの指示が難しいと思いますが&quot;&gt;全部カットではなく、「文脈から必要ある場合のみ残し」の指示が難しいと思いますが*&lt;/h3&gt;
    &lt;p&gt;次回から、新Gemを使ってみたいと考えているので、修正方法を教えて&lt;/p&gt;&lt;p&gt;&lt;b&gt;AI回答:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;**特定口癖（Ken3構文）の文脈判断処理:**

以下のキーワードは話者（Ken3）の口癖です。一律削除はせず、以下の基準で**「意味のある言葉」か「無意識のフィラー」かを判断**して処理してください。

* **対象語句:** 「すいません」「ごめんなさい」「こんな感じです」「変ですけど」

* **1. 「すいません」「ごめんなさい」の処理ルール:**
    * **【残す】（本当に謝っている場合）:**
        * 直前に操作ミスをした場合（例：「あ、間違えた、すいません」）
        * 間違った情報を伝えて訂正する場合（例：「AではなくBでした、ごめんなさい」）
        * PCの処理待ちなどで視聴者を長く待たせる場合
    * **【削除】（口癖・つなぎ言葉の場合）:**
        * 文頭の無意味な謝罪（例：「えー、すいません、では解説します」→「では解説します」）
        * 言い淀みや謙遜（例：「説明が下手ですいませんが」→ 削除または「説明します」）
        * 文脈上、謝る必要がない場面

* **2. 「こんな感じです」「～って感じです」の処理ルール:**
    * **【言い換え】:**
        * 文末が曖昧になる場合、断定形や適切な結びに変換する。
        * 例：「コードはこんな感じです」→「コードはこのようになります」
        * 例：「ここで保存するって感じです」→「ここで保存します」
    * **【削除】:**
        * 意味が重複している場合（例：「～という設定になります、って感じです」→「～という設定になります」）

* **3. 「変ですけど」の処理ルール:**
    * **【残す】:** コードや挙動が客観的に特異であると強調したい場合。
    * **【削除】:** 単なる照れ隠しや、自身の説明に対する不要な前置きの場合。

--&lt;/pre&gt;&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;2. 今のGemに入れる場所
現在のプロンプト（指示書）の中にある、「処理:」セクションの「3. フィラーの除去」の直後 に挿入するのがベストです。

フィラー除去（一般的な「えー」「あの」の削除）の後に、この「高度な判断が必要な口癖処理」を行わせることで、AIが迷わずに処理できます。

挿入イメージ:

... 3. フィラーの除去: 「あの」「えっと」など、フィラーの除去処理を行います。     * 「えーっと」、「あのー」、「まあ」など、話の流れを妨げたり、視聴者の集中を削いだりする言葉を削除します。

【ここに上記「特定口癖（Ken3構文）の文脈判断処理」を挿入してください】

方言の修正: 口語的な表現や方言を、より標準的な日本語に置き換えます。 ...
&lt;/pre&gt;
    &lt;blockquote&gt;
        &lt;p&gt;補足：なぜこの指示でうまくいくのか&lt;br /&gt;
AIに対して「必要ある場合のみ」と伝えると、AIの基準で判断してしまいブレが生じます。 今回のように**「どういう時が&quot;必要&quot;なのか（＝操作ミス、情報の訂正）」という条件（トリガー）**を具体的に定義してあげることで、Ken3さんの意図に近い、「ミスした時は誠実に謝り、無駄な謝罪はカットする」スマートな字幕修正が可能になります。&lt;/p&gt;&lt;p&gt;次回、新Gemを作る際にぜひ試してみてください。&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;&lt;font size=+2 color=&quot;red&quot;&gt;&lt;br /&gt;
AIさん、ありがとう&lt;br /&gt;
次回から、字幕修正時に使ってみますね&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;元の活舌悪さを改善する方法&lt;/b&gt;もAIに聞かなきゃなぁ・・・と思いつつ、失礼します。&lt;/p&gt;

&lt;/div&gt;
    &lt;/blockquote&gt;
</content>        
        <category term="雑談" label="雑談" />
        
        <category term="備忘録" label="備忘録" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/02c113b22c372a4e13b9cf5a129a7b0804eacb49/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260122%2F20260122132725.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>【Excel】VBA不要！パワークエリの関数化とList.TransformでJRAオッズ全12レースを一括取得する方法</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/01/19/100000"/>
        <id>hatenablog://entry/17179246901345531932</id>
        <published>2026-01-19T10:00:00+09:00</published>
        <updated>2026-01-19T10:00:02+09:00</updated>        <summary type="html">ExcelパワークエリでJRA単勝オッズを一括取得！List.Transformで12レース全自動読み取り JRAの公式サイトから1レースずつデータを取るのは大変ですよね。 「1つのレースは取れるけど、12レース分をループさせる方法がわからない」 そんな悩みを解決するために、パワークエリを関数化して一気に読み込む「&#39;&#39;VBA不要の自動化テクニック&#39;&#39;」をまとめました。 処理のイメージと[このブログをAIで作成したことを伝える] 今回やりたかったこと 開催地（中山、京都など）の情報を自動で取得する 1レースから12レースまでのパラメーター（CNAME）を特定する 取得処理を「関数化」し、List…</summary>
        <content type="html">
&lt;div class=&quot;section&quot;&gt;
    &lt;h3 id=&quot;ExcelパワークエリでJRA単勝オッズを一括取得ListTransformで12レース全自動読み取り&quot;&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/Excel&quot;&gt;Excel&lt;/a&gt;パワークエリで&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;オッズを一括取得！List.Transformで12レース全自動読み取り&lt;/h3&gt;
    &lt;p&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;の公式サイトから1レースずつデータを取るのは大変ですよね。&lt;br /&gt;
「1つのレースは取れるけど、12レース分をループさせる方法がわからない」&lt;br /&gt;
そんな悩みを解決するために、パワークエリを関数化して一気に読み込む「&#39;&#39;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/VBA&quot;&gt;VBA&lt;/a&gt;不要の自動化テクニック&#39;&#39;」をまとめました。&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;処理のイメージと[このブログをAIで作成したことを伝える]&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260119/20260119085552.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;処理のイメージと[このブログをAIで作成したことを伝える]&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;今回やりたかったこと&quot;&gt;今回やりたかったこと&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;開催地（中山、京都など）の情報を自動で取得する&lt;/li&gt;
&lt;li&gt;1レースから12レースまでのパラメーター（CNAME）を特定する&lt;/li&gt;
&lt;li&gt;取得処理を「関数化」し、List.Transformでループを回して一括結合する&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;メインのソースコード&quot;&gt;メインの&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9&quot;&gt;ソースコード&lt;/a&gt;&lt;/h4&gt;
    
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;1-クエリの関数化単勝テーブルを返す&quot;&gt;1. クエリの関数化：&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;テーブルを返す&lt;/h5&gt;
    &lt;p&gt;まずは、レース番号とパラメーターを受け取って、そのレースのオッズ表を返す「部品」を作ります。&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;(レース番号 as text, 受け取ったCNAME) as table =&amp;gt;
let
    strURL = &amp;#34;https://www.jra.go.jp/JRADB/accessO.html&amp;#34;,
    strCNAME = &amp;#34;cname=&amp;#34; &amp;amp; 受け取ったCNAME,
    strPARA = Text.ToBinary(strCNAME),
    strHEAD = [#&amp;#34;Content-Type&amp;#34;=&amp;#34;application/x-www-form-urlencoded&amp;#34;],
    ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]),
    文字列 = Text.FromBinary(ソース, 932),
    strレース名 = Text.BetweenDelimiters(文字列, &amp;#34;&amp;lt;span class=&amp;#34;&amp;#34;race_name&amp;#34;&amp;#34;&amp;gt;&amp;#34;, &amp;#34;&amp;lt;&amp;#34;),
    str時刻 = Text.BetweenDelimiters(文字列, &amp;#34;&amp;lt;div class=&amp;#34;&amp;#34;cell time&amp;#34;&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;&amp;#34;, &amp;#34;&amp;lt;&amp;#34;),
    HTMLtest = Web.Page(文字列),
    TB0 = HTMLtest{0}[Data],
    追加されたレース名 = Table.AddColumn(TB0, &amp;#34;レース名&amp;#34;, each strレース名),
    追加されたオッズ時刻 = Table.AddColumn(追加されたレース名, &amp;#34;オッズ時刻&amp;#34;, each str時刻),
    追加されたカスタム = Table.AddColumn(追加されたオッズ時刻, &amp;#34;レース番号&amp;#34;, each レース番号),
    並べ替えられた列 = Table.ReorderColumns(追加されたカスタム,{&amp;#34;レース番号&amp;#34;, &amp;#34;レース名&amp;#34;, &amp;#34;オッズ時刻&amp;#34;, &amp;#34;枠&amp;#34;, &amp;#34;馬番&amp;#34;, &amp;#34;馬名&amp;#34;, &amp;#34;単勝&amp;#34;})
in
    並べ替えられた列&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h5 id=&quot;2-ループ処理単勝1to12&quot;&gt;2. ループ処理：&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%C3%B1%BE%A1&quot;&gt;単勝&lt;/a&gt;1to12&lt;/h5&gt;
    &lt;p&gt;次に、用意した関数を12レース分ループさせて、最後にガッチャンコ（結合）します。&lt;/p&gt;
&lt;pre class=&quot;code powerquery&quot; data-lang=&quot;powerquery&quot; data-unlink&gt;let
    ソース = Excel.CurrentWorkbook(){[Name=&amp;#34;レース別CNAME&amp;#34;]}[Content],
    TBレース別CNAME = Table.TransformColumnTypes(ソース,{{&amp;#34;単勝CNAME&amp;#34;, type text}, {&amp;#34;レース番号&amp;#34;, type text}}),
    // テーブルをレコードのリストに変換
    lst処理リスト = Table.ToRecords(TBレース別CNAME),

    // List.Transformで関数を順番に呼び出す
    テーブル一覧 = List.Transform(
        lst処理リスト,
        each 単勝テーブルを返す(_[レース番号], _[単勝CNAME])
    ),

    // 全てのテーブルを一つに繋げる
    結果 = Table.Combine(テーブル一覧)
in
    結果&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;手順の解説と動画リンク&quot;&gt;手順の解説と動画リンク&lt;/h4&gt;
    &lt;p&gt;今回の構築手順のポイントを、動画のタイムスタンプと共に解説します。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[cite_start][08:33](&lt;a href=&quot;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=513s&quot;&gt;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=513s&lt;/a&gt;) &#39;&#39;開催場所の自動取得&#39;&#39;: &lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/JRA&quot;&gt;JRA&lt;/a&gt;トップページから「中山7日」などの情報を抜き出します [cite: 188]。&lt;/li&gt;
&lt;li&gt;[cite_start][15:41](&lt;a href=&quot;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=941s&quot;&gt;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=941s&lt;/a&gt;) &#39;&#39;名前範囲「CNAME」の作成&#39;&#39;: セルの値をクエリに渡すためのテクニックです [cite: 189]。&lt;/li&gt;
&lt;li&gt;[cite_start][23:40](&lt;a href=&quot;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=1420s&quot;&gt;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=1420s&lt;/a&gt;) &#39;&#39;クエリの関数化&#39;&#39;: ここが一番重要。引数を受け取るようにコードを書き換えます [cite: 190]。&lt;/li&gt;
&lt;li&gt;[cite_start][30:07](&lt;a href=&quot;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=1807s&quot;&gt;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=1807s&lt;/a&gt;) &#39;&#39;List.Transformによるループ&#39;&#39;: M言語で最も強力な「繰り返し」の手法です [cite: 191]。&lt;/li&gt;
&lt;li&gt;[cite_start][41:11](&lt;a href=&quot;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=2471s&quot;&gt;https://www.youtube.com/watch?v=T-kRPFVOE2w&amp;t=2471s&lt;/a&gt;) &#39;&#39;非同期更新によるデータのズレ&#39;&#39;: ライブ中に発覚した重要な注意点。更新順序の制御が課題です [cite: 192]。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;未解決の問題点と今後の課題&quot;&gt;未解決の問題点と今後の課題&lt;/h4&gt;
    &lt;p&gt;[cite_start]&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%E9%A5%A4%A5%D6%C7%DB%BF%AE&quot;&gt;ライブ配信&lt;/a&gt;中に発覚したのですが、パワークエリの&#39;&#39;「すべて更新」ボタンを押すと、クエリが並列（非同期）で動いてしまい、取得するデータの順番がズレる&#39;&#39;というバグのような現象が発生しました [cite: 192]。&lt;/p&gt;&lt;p&gt;今後の改善点として：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;クエリの実行順序を強制する（Table.Bufferなどの活用）&lt;/li&gt;
&lt;li&gt;または、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/VBA&quot;&gt;VBA&lt;/a&gt;を使ってクエリを1つずつ順番に更新させる&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;このあたりを次回、詳細に検証してみたいと思います。&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;section&quot;&gt;
    &lt;h4 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h4&gt;
    
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Power+Query+List.Transform+Loop&quot;&gt;&amp;#x30D1;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x30A8;&amp;#x30EA; List.Transform &amp;#x30EB;&amp;#x30FC;&amp;#x30D7;&amp;#x51E6;&amp;#x7406;&amp;#x306E;&amp;#x57FA;&amp;#x672C;&amp;#x3092;&amp;#x691C;&amp;#x7D22;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=JRA+オッズ+POST送信+パワークエリ&quot;&gt;JRA&amp;#x30AA;&amp;#x30C3;&amp;#x30BA;&amp;#x53D6;&amp;#x5F97; POST&amp;#x9001;&amp;#x4FE1;&amp;#x306E;&amp;#x4ED5;&amp;#x7D44;&amp;#x307F;&amp;#x3092;&amp;#x691C;&amp;#x7D22;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;-&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;AIからのアド&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%B9&quot;&gt;バイス&lt;/a&gt;：&lt;br /&gt;
技術系動画は「失敗」にこそ価値があります。41:11の「データがズレる」という発見は、同じことをしようとしている視聴者にとって最大の救いになります。次はこの「実行順序の制御」をテーマにした動画を作ると、さらに深いファンが増えるはずです！&lt;/p&gt;
&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;ブログのアイキャッチ画像として使用する&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260119/20260119085809.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;ブログの&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%A2%A5%A4%A5%AD%A5%E3%A5%C3%A5%C1&quot;&gt;アイキャッチ&lt;/a&gt;画像として使用する&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;</content>        
        <category term="Excel" label="Excel" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/e9ed469d7a804936a90d73a44e9f5fcafca58ca0/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260119%2F20260119085809.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
    
    
    <entry>
        <title>AI動画制作の課題解決法：「日本人」キャラクター確保の秘訣 AI Geminiで動画からブログ生成のテストを兼ねて備忘録化してみた</title>
        <link href="https://ken3memo.hatenablog.com/entry/2026/01/12/103000"/>
        <id>hatenablog://entry/17179246901343147392</id>
        <published>2026-01-12T10:30:00+09:00</published>
        <updated>2026-01-12T10:30:00+09:00</updated>        <summary type="html">【Gemini Veo3】AI動画で「日本人」が出ない問題を一発解決！静止画から作る2ステップ攻略法 Googleの最新動画生成AI「Veo3」。使ってみると分かりますが、日本語で指示を書いても「なぜかアメリカ人風の男性」が出てきてしまう……。そんな経験はありませんか？ 今回は、1日3回という貴重な生成枠を無駄にせず、理想のキャラクターを100%の確率で動かすための「画像ベース生成」のテクニックを備忘録としてまとめます。 1. なぜあなたのAI動画は「外国人」になるのか？ 02:45 検証：プロンプトだけで生成すると「アメリカ人」が出てくる問題 AI（Gemini/Veo3）の学習データには英…</summary>
        <content type="html">&lt;h1 id=&quot;Gemini-Veo3AI動画で日本人が出ない問題を一発解決静止画から作る2ステップ攻略法&quot;&gt;【Gemini Veo3】AI動画で「日本人」が出ない問題を一発解決！静止画から作る2ステップ攻略法&lt;/h1&gt;

&lt;p&gt;&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/Google&quot;&gt;Google&lt;/a&gt;の最新動画生成AI「Veo3」。使ってみると分かりますが、日本語で指示を書いても「なぜか&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%A2%A5%E1%A5%EA&quot;&gt;アメリ&lt;/a&gt;カ人風の男性」が出てきてしまう……。そんな経験はありませんか？&lt;/p&gt;

&lt;p&gt;今回は、1日3回という貴重な生成枠を無駄にせず、理想のキャラクターを100%の確率で動かすための「画像ベース生成」のテクニックを備忘録としてまとめます。&lt;/p&gt;

&lt;p&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260112/20260112093638.png&quot; width=&quot;1200&quot; height=&quot;670&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;1-なぜあなたのAI動画は外国人になるのか&quot;&gt;1. なぜあなたのAI動画は「外国人」になるのか？&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=DGBf-V3z2K0&amp;amp;t=165s&quot;&gt;02:45&lt;/a&gt; 検証：プロンプトだけで生成すると「&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%A2%A5%E1%A5%EA&quot;&gt;アメリ&lt;/a&gt;カ人」が出てくる問題&lt;/p&gt;

&lt;p&gt;AI（Gemini/Veo3）の学習データには&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%B1%D1%B8%EC%B7%F7&quot;&gt;英語圏&lt;/a&gt;の情報が多いため、「競馬を応援する男」とだけ書くと、デフォルトで西洋風の人物が選ばれる傾向があります。
字幕でも触れましたが、日本語でどれだけ詳しく状況説明をしても、人物の&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%A2%A5%A4%A5%C7%A5%F3%A5%C6%A5%A3%A5%C6%A5%A3&quot;&gt;アイデンティティ&lt;/a&gt;を固定するのは非常に困難です。&lt;/p&gt;

&lt;h3 id=&quot;失敗したプロンプト直接生成&quot;&gt;失敗したプロンプト（直接生成）&lt;/h3&gt;

&lt;blockquote&gt;&lt;p&gt;「テレビ画面は最終コーナーを回る馬群。太ったおじさん、ソファの端に座り、食い入るように画面を見つめている……（以下略）」&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;→ 結果：特徴的な&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%A2%A5%E1%A5%EA&quot;&gt;アメリ&lt;/a&gt;カ人の男性が生成されてしまう。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;2-解決策静止画を設計図にする2ステップ法&quot;&gt;2. 解決策：静止画を「設計図」にする2ステップ法&lt;/h2&gt;

&lt;p&gt;最も確実なのは、&lt;strong&gt;「先に理想の静止画を作り、それをVeo3に読み込ませる」&lt;/strong&gt;という手法です。&lt;/p&gt;

&lt;h3 id=&quot;ステップ1静止画でキャラクターを固定&quot;&gt;ステップ1：静止画でキャラクターを固定&lt;/h3&gt;

&lt;p&gt;まず、画像生成AIで「動かしたいシーンの決定的な1枚」を作ります。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=DGBf-V3z2K0&amp;amp;t=464s&quot;&gt;07:44&lt;/a&gt; 解決策：先に「日本人おじさん」の静止画を生成して固定する&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;使用した画像生成プロンプト（イメージ）：&lt;/strong&gt;&lt;/p&gt;

&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;書類や空き缶が散らかったアパートの一室
太ったトレーナー姿の日本人男性
TVで競馬のレース中継を見ています
TV画面には、最終コーナーを回った馬群（ばぐん）が表示されています
&lt;/pre&gt;


&lt;p&gt;&lt;figure class=&quot;figure-image figure-image-fotolife&quot; title=&quot;AIから生成された静止画&quot;&gt;&lt;span itemscope itemtype=&quot;http://schema.org/Photograph&quot;&gt;&lt;img src=&quot;https://cdn-ak.f.st-hatena.com/images/fotolife/k/ken3memo/20260112/20260112094018.png&quot; width=&quot;1200&quot; height=&quot;655&quot; loading=&quot;lazy&quot; title=&quot;&quot; class=&quot;hatena-fotolife&quot; itemprop=&quot;image&quot;&gt;&lt;/span&gt;&lt;figcaption&gt;AIから生成された静止画&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;

&lt;h3 id=&quot;ステップ2画像を添付してVeo3に動きを指示&quot;&gt;ステップ2：画像を添付してVeo3に「動き」を指示&lt;/h3&gt;

&lt;p&gt;生成された日本人の画像をVeo3にアップロードし、その画像に対して「どう動くか」だけを指示します。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;動画生成時の指示（情景描写）：&lt;/strong&gt;&lt;/p&gt;

&lt;pre class=&quot;code text&quot; data-lang=&quot;text&quot; data-unlink&gt;画面の馬が先頭に躍り出た瞬間。
おじさん、弾かれたように座椅子から少し腰を浮かせ、
新聞を丸めた手で膝をバシィッと叩く。
&lt;/pre&gt;


&lt;p&gt;これにより、キャラクターの見た目（日本人であること）を維持したまま、躍動感のある動きを付けることに成功しました。&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;3-未解決の課題と積み残し&quot;&gt;3. 未解決の課題と積み残し&lt;/h2&gt;

&lt;p&gt;今回の検証で見えてきた、現時点でのAI動画の限界です。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;音声の日本語対応が不完全&lt;/strong&gt;：
動画内で喋らせようとしましたが、日本語のイントネーションや声の質がまだ不自然（または英語風になる）という課題が残りました。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1日3回の制限&lt;/strong&gt;：
トライ＆エラーが命のAI生成において、この回数制限はかなり厳しい「壁」です。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;細かい動作の不一致&lt;/strong&gt;：
「新聞で膝を叩く」といった複雑な道具との干渉は、まだAIが混乱しやすいポイントです。
↓矢印、セリフを言わなかったり、うまく動画にできていませんが、作業手順が伝われば・・・
&lt;a href=&quot;https://www.youtube.com/watch?v=DGBf-V3z2K0&amp;amp;t=614s&quot;&gt;10:14&lt;/a&gt; 実演：静止画を元にVeo3で動きをつける手順&lt;/li&gt;
&lt;/ol&gt;


&lt;hr /&gt;

&lt;h2 id=&quot;4-次回へのアドバイスリメイク案&quot;&gt;4. 次回へのアド&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%B9&quot;&gt;バイス&lt;/a&gt;・リメイク案&lt;/h2&gt;

&lt;p&gt;「映像は完璧だが、声がダメ」という現状を打破するために、以下のステップを提案します。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ElevenLabsやVrewとの連携&lt;/strong&gt;：
Veo3で生成した「無音の高品質動画」に、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/%B2%BB%C0%BC%B9%E7%C0%AE&quot;&gt;音声合成&lt;/a&gt;AIで作った「リアルな日本語の叫び声」を後付けする。これが現在のAI動画制作の王道です。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ショート動画への展開&lt;/strong&gt;：
今回の「競馬おじさん」のようなキャラ立ちした映像は、&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/TikTok&quot;&gt;TikTok&lt;/a&gt;や&lt;a class=&quot;keyword&quot; href=&quot;https://d.hatena.ne.jp/keyword/YouTube&quot;&gt;YouTube&lt;/a&gt;ショートと相性が抜群です。字幕と効果音を盛って15秒の物語にリメイクしてみてはどうでしょうか。&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h2 id=&quot;関連リンク&quot;&gt;関連リンク&lt;/h2&gt;

&lt;h3 id=&quot;-検索キーワード&quot;&gt;🔍 検索キーワード&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=https://www.youtube.com/results%3Fsearch_query%3DGoogle%2BVeo3%2B%E4%BD%BF%E3%81%84%E6%96%B9%2B%E6%97%A5%E6%9C%AC%E4%BA%BA&quot;&gt;YouTube検索：Google Veo3 使い方 日本人&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/search?q=Gemini+Veo3+%E7%94%BB%E5%83%8F%E3%81%8B%E3%82%89%E5%8B%95%E7%94%BB+%E7%94%9F%E6%88%90&quot;&gt;Google検索：Gemini Veo3 画像から動画 生成&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3 id=&quot;-参考になりそうな情報&quot;&gt;💡 参考になりそうな情報&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://deepmind.google/technologies/veo/&quot;&gt;Google公式：Veo の概要（英語）&lt;/a&gt;
※最新のサンプル動画や技術背景が確認できます。&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;
</content>        
        <category term="備忘録" label="備忘録" />
        
        <link rel="enclosure" href="https://cdn.image.st-hatena.com/image/scale/d3611397b97f5223dd4fd50a47db3077e1574f02/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fken3memo%2F20260112%2F20260112094018.png" type="image/png" length="0" />

        <author>
            <name>ken3memo</name>
        </author>
    </entry>
    
  
</feed>
