大村あつしのExcel VBA Win64/32 APIプログラミング

概 要

あなたはExcel VBAプログラミングに限界を感じたことはありませんか? たとえば「ファイルをゴミ箱に移動する」プログラムを書こうとしてもVBAでは不可能です。しかし、Win API関数さえ利用できれば不可能が可能になります! 本書は、Excel VBAの限界を超えたプログラミングを実現するVBAとWin APIの連携プログラミングガイドです。Excel 97以降の全バージョンに対応しており、Win64/32 APIを使うコツを基礎から徹底解説します!

著者 大村あつし
価格 本体4000円(税別)
ISBN 978-4-7980-4734-8
発売日 2016/8/26
判型 B5変
ページ数 392
CD/DVD
ダウンロード
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

第1章 Win APIの予備知識

1-1 Win APIとは何か

◆Win APIはWindowsが提供する関数群

1-2 Win APIを使ってできること

◆Win APIを使うとWindowsの標準機能が活用できる

1-3 Windowsの変遷とAPIの進化

◆APIには「Win16 API」「Win32 API」「Win64 API」がある

◆Windows XPの登場とWin16 APIの終焉

1-4 コードの再利用

◆ライブラリの誕生

1-5 ライブラリの活用

◆DLLはAPI関数の収納場所

1-6 Windowsが提供する主なDLL

◆Windows\System32ディレクトリを覗いてみる

1-7 膨張するWin API

◆Win APIにはいくつの関数があるのか

第2章 Windows内部世界の探索

2-1 OSの役割

◆OSはアプリケーションとハードの仲介役

2-2 マルチタスクとプリエンプティブ

◆Windowsは複数のプログラムを次々に実行できるOS

2-3 プロセスとスレッド

◆プログラムはさらにスレッドという単位に細分化される

2-4 CPUを他のプログラムに横取りされないためには

◆待機関数と同期オブジェクト

2-5 ウィンドウ ?Windowsが提供する3つの機能(1)

◆ウィンドウは画面上の矩形の領域

◆ウィンドウの属性

2-6 メッセージ ?Windowsが提供する3つの機能(2)

◆メッセージの橋渡しこそがWindowsの使命

2-7 デバイスコンテキスト ?Windowsが提供する3つの機能③

◆グラフィックスの出力情報を一元化する

2-8 総論

◆Windowsの本質はメッセージとAPI

第3章 VBAからWin APIを使うためには

3-1 Win APIを使う際の心構え

◆VBAに精通してAPIに振り回されない判断力を身に付ける

3-2 Win API関数の宣言

◆API関数はDeclareステートメントで宣言する

3-3 Win APIのデータ型とVBAのデータ型

◆C言語のデータ型とVBAのデータ型の対応表

3-4 Win API関数の呼び出し

◆API関数はFunctionプロシージャとして呼び出す

3-5 文字列を使用するWin API

◆VBAはUnicodeをANSIに変換してAPIに渡す

◆文字列引数を書き換えるAPI関数

◆APIから受け取った文字列を取り出す

◆API関数に文字列引数を渡すときにはByValを使う

3-6 数値を使用するWin API

◆API関数が数値を書き換えるかどうかで渡し方を判断する

◆符号なし長整数と符号付き長整数

3-7 ユーザー定義型

◆ユーザー定義型の宣言

◆ユーザー定義型は参照渡しでWin APIに渡す

3-8 Win APIを使うためのその他のポイント

◆ポイント1 数値配列

◆ポイント2 NULLポインタ

◆ポイント3 As Any節

◆ポイント4 Win APIの「TRUE」とVBAの「True」

◆ポイント5 ビット演算

◆ポイント6 シフト演算

◆ポイント7 Win APIのエラー処理

第4章 プログラムの実行

4-1 本書付属のモジュールを参照する際の注意点

◆Win API関数、構造体、定数の宣言

◆エラー処理

◆Win64 APIとWin32 APIのコードについて

4-2 アプリケーションの重複起動の回避

◆メモ帳が起動していなかったらメモ帳を起動する

4-3 アプリケーション終了までプログラム実行を待機

◆メモ帳が終了するまでプログラムの実行を停止する

4-4 メッセージキューを使わないメッセージの送信

◆単一のメモ帳を閉じる

◆すべてのメモ帳を閉じる

4-5 ウィンドウのキャプション/クラスの取得

◆表示ウィンドウのキャプション、クラスを表示する

4-6 ウィンドウの前面表示

◆背後に隠れたメモ帳を最前面に表示する

4-7 拡張子に関連付けられたプログラムの実行

◆拡張子に関連付けられたプログラムでファイルを開く

◆拡張子に関連付けられたプログラムでファイルを印刷する

◆フォルダを指定してエクスプローラーを起動する

4-8 [ファイルのプロパティ]ダイアログボックスの操作

◆[ファイルのプロパティ]ダイアログボックスを開く

第5章 ファイルの操作

5-1 フォルダ選択用ディレクトリツリーの表示

◆[フォルダの参照]ダイアログボックスでフォルダを指定する

5-2 フォルダ単位のファイル操作

◆フォルダ単位でファイルをコピーする

