以前に PowerPoint プレゼンテーションに埋め込まれた XML ドキュメントまたは Word ドキュメントを開いて読み取るアプリケーションを開発しています。このオブジェクト ( xmlFile as Object
) を読み取るには、次のことを行う必要があります。
xmlFile.OLEFormat.DoVerb 1
これによりパッケージ オブジェクトが開かれ、Notepad.exe の開いているインスタンスを取得し、その内容を ADODB ストリームに読み込む別のサブルーチンがあります。
この手順の例は、Google ドキュメントで入手できます。
このプロセス中に、Notepad.exe がフォーカスを得る数秒のウィンドウがあり、不注意でキーストロークを行うと、望ましくない結果や XML データの読み取りエラーが発生する可能性があります。
次の 2 つのいずれかを探しています。
- この操作の実行中にユーザーが(キーボード/マウスなどを介して)誤って入力するのを防ぐ方法。
MouseKeyboardTest
以下のサブルーチンのように、ユーザーのマシンを制御しないものが望ましいです。または、 - XML データを文字列変数に抽出するより優れた方法。
#1の場合:これは私が見つけた関数であり、使用するのが苦手です。私は、ユーザーシステムをこのように制御することに慎重です。##他に使用できる方法はありますか?##
Private Declare Function BlockInput Lib "USER32.dll" (ByVal fBlockIt As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub MouseKeyboardTest() 'both keyboard and mouse blocked
BlockInput True ' Turns off Keyboard and Mouse
' Routine goes here
Sleep 5000 ' Optional coding
BlockInput False ' Turns on Keyboard and Mouse
End Sub
#2の場合:いくつかの背景がありますが、.NET以外の方法を使用して埋め込みオブジェクトを確実に抽出できないことが問題のようですDoVerb 1
。VBAスキルの影響を受けないアプリケーション(メモ帳)で保存されていないドキュメントを扱っているので、これが唯一の方法のようです。その完全な背景は、ここにあります: