VBAでのSendKeysの変数指定方法

このQ&Aのポイント
  • エクセルVBAで、別のアプリケーションを動作させるためにSendKeysを使用する方法と、変数を使用してエクセルのセルに入っている文字を指定する方法について教えてください。
  • SendKeysを使用してコマンドや文字を指定することはできますが、エクセルのセルに入っている文字を変数として指定する方法が分かりません。どのような記述方法で変数を指定すれば良いのでしょうか?具体的な例として、A1セルに入っている文字を指定する場合はどのように記述すれば良いのか教えてください。
  • VBAのSendKeysを使用して別のアプリケーションを操作する際に、変数を使用してエクセルのセルに入っている文字を指定する方法について教えてください。具体的には、A1セルに入っている文字をSendKeysの引数として指定する場合はどのように記述すれば良いのか教えてください。
回答を見る
  • ベストアンサー

VBAでの SendKeysの変数指定方法

エクセルVBAで、マクロを作成中なのですが、 別のアプリケーションを動作させなくてはいけないため、 SendKeysを使用します。 この SendKeys "○○○"で、 コマンドや文字を指定することは、できますが、 エクセルのある決まったセルに入っている文字をそのまま、 ここに指定(つまりは、変数)するのには、どういう記述方法になりますか? 例えば、A1のセルに「XYZ」と入っていたら、 SendKeys "XYZ"と送るイメージになりますが、このXYZ部分を、 A1セルの文字という変数にしたいです。 いろいろ調べたのですが、わかりませんでした。 すみませんが、みなさん、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

そのままですよ。  Application.SendKeys Range("A1") でいけます。

mikasa007
質問者

お礼

ありがとうございます。こんなに簡単な記述でできるとは、驚きです^^ 助かりました!

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

状況によりますが安全を取って、事前に変数に受けてから送り出してみます。 作成例: sub macro1() dim s as string dim res s = range("A1").value res = shell("Notepad.exe", vbnormalfocus) sendkeys s end sub

mikasa007
質問者

お礼

ありがとうございます! このような方法もあるのですね。こちらでも、できそうです! 一度変数に置いておけば、のちに便利なこともあるので、今後使ってみます。

