Sendkeysステートメントがうまく機能しないが?

Question 15.5 Previous Next
いつも、行き詰まるとここへ来てHINTをもらっているものです。ありがとうございます。いま、また、行き詰まってしまいました。 それは、、、
A列にファイル名がたくさんはいったファイルがあります。そのファイル名に、いろいろな情報を付加するためのダイアログを作成しました。
その中で、「次へ」というボタンを押すと、次の行のファイル名のTIFFファイルが 起動し、現在の行のTIFFファイルは閉じるようにした
のですが、ファイルが閉じられない時があります。ファイルを閉じる時は、
  SendKeys String:="%F" + "X", Wait:=True
で行っています。(Win版 Excel95使用)
どうしたら、ちゃんと、閉じる事ができるのでしょうか? どうか、教えてください。お願いします。
Answer   Copyright (C) 1999.2.12 永井善王
良いHINTが得られるそうで、「すぐに役立つ・・」の面目が立ちます。
あなたのご質問に少々たじろいでいます。TIFFファイルとは、もともとはMacの画像ファイルのことですよネ。そうだとすると、MacとWin-PCの両方使っているのでしょうか。SendKeysステートメントはMacでは使えませんし。私はつい最近Mac版のExcel98を動かしてみたくなって、Power Macを購入したところです。でも多忙で、まだ結線できないので、寂しく机の上に置かれてます。

回答に入りましょう。
「閉じられない時がある」ということは「閉じれる時もある」のですか? Sendkeysステートメントの実行時には、当然、それを受け取るソフトがアクティブになっていないとダメですね。この点は大丈夫でしょうから、ちょっと不可解な気がするのですが・・

あなたの Sendkeysステートメントの中に1つだけ + 記号が書かれてますので、この意味を確認します。
Excel95 VBAでは、プラス記号はShiftキーを意味し、パーセント記号はAltキー、そして、キャレット( ^ )はCtrlキーを意味します。
このルールに沿って解析すると、「Altキーを押しながら Fキーを押し、Shiftキーを押しながら Xキーを押す」という意味になるのでしょうかネ。

あなたが使っているソフトはPageMakerかなとは思いますが、はっきりしないので、ファイルを閉じる時のキー操作の正解がわかりません。もしも「Shiftキーを押しながらXキーを押す」で良いならば、マクロの記述を下記のように2行に分けてから試してみてくださ
い。2行に分ける理由は、もともと2つの動作指示であることと、後述のとおりです。
なお、一般的には、Xキーは「終了」する時に使われることが多いと思います。もし、そうならば + は不要かも知れません。
SendKeys "%F", True 'ファイルメニューを開く(Altキーを押しながらFキー, 処理終了まで中断)
SendKeys "+X", True '終了?        (Shiftキーを押しながらXキー,   〃   )
SendkeysステートメントによるDDE(ダイナミック データ エクスチェンジ)は、マクロの記述は比較的簡単ですが、私の経験では、マクロ実行時の環境(ソフトとハードそのものと、その設定、実行時のPCの状態など)により、成功・不成功が微妙のようです。
Accessのように、OLE/DDEタイムアウト時間の設定が可能なソフトもあります。

この「すぐマク」には、いくつかの事例 (Macroの
終了処理エクセルのブックをアクセスから開くには? )があります。また、エクセルのヘルプのトピックの検索で、キーワードに Sendkeysと入力して「表示」をクリックすると、たくさんの情報が得られますので参考にして、試行錯誤してみてください。
できれば私にも、最終結果を連絡してください。

 

Excel VBA Macro