ダウンロード

エクセル版GetTextDLL 

GetTextDLLを利用して、エクセルブックを文字列取得ツールとして使用します。
基本的には、VB6と同じような処理。

また、VB6やC++などのフォームと同じ様な操作方法とするために、
実行時はブックサイズをコンパクトにしてフォームのような形状で使用します。

DLLの設置場所
シート外観
実行時のイメージ
VBA外観
ソースコード
Office64ビット版への対処
マクロブックのダウンロード

DLLの場所

DLLは、カレントディレクトリ、パスが通っているディレクトリ(環境変数で指定)の順で参照されます。
ここでは、ワークブックと同じ場所にDLLを置くことにし、カレントディレクトリをワークブックの場所と一致させるため、下記のような少々の工夫
BookPath = ThisWorkbook.Path    'ブックのパス
ChDrive left(BookPath, 1)       'ドライブ変更
ChDir BookPath                  'カレントディレクトリ変更

ワークブックのパスの1文字目(ドライブ名)を取出し、カレントドライブを切り替え、
カレントディレクトリをワークブックのパスとする。
これで、カレントディレクトリとワークブックのパスが一致します。(ドライブ含)

注:ネットワークアドレス(\\コンピュータ名\共有フォルダ名\xxx)の場合は、さらに、もう一工夫必要!

  


シート外観

ワークシートイメージ

実行時のイメージ

開始」ボタンを押すとテキスト取得開始
終了」ボタンを押すと終了してシートに戻る
   開始⇔終了 は交互に表示変化

また、実行時に「SHIFT」キーを押すと一時停止
キーは任意に変更可。プログラム中で下記の定数を変更
   Const PAUSE_KEY = VK_SHIFT    'キーコード
   Const PAUSE_KEY_NAME = "SHIFT"  'キー名称
取得した文字列をコピーするには、「一時停止」後、
テキストボックス内の文字列を選択(または、CTRL+Aで全選択)後、
CTRL+Cでコピーします。右クリックのショートカットメニューは用意していません。


なお、右図「終了」ボタンの右側に数値は、上段左から
マウスポインタ座標(pixel)、
ポイントしているウィンドウのハンドル、
ポイントしているウィンドウのクラス名

下段の Name :ライブラリ ・・・ などの項目は、
それぞれDLL内の個別関数を呼び出すことで取得可。


補足:

キーの押下判定は、GetAsyncKeyState関数(API)を使用
 



VBA外観

矢印の先はイメージマップ。クリックするとソースファイルが開きます。

  


ソースコード

ワークブック − ThisWorkbook

下記のWorkboolOpen イベントでコメントアウトを外す と、エクセルを起動した時、即、開始するようになります。

ワークシート − Sheet1

「開始」ボタンを押したら、「終了」ボタンが押されるまで無限ループ。

実行時にはウィンドウがコンパクトなサイズになるように、Init()サブで下記の項目を設定。

  ・キャプション、ウィンドウ状態、幅、高さを記憶 → 終了時に復元
  ・ウィンドウ状態→通常、幅、高さをシート内オブジェクトサイズに合わせる
  ・数式バー、リボンを非表示
終了時に、記憶していたデータを復元。Finish()サブ
'ウィンドウ状態
Private Type ORG_VALUE
    caption As String       'キャプション
    windowstate As Integer  '
    width As Integer        'ウィンドウ幅
    height As Integer       '     高さ
End Type
Dim OrgValue As ORG_VALUE

ライセンスキーの登録

実行時(cmdGo_Click()イ ベント)で登録しています。
(何度登録しても構いません。また、不正キーの場合はエラーを返し、処理そのものは継続実行されます。)
Const LICENSE_KEY = "xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx"

'----------------------------------------------------
'ライセンスキーを登録
'---------------------------
rc = RegistKey(LICENSE_KEY)
'----------------------------------------------------


標準モジュール − modAPI.bas (VB6サンプルからインポート または コピー)

VB6のサンプルソースからインポート
または、本サイトのVB6サンプルソースをコピー/貼り付

ウィンドウ関連のAPI(ラッパー関数)

標準モジュール − modGetTextDll_VB6.bas (VB6サンプルからインポート または コピー)

GetTextDLL.DLLを呼び出すためのラッパー関数

Office64ビット版への対処

APIの呼び出しで、32/64ビット版双方に対応させるために

Public Declare Function xxx
  ↓
#If VBA7 And Win64 Then
 Public Declare PtrSafe Function xxx
#Else
 Public Declare Function xxx
#End If


のように変更します。

  

×
PageTop