関連するQ&A

  • VBAのSendkeysでShift付の文字になる

    ExcelのVBAでGOM Playerを動かそうと思っています。 動画の途中から時間指定で再生しようと思っていますが、再生時間を指定するための画面を出す文字コード「G」をSendKeysで送るとなぜかShiftキー付の文字コードが送られてしまっているようです。 GOM Playerでは「G」を押すと「移動先の時間を指定」画面が出るのですが、VBAで「G」を送ると、「Shift+G」で表示される「オーディオキャプチャー設定」画面が出てきてしまいます。 VBAではなく手で「G」キーを押すと何の問題もなく表示されます。 具体的に書きますと H列のセルを選ぶとH列に書いてある時間(「0:04」など)のところから再生が始まるプログラムになります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set 指定セル範囲1 = Range("H2:H132") Set 共有セル範囲1 = Intersect(ActiveCell, 指定セル範囲1) If Not 共有セル範囲1 Is Nothing Then Shell "C:\Program Files (x86)\GRETECH\GomPlayer\GOM.EXE", 1   SendKeys "G"   SendKeys "00:0" & Cells(Rows.Count, 8).Value End If End Sub 「Shell・・」の行はExcelがアクティブの状態からGOM Playerがアクティブの状態にするために入れてあります。 Wait時間を入れてみたり、CRを送ってからGを送ったり 下記のように別のコートで送ってもダメでした。 SendKeys ("G") SendKeys vbKeyG SendKeys 71 また「G」だけではなく「P」を送っても「Shift+P」が送られた動作になってしまいます。 すみませんが、お知恵を貸していただけませんでしょうか。 よろしくお願いします。

  • VBA SendKeysステートメントについて

    お忙しいところ大変申し訳ありません、ご回答の程お願い申し上げます。 入力されるデータと列の数は毎回異なり入力された文字自体を修正するVBAを組みたいのですが、検索などで調べた結果「SendKeysステートメント」のコマンド「 SendKeys "{F2}"」というものを発見しました。 それで構文を組んでみたのですが、 Sub Macro1() Worksheets(1).Activate Range("A2").Activate SendKeys "{F2}" End sub で単一セルを修正する事はできました。 これを「列(列は毎回固定です)の空白セルまで」というプログラムは組めるのでしょうか? お忙しい中申し訳ありませんがご回答いただければ幸いです。

  • EXCEL VBA Sendkeys {TAB}

    済みません、EXCELのマクロで自動でタブ移動が出来なく困っています。 いろいろ参考にして作ってみましたが、Sendkeysがセルに対して動作していないようです。 ご教授をお願いします。 Private Sub Tab_Count_Click() Worksheets("音楽リスト").Activate Range("A4:AF8").Select For i = 1 To 3 SendKeys "{TAB}", True MsgBox "OK" Next End Sub

  • VBA:変数を使用したオートフィルタについて

    エクセルVBAについて質問させてください。 A1セルにの値をB1、C1の方向にオートフィルを行いたいと考えています。 オートフィルをするセルの個数を変数で指定したい場合、どのように記述すればよろしいでしょうか? (変数の値が5なら、B1、C1、D1、E1までオートフィルというような感じです。)

  • AccessVBAで実行時間を指定するには

    よろしくお願いします。 VBAで指定した時間に処理(関数)を呼び出すという事がしたくて色々調べていたらApplication.Ontime というやつでなんとかできそうだとメドが立った ・・・つもりでいたのですが、どうやらこれはExcelの機能のようでした。 参照設定でエクセルのオブジェクトライブラリをチェックしたらAccessVBAで  >Excel.Application.Ontime 待ち時間, コマンドA と記述することでひとまず実行予約的な事まではできたのですが、 指定時間になると「コマンドAが見つかりません」 というエラーメッセージが出てしまいます。 おそらくエクセルのマクロを実行しようとして「見つからない」と言われているのでは無いかと考えています。 長くなりましたが質問は、上記のようなコードで、Accessのマクロ(関数)を呼び出すにはどうすれば良いのでしょうか? よろしくお願いします。 上記の前提が勘違いの場合は併せてご指摘頂ければ幸いです。

  • Excelのヘッダー表示を変数で指定する場合

    こんにちは。 Excel2000を使用しています。 マクロで、印刷時のヘッダーに変数を指定したいのですが、フォントやサイズも指定しようとするとうまく出来ません。 [現在の記述] With ActiveSheet.PageSetup .RightHeader = 変数A .RightHeader = "&""明朝,標準" End With この場合、後に記述したRightHeaderが有効になるため、結果として、ヘッダーには文字列が何も無い状態になります。逆にすれば、変数Aの内容は表示されるものの、フォントはデフォルトのものになってしまいます。 単に文字列を表示させたいなら .RightHeader = "&""明朝,標準""&11文字列" でOKだと思うのですが、これが変数となると、どうやって記述すればいいのか判らないのです。 どなたかご存知でしたら教えてください。

  • エクセルVBAで範囲指定の方法をおしえてください

    エクセルVBAで範囲指定の方法をおしえてください こんばんは。 以下のようにデータがあるとします。 222 111 333 555 888 999 454 665 222 111の文字列を含むセルから888の文字列を含むセルまでをVBAで範囲指定したいのですが 方法がわかりません。 エクセルに読み込むファイルによって目的の情報の位置が変わるため、文字列を基に範囲指定したいのです。 本当に困っていますよろしくお願いします。

  • windows7上でVBAマクロがエラー

     仕事で使っているエクセル97で作ったVBAマクロがありますが、winXPからwin7に乗り換えたらエラーがでるようになりました。  コマンドボタン押下によるマクロで、変数フラグに「xxxx=1」という記述でコンパイルエラーが起こり、実行がストップします。  自動処理だけを目的に作っており、定石を踏んだマクロになっておらず、このxxxxにもディメンションで変数型を指定しておらず(こちらにおられる諸兄には怒られそうですが)、 Private Sub CommandButton1_Click() Application.ScreenUpdating = False xxxx = 1   :  というソースの中で、開始直後にxxxx=1にフォーカスがあたり、コンパイルエラーになります。  winXPまでは問題なく動作していたマクロです。(Vistaでは試すチャンスがありませんでした)  解決方法はあるのでしょうか。それとも変数にDim定義を追加する修正をソースへいれないとだめでしょうか。  ご存知の方、ご指導ください。

  • Excel VBA Cells 絶対参照 書き方

    Excel VBAにてお尋ねいたします。 Excel VBAにてCellsを使用してセル範囲を指定させていただく際に、絶対参照($A$1:$E$10など)を使用する場合はどのように記述すればよろしいでしょうか? Cellsを使用するのは、セル範囲が毎回異なるため、範囲指定に変数を使用しているためです。 相対参照でしたら、Range(Cells(1,1),Cells(Rows<行番号の変数>,Cols<列番号の変数>))といった記述かと思いますが、絶対参照の場合はどのように記述すればよろしいでしょうか?

  • エクセルのマクロとVBAについて

    まだあまり多用していないのですが、エクセルでは使っていくアイコンを指定することで(それを利用することで)、マクロを組みそれがエクセルのVBAで記述されるということですが、その逆エクセルのVBAで記述したプログラムを動作に対応したアイコン等の流れで示すことは出来るのでしょうか?もしあったらどのような方法でしょう?

専門家に質問してみよう