<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WINボタン | nujonoa_blog</title>
	<atom:link href="https://nujonoa.com/tag/win%e3%83%9c%e3%82%bf%e3%83%b3/feed/" rel="self" type="application/rss+xml" />
	<link>https://nujonoa.com</link>
	<description>人生に役立つデータ集</description>
	<lastBuildDate>Wed, 10 Jun 2020 03:31:23 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://nujonoa.com/wp-content/uploads/2019/04/cropped-DSC00976-e1554456145409-32x32.jpg</url>
	<title>WINボタン | nujonoa_blog</title>
	<link>https://nujonoa.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VBA_SendKeysでWINボタンを押す方法！部分スクショを取る方法！</title>
		<link>https://nujonoa.com/how-to-press-win-button-in-vba/</link>
					<comments>https://nujonoa.com/how-to-press-win-button-in-vba/#respond</comments>
		
		<dc:creator><![CDATA[nujonoa]]></dc:creator>
		<pubDate>Sat, 07 Mar 2020 11:00:00 +0000</pubDate>
				<category><![CDATA[IE関係]]></category>
		<category><![CDATA[マクロVBA]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[sendkeys]]></category>
		<category><![CDATA[WINボタン]]></category>
		<guid isPermaLink="false">http://nujonoa.com/?p=4667</guid>

					<description><![CDATA[目次 VBA_SendKeysでWINボタンを押す方法！部分スクショを取る方法！早速コードを確認。マウスの自動化を入れて指定の領域を切り取る。 VBA_SendKeysでWINボタンを押す方法！部分スクショを取る方法！  [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VBA_SendKeysでWINボタンを押す方法！部分スクショを取る方法！</a></li><li><a href="#toc2" tabindex="0">早速コードを確認。</a></li><li><a href="#toc3" tabindex="0">マウスの自動化を入れて指定の領域を切り取る。</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBA_SendKeysでWINボタンを押す方法！部分スクショを取る方法！</span></h2>



<p>VBAでウインドウズボタンを押したい！！</p>



<p>と思ったことはありませんか？</p>



<p>例えば、WINDOWS10で新たに追加された、</p>



<p>win+Shift+S</p>



<p>のスクリーンショットです。</p>



<p>Shift+Sであったら、</p>



<p>SendKeys "+S"</p>



<p>Ctrl+Shift+Sであったら</p>



<p> SendKeys "^(+S)"</p>



<p>で済むのですが、<br>残念ながらwinキーは割り当てが有りません。</p>



<p>そこで、今回はSendKeysでwinボタンを押す方法を説明していきたいと思います。</p>



<h2 class="wp-block-heading"><span id="toc2">早速コードを確認。</span></h2>



<p>ということで、Sendkeysでwinボタンを押すといったのですが、<br>実はSendkeysのコマンドで、winボタンを押すことは不可能で、<br>その代わりに、keybd_eventを使う必要があります。</p>



<p>実際のプログラムを見ながら、確認していきましょう。<br>win+Shift+sを押すコマンドは、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: vb; title: ; notranslate">
 
'Public Class Form1
Public Declare Sub keybd_event Lib &quot;user32&quot; (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)

Private Declare Sub Sleep Lib &quot;KERNEL32.dll&quot; (ByVal dwMilliseconds As Long)

Sub winを押す()

       Call keybd_event(&amp;H5B, 0, 0, 0) 'Windowsキーを押す
        Call keybd_event(&amp;H10, 0, 0, 0) 'Shiftキーを押す
        Call keybd_event(83, 0, 0, 0) 'sキーを押す

        Sleep(100)

        Call keybd_event(&amp;H5B, 0, 2, 0) 'Windowsキーをあげる 
        Call keybd_event(&amp;H10, 0, 2, 0) 'Shiftキーをあげる  
        Call keybd_event(83, 0, 2, 0) 'sキーをあげる(キーを上げる動作がないとおかしくなる)

End Sub
</pre></div>


<p>となります。</p>



<p>keybd_event</p>



<p>は、キー送信するAPIです。</p>



<p>SendKeysと同じですが、SendKeysでは、「win」ボタンが送信できないために使用しています。</p>



<p>keybd_eventでの処理が完全に終了しているかの判定が難しいので、<br>念のため、Sleepを入れてあります。※DoEventsでも解決できるはずですが一応。</p>



<p>Sleepは、</p>



<p>Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)</p>



<p>Sleep(100)</p>



<p>これで0.1秒です。</p>



<p>ここまでで、win+Shift+sを押すことができましたので、<br>ここからをマウスを動かすジェスチャーを入れて、<br>画面の切り取りを自動化していきたいと思います。</p>



<h2 class="wp-block-heading"><span id="toc3">マウスの自動化を入れて指定の領域を切り取る。</span></h2>



<p>マウスの自動化を入れたプログラムが↓です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: vb; title: ; notranslate">
Private Type Position
    x As Long
    y As Long
End Type
Declare Function SetCursorPos Lib &quot;user32&quot; (ByVal x As Long, ByVal y As Long) As Long
Declare Sub mouse_event Lib &quot;user32&quot; ( _
    ByVal dwFlags As Long, _
    Optional ByVal dx As Long = 0, _
    Optional ByVal dy As Long = 0, _
    Optional ByVal dwDate As Long = 0, _
    Optional ByVal dwExtraInfo As Long = 0)
Declare Function GetCursorPos Lib &quot;user32&quot; _
    (lpPoint As Position) As Long
    
Declare Sub Sleep Lib &quot;kernel32&quot; (ByVal dwMilliseconds As Long)

'mouse_event用の定数宣言
Private Const MOUSEEVENTF_ABSOLUTE = &amp;H8000
Private Const MOUSEEVENTF_MOVE = &amp;H1
Private Const MOUSEEVENTF_LEFTDOWN = &amp;H2
Private Const MOUSEEVENTF_LEFTUP = &amp;H4
Private Const MOUSEEVENTF_RIGHTDOWN = &amp;H8
Private Const MOUSEEVENTF_RIGHTUP = &amp;H10
Private Const MOUSEEVENTF_MIDDLEDOWN = &amp;H20
Private Const MOUSEEVENTF_MIDDLEUP = &amp;H40

'Public Class Form1
    Public Declare Sub keybd_event Lib &quot;user32&quot; (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)

'↓ここからメインプログラム

Sub 画面切り取り()

        Call keybd_event(&amp;H5B, 0, 0, 0) 'Windowsキーを押す
        Call keybd_event(&amp;H10, 0, 0, 0) 'Shiftキーを押す
        Call keybd_event(83, 0, 0, 0) 'sキーを押す

        Call keybd_event(&amp;H5B, 0, 2, 0) 'Windowsキーをあげる  『キーをあげる操作を忘れないようにしてください』
        Call keybd_event(&amp;H10, 0, 2, 0) 'Shiftキーをあげる    『忘れるとプログラムを終了するまでWindowsの動作がおかしくなります』
        Call keybd_event(83, 0, 2, 0) 'sキーをあげる

    DoEvents
    Application.Wait &#x5B;Now()] + 50 / 86400000
    
    SetCursorPos 900, 140 '左から900ピクセル、上から140ピクセルの位置にカーソルを移動

    Sleep 200

    mouse_event MOUSEEVENTF_LEFTDOWN  '左ボタン押下（範囲選択のクリックのつもり）

    Sleep 200

    SetCursorPos 1599, 641 '範囲選択のマウス移動

    Sleep 200

    mouse_event MOUSEEVENTF_LEFTUP  '左ボタン解放

    Sleep 200

    Cells(1 1).PasteSpecial

End Sub
</pre></div>


<p>範囲を指定するために、<br>マウスのポインタの開始の位置と終了の位置を変更することで、<br>画面の切り取りをすることができます。</p>



<p>切り取られた画面は、クリップボードにコピーされますので、<br>そのままセルに張り付けをして画像貼り付けは完了となります。</p>



<p>IEを動かすプログラムと連動させることで、ページごとのスクリーンショットを撮影することが可能になりますので、いろいろと幅が広がると思います。</p>



<p><span class="marker-animation">その他、VBAでIEを動かすために必要な情報をまとめています！！</span></p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-pink-border-color"><div class="tab-caption-box-label block-box-label box-label fab-book"><span class="tab-caption-box-label-text block-box-label-text box-label-text"><span class="marker-animation-2071">こちらを参照ください！</span></span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">


<a rel="noopener" target="_blank" href="https://nujonoa.com/summary-of-how-to-control-ie-with-vba/" title="【まとめ】VBAでIEを動かすプログラムまとめ！" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-right cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://nujonoa.com/wp-content/uploads/2019/11/coins-1015125_1280-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nujonoa.com/wp-content/uploads/2019/11/coins-1015125_1280-160x90.jpg 160w, https://nujonoa.com/wp-content/uploads/2019/11/coins-1015125_1280-120x68.jpg 120w, https://nujonoa.com/wp-content/uploads/2019/11/coins-1015125_1280-320x180.jpg 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【まとめ】VBAでIEを動かすプログラムまとめ！</div><div class="blogcard-snippet internal-blogcard-snippet">まだ、あまり確立されていないVBAでIEを動かすプログラムについて、素人ながらまとめてみました！【まとめ】VBAでIEを動かすプログラムまとめ！・VBA(マクロ)でIEを動かしたい！・社内プログラムでIEと連動させたい。・けれど、参考になる...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://nujonoa.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nujonoa.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.10</div></div></div></div></a>

</div>



<p></p>
</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://nujonoa.com/how-to-press-win-button-in-vba/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
