
taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、taka(@takabou63)です(^^♪
前回の記事でAPI(Application Programming Interface)のSleep関数関数を使用して処理を一時停止させる方法をご紹介しました、ですが前回の記事ではそもそもAPIとは何のこと?どう使うの?という疑問が生まれてしまったと思います(笑)
前回の記事はこちら『VBA【Sleep関数(API)】指定した時間分処理を止める』
今回はそのあたりについて簡単にお話していきたいと思います(^^♪
そもそもAPIって何?
そもそもAPIとは何か、API、プログラムに詳しくない方でも一度は目にしたり耳にしたりしたことがあるのではないでしょうか?
APIはApplication Programming Interface の略で、簡単に言うと【プログラムからソフトウェアを操作するインターフェイス】となります。あらかじめ用意されているAPI関数を使用してWindowsの持っている機能をVBAやほかのプログラムから利用できるようにするものです。(OLEとは別物ですよ)
今回お話するのは【Windows API】についてですが、このほかにも【Google API】を使用することによってGoogleマップを使用できたりと、様々なAPIがあります。VBAだけではできないような様々な機能を実装することができます。
VBAでWindowsAPIを使用する方法
まずVBAでAPIを使用するには 【どのライブラリ】の【どの関数】を使用するかをはじめに宣言しなければいけません。
宣言には【Declareステートメント】を使用して宣言します。下記画像の赤枠が宣言になります。
【Private Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)】というのは、【kernel32というライブラリ】の【Sleepという関数】を使用するという宣言になります。
※APIの宣言にはモジュールの一番上に宣言する必要があります。
sleep関数の使い方については下記の記事にて
Office2007より前のOfficeを使用している場合注意が必要
Office2010以上であれば上記の書き方で32bitでも64bitでも動作可能ですが、Excel2007になるとVBAのバージョンが古くなってしまい、32Bit版と64Bit版で宣言の方を変えなければいけないのです(。-∀-)タハ-
32Bit版ではLong型ですが、64Bit版では、LongPtr型 または Longlong型で宣言する必要があります。なので下記のように宣言することでこの問題を解決させることが可能です。
※申し訳ありませんが動作確認はしておりません
#If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If
最後に
最後にAPIはきちんと使う事でVBAだけではできないような機能を実装することができます、ですが便利だからといって気軽に使っていい物でもありません、使い方を間違えるとWindowsの不具合にもつながる可能性もありますので使用については慎重に、APIを使用しないと実装できないのかを考えてから使用することをおすすめいたします。
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す