◆同名のファイルが存在したら別名でコピーする

◆ファイルをごみ箱に移動する

◆ファイルを移動する/ファイル名を変更する

5-3 テンポラリファイルの作成

◆テンポラリディレクトリにテンポラリファイルを作成する

5-4 指定されたファイルの検索

◆複数のフォルダに対して次々にファイルを検索する

5-5 拡張子に関連付けられたプログラム名の取得

◆拡張子に関連付けられたプログラム名を取得する

第6章 情報の取得

6-1 特別なディレクトリのパス名の取得

◆Windowsディレクトリのパス名を取得する

◆Windowsシステムディレクトリのパス名を取得する

◆テンポラリファイル用のディレクトリのパス名を取得する

6-2 特殊フォルダのパス名の取得

◆特殊フォルダとは

◆インターネットキャッシュディレクトリのパス名を取得する

6-3 ドライブの種類の判別

◆ドライブを扱うプログラムにおける前判定処理

6-4 ディスクの空き容量の取得

◆対象ボリュームが2GBを超える場合

6-5 ボリューム名の取得

◆ボリューム名を取得する

第7章 システム情報の取得

7-1 Windowsのバージョン情報の取得

◆Windowsのバージョン情報を取得する

◆ビット演算

7-2 コンピューター名の取得

◆コンピューター名を取得する

7-3 ユーザー名の取得

◆現在のスレッドのユーザー名を取得する

7-4 CPUの数/種類の取得

◆CPUの数と種類を取得する

7-5 画面の解像度の取得

◆画面の解像度を取得する

◆GetSystemMetrics関数で取得できる情報

第8章 ウィンドウの操作

8-1 コントロールメニューの無効化/有効化

◆ユーザーフォームから[閉じる]ボタンを削除する

◆ユーザーフォームに最大化・最小化ボタンを付加し、サイズ変更も可能にする

8-2 Excelの[閉じる]ボタンの無効化/有効化

◆Excelの[閉じる]ボタンを無効にする

◆Excelの[閉じる]ボタンを有効にする

第9章 レジストリ・INIファイルの操作

9-1 レジストリの操作

◆レジストリのデータは、レジストリエディタで確認する

◆Win APIのレジストリ関数

◆レジストリキーを作成する

◆レジストリキーを削除する

9-2 レジストリキーの値の操作

◆レジストリキーに値を保存する

◆レジストリキーの値を取得する

◆レジストリキーの値を削除する

9-3 INIファイルの操作

◆INIファイルの必要性

◆INIファイルの内容

◆Win APIのINIファイル関数

◆INIファイルの文字列を整数として取得する

◆INIファイルのセクション内のすべてのキーと値を取得する

◆INIファイルの文字列を取得する

◆INIファイルのセクション内のすべてのキーと値を変更する

◆INIファイルの文字列を変更する

第10章 その他の操作

10-1 速度と時間の計測

◆コードの実行速度をミリ秒単位で計測する

◆Windowsを起動してから経過した時間を計測する

10-2 コード実行の中断

◆ミリ秒単位でコードの実行を中断する

10-3 カーソル点滅速度の変更

◆カーソルの点滅速度を1/2にする

10-4 サウンドの演奏/中止

◆Wave音を鳴らす

●MEMO

VBAでもハードディスクの空き容量、総容量が取得できる

API=Win APIではない

LIBとDLLのメリット・デメリット

サンクダウンとサンクアップ

マルチタスク/マルチスレッドとタイムシェアリング

同期に関するキーワード

アプリケーションウィンドウとデスクトップウィンドウ

オブジェクトの開放とハンドルのクローズ

サブクラス化

なぜVBAではAddressOf演算子があまり生かせないのか

亜流の関数名を作らない

LongPtrと Long

Declareステートメントを使用する際の補足

VBAからAPI関数を呼び出す際はコードのチェック機能は働かない

DLLプロシージャへの文字列の引き渡し

ユーザー定義型はパブリック変数

数値定数はLong型で宣言すべきか

10進数を2進数に変換する関数

まずは『サンプルプログラムの使い方』を熟読!

Excel 2002以降のアプリケーションウィンドウのハンドルを取得するHwndプロパティ

意外に重宝するSetForgroundWindow関数

Win APIでシステムをシャットダウンする

ファイルシステムオブジェクト(FSO)

GetTempFileName関数を使うときには、ファイルの削除を忘れずに

FunctionプロシージャをExcelのワークシート上で使用する

Windowsディレクトリのパス名はVBAの関数でも取得できる

API関数の引数のデータ型にも「LongPtr」を使う場合

GetDriveType関数を有効に活用しよう

FSOでドライブの種類を調べる

GetDiskFreeSpaceEx関数の値とエクスプローラーの[プロパティ]コマンドが表示する値

FSOでディスクの容量を調べる

メジャーバージョンとマイナーバージョンでWindowsの種類を判別する

レジストリを扱う際の注意点

INIファイル関数の注意点

あらゆる環境で使えるFSO

サンプルの実行

巻末資料(1) ファイルシステムオブジェクト

巻末資料(2) Win32 APIのコード一覧

PR

秀和システム