• 締切済み

EXCEL VBA sendkeysについて

マクロ Sub PRT() ・・・・・・・ sendkeys "%FP",TRUE <- ここで プリンター指定、両面指定 等を手動で設定します MSGBOX " 終了" End Sub EXCEL2003以前では メッセージ" 終了" を表示せず 印刷設定画面が表示されましたが EXCEL2007以降は 印刷設定画面を表示せず メッセージ" 終了"が表示され 印刷設定が 変更できなくなりました。 どなたか 対処方法を教えて頂けないでしょうか?

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

Application.Dialogs(xlDialogPrint).Show こっちを使うべきなんじゃ・・・ sendkeysやる前にフォーカス外れたら どうするんでしょうね?

maru0130
質問者

お礼

大変有り難うございます。 2007以後は 上記方法で手動設定に変更します。

関連するQ&A

  • エクセルの印刷ダイアログをSendkeysで操作したい。

    エクセルのマクロ処理でフォーム上のボタンから 印刷ダイアログを呼び出して、そのダイアログを Sendkeysでもって両面印刷設定にし印刷させると いう処理を行いたいのですが上手くいきません。 印刷ダイアログが表示された段階で止まり(エラーで 止まるわけではなく単に処理が止まる)、その先の Sendkeysによる命令へ進みません。 Private Sub CommandButton1_Click() Application.Dialogs(xlDialogPrint).Show SendKeys "%r", True SendKeys "%k", True SendKeys "^{tab}", True SendKeys "^{tab}", True SendKeys "^{tab}", True SendKeys "%r", True SendKeys "{enter}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "{enter}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "{enter}", True End Sub よくSendKeysは環境によって誤作動などが起こるので 使わない方がいいと言われますが、一度どのように 動くのか試してみたいと思っています。 ちなみに上のコードは当方のプリンタでの設定手順となります。 SendKeysで印刷ダイアログにキーを送ることは できないのでしょうか? 宜しくお願いします。

  • 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の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」が送られた動作になってしまいます。 すみませんが、お知恵を貸していただけませんでしょうか。 よろしくお願いします。

  • SendKeysを使いたい。

    SendKeysを使いたい。 XP-Excel2003です。 Microsoft Bisual Basicのヘルプに記述してある次の構文のうち、 SendKeysが実行されません。 Dim ReturnValue, I ReturnValue = Shell("CALC.EXE", 1) AppActivate ReturnValue For I = 1 To 20 SendKeys I & "{+}", True Next I SendKeys "=", True SendKeys "%{F4}", True F8キーにて、順次実行は出来るのですが、SendKeysが有効になりません。 参照設定の何かにチェックがついていないのだと思います。 その何かを、または別の方法をお教え願います。

  • エクセルVBAで SendKeys "{TAB}"

    エクセル2000です。 一つのブックに何枚かシートがあります。 各シートは保護されており、いくつかロックされていないセルがあります。 各シートの最初のロックされていないセル(シートにより異なります)にカーソルを飛ばしたいのですが、下記のようにやってもセルA1が選択されたままで飛んでくれません。 どこが悪いのでしょうか? Sub TEST() Dim sh As Worksheet For Each sh In Worksheets sh.Activate sh.Cells(1, 1).Activate SendKeys "{TAB}" MsgBox ActiveCell.Address Next End Sub なお、 sh.EnableSelection = xlUnlockedCells を挿入すればSendKeys "{TAB}"がなくとも、カーソルが飛びますが、今回はEnableSelection = xlUnlockedCellsしたくないのです。 よろしくおねがいします。

  • エクセルVBAで他のアプリにデータ転記後の質問です

    以下は、エクセルVBAでメモ帳を立ち上げ、データを転記するコードです。 一応、作動します。 ところが、データ転記後、手動でエクセルシートに触らないと、あるいはメモ帳を終了しないと、MsgBox "終了しました。" がでてこないのです。 ノートパッドを終了させず、またエクセルをクリックしなくとも終了メッセージが出るようにするにはどうしたらよいのでしょうか? Thisworkbook.activateを入れてみてもだめでした。 Sub TEST_Sendkey()   Dim App As String, tmp As String   Dim Ret, myAr   Dim i As Long, n As Long   tmp = ActiveSheet.Name   App = "notepad.exe"      MsgBox App & "を実行します"   Ret = Shell(App, vbNormalFocus)   AppActivate Ret, True   myAr = Split("A11,B22,C33", ",")   For n = 1 To 5     For i = 0 To UBound(myAr)       SendKeys myAr(i)       SendKeys "{TAB}"       Application.Wait Time:=Now + TimeValue("00:00:01")     Next i     SendKeys "{ENTER}"   Next n   MsgBox "終了しました。"   Exit Sub End Sub よろしくお願いいたします。 (o。_。)oペコッ

  • Excel VBAでのシートの削除について

    Excel VBAで、シート上に配置されたボタンをクリックすることで、メッセージを出さずにそのシートの削除をしたいと思っています。 サンプルとして、シート上(例えばSheet1)にボタンを1個配置し、 ------------------------------------------------------- Private Sub CommandButton1_Click() Application.DisplayAlerts = False Delete Application.DisplayAlerts = True End Sub ------------------------------------------------------- のようにすると、オートメーションエラーが起きます。 そこで、 Application.DisplayAlerts = True をコメントアウトしてやれば実行はできるのですが、その後別のシートで処理を行う場合には、再度メッセージを表示してほしいと思っています。 ためしに、Sheet1削除後にアクティブになるSheet2に次のようなコードを記述しました。Sheet1同様、シート上にボタンを1個配置しています。 ------------------------------------------------------- Private Sub CommandButton1_Click() MsgBox Application.DisplayAlerts End Sub Private Sub Worksheet_Activate() MsgBox "次に出るメッセージはアクティブ直後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts Application.DisplayAlerts = True MsgBox "次に出るメッセージは変更後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts End Sub ------------------------------------------------------- こうすれば、Sheet1削除後、アクティブになった直後はDisplayAlertsがFalse。その後設定変更してTrueになるかとおもったのですが、結果はFalseでした。しかしその後、ボタンをクリックするとTrueが返ってきました。 いろいろ調べましたが、なぜこのような結果になるのかわかりません。よろしくお願いいたします。

  • 【sendkeysメソッドが動かずに苦慮しております】

    【sendkeysメソッドが動かずに苦慮しております】 OS:2000 Excel:2003 VB:6.5 こんにちは。 sendkeysメソッドが動かずに苦慮しております。 ネットでいろいろ調べてみましたが、やはり正常に動かすのは難しい様です。 実際、何をしたいのかと言うとプリンターの出力時の設定を変更したいと思っております。 会社のプリンターですが方針でデフォルトが「両面」「2分割」で設定されております。 ただ複数ファイルの跨ったプレゼン資料などを大量に出力する際は「片面」「分割なし」 で設定を変更してプリントアウトしたいと思っており、いろいろ調べた結果Sendkeysを 使うことにいたしました。 ただ、先に申し上げた通りsendkeysメソッドが動かず悩んでおります。 素人の不躾けなご質問で大変申し訳ありませんが、解決できる方法をご存知の方ご教授ください。 sendkeysメソッドを使わない方法でも問題ありません。 以下、ダイアログを表示させ、タブを移動させるまでのコードです。 それではどうぞよろしくお願いいたします。 Sub AAA() Dim FOS As FileSystemObject Dim FolderC As Folder Dim FilesC As Files Dim FileC As File Dim FileName, Path_Name As String Set FOS = CreateObject("scripting.filesystemobject") Set FolderC = FOS.GetFolder("C:\Documents and Settings\AAAAA\デスクトップ\TEST") Set FilesC = FolderC.Files Path_Name = "C:\Documents and Settings\AAAAA\デスクトップ\TEST\" For Each FileC In FilesC FileName = FileC.Name Workbooks.Open FileName:=Path_Name & FileName ActiveWorkbook.Worksheets(1).Select With Application .SendKeys "^{P}", True .SendKeys "%r", True .SendKeys "^{tab}", True .SendKeys "{tab 3}", True End With ActiveWorkbook.Close False Next Set FOS = Nothing End Sub

  • Excel VBAを使って給紙方法を変更する(キーストローク使用)

    ExcelのVBAを使って印刷するものによって給紙方法を変えたいと思っています。 調べてみたところ'SendKeysステートメントを使うと設定できそうだったので、下記のような命令文を作ってみたのですがうまく動きません。 どなたか詳しい方いらっしゃいましたら教えていただけないでしょうか? OS:WindowsXP 使用ソフト:Microsoft Excel2003 使用プリンタ:NEC PR-2860N 【コマンドボタン】 本書印刷 → 印刷範囲:「一枚目」(あらかじめ設定してある名前)  給紙方法:自動  控え印刷 → 印刷範囲:「二枚目」        給紙方法:ホッパー2 Private Sub 控え印刷_Click() With ActiveSheet.PageSetup .PrintArea = "二枚目" End With MyPrinterSet ActiveSheet.PrintOut End Sub ―――――――――――――――――――――――――――――― Private Sub 本書印刷_Click() With ActiveSheet.PageSetup .PrintArea = "一枚目" End With MyPrinterSet2 ActiveSheet.PrintOut End Sub ――――――――――――――――――――――――――――――― Private Sub MyPrinterSet() 'SendKeysステートメントでプリンタ設定 '自動給紙から手差しへ変更 ActiveSheet.Select SendKeys "%FU"    'Excel画面でファイル(F)、ページ設定... SendKeys "%O"    ‘オプション SendKeys "{TAB 8}"  ‘一番端の[メイン]のタブに合わせる SendKeys "{RIGHT}" ‘一つ右の[用紙]タブへ移動 SendKeys "%S"    ‘給紙方法選択 SendKeys "{DOWN 2}" 'ホッパー2に設定 SendKeys "{ENTER}"  SendKeys "{TAB 5}" ‘[用紙]タブを選択 SendKeys "{LEFT}" ‘一つ左の[メイン]タブへ移動 SendKeys "{ENTER 2}"  ―――――――――――――――――――――――――――――― End Sub Private Sub MyPrinterSet2() 'SendKeysステートメントでプリンタ設定 '例、EPSON LP-****を手差しから自動へ変更 ActiveSheet.Select SendKeys "%FU" 'Excel画面でファイル(F)、ページ設定... SendKeys "%O" SendKeys "{TAB 4}" ‘初期値へ戻すを選ぶ SendKeys "{ENTER 4}"  End Sub ――――――――――――――――――――――――――――――

  • VBAでエクセルの表をワードに入力

    Excel/Word2002使用です。 ワードへの入力を自動化するためにVBAを使用してエクセルの表をワードのテンプレートに渡したいのですが。 エクセルのA1:C8のセルに表として値が入力されています。 この表をコピーしてワードに貼り付けます。 ワード側は何も入力されていない文書ですが、 テンプレートが用意されているので、このテンプレートを指定してワードを立ち上げます。 ワードに貼り付けられる表はタブ区切りです。 具体的には下記コード3行目の”winword.exe”を具体的なテンプレートのパス名にしたいのですが・・・ Sub word貼り付け() Dim mytskID As Double Range("A1:C8").Copy  mytskID = Shell("winword.exe", vbNormalFocus)  Application.Wait Now + TimeValue("00:00:10")  Application.SendKeys "^v", True  Application.Wait Now + TimeValue("00:00:10")  Application.SendKeys "%fa", True  Range("A1").Copy  AppActivate mytskID  Application.SendKeys "^v", True  Application.SendKeys "~", True  Application.Wait Now + TimeValue("00:00:05")  Application.SendKeys "%fx", True  Application.CutCopyMode = False MsgBox "完了しました" End Sub なお、上記コードも教科書通りにしたはずなのですが、 何故か「名前をつけて保存」のSendKeys "%fa"のときだと思うのですが、 ワード側ではファイルメニューの罫線が反応してしまいます。 あわせてご教授いただければ幸いです。 よろしくお願いします。

専門家に質問してみよう