Excel 2003 VBAにて、
PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。

Dim AA, AAA

AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf"
AAA = Shell(AA, vbNormalFocus)

にて、PDFファイルを開くことは出来ました。
このPDFファイルを、「印刷し、閉じる」ためには、
このPDFファイルを指定する必要があると思いますが、
その構文が判りません。
知っている方、教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#3です。


WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional printerDriver As Variant)
Dim cmdLine As String
Dim WShell As Object
Dim oExec As Object
'ここは調整の必要がありそう
Const waitTime As Long = 1000
'Windows7 Home 64bitの場合です
Const pgmFullPath As String = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

Set WShell = CreateObject("WScript.Shell")
If IsMissing(printerName) Or IsMissing(printerDriver) Then
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
Else
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"" ""printerName"" ""printerDriver"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
cmdLine = Replace(cmdLine, "printerName", printerName)
cmdLine = Replace(cmdLine, "printeDriver", printerDriver)
End If
Debug.Print cmdLine
Set oExec = WShell.exec(cmdLine)
Sleep waitTime
'Windows7Home/64bit環境ではここで実行時エラーが出るので無理矢理先に進めていますが
'Adobe Readerは閉じられる様です
On Error Resume Next
oExec.Terminate
Set WShell = Nothing
End Sub

Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function

Terminateで原因不明のエラーが出るのでWebを漁っいて下記をみつけました。64bit環境でエラーが出るのはこれも関係しているのでしょうか?少々無理をしている様なので、ご使用時はご注意下さい。
Terminate メソッドは最後の手段としてのみ使用します。これは、アプリケーションによっては適切にクリーンアップできない場合があるためです。通常は、プロセスを途中で中断せず、プロセス自身で実行を終了させるようにします。Terminate メソッドは WM_CLOSE メッセージを使ってプロセスを終了しようとします。これで終了できない場合は、通常のシャットダウン手順を実行せずに、プロセスを強制終了します。
http://msdn.microsoft.com/ja-jp/library/cc364387 …
    • good
    • 0
この回答へのお礼

度重なるご教示ありがとうございました。
やっと完成しました。

お答えいただいたtest()とPrivate Function GetDesktopPath() As Stringの意味が理解できず正直苦しみました。
VBAの参照設定のなかで、
Windows Script Host Object Model
を追加せよとのことなんですよね。
Sleep関数の使い方は以前より知っていたのですぐ理解できました。
完成品を見て頂きたく、記載させてもらいます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub PDF()

Dim AA, BB, CC, DD
Dim AAA, BBB

AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe /t "
BB = "C:\Scan\MX-4111FN_20131003_162711.pdf"
CC = "RICOH MP C6003 白黒"
DD = AA & """" & BB & """" & " " & """" & CC & """"
Set AAA = CreateObject("WScript.Shell")
Set BBB = AAA.exec(DD)
Sleep 1000
On Error Resume Next
BBB.Terminate
Set BBB = Nothing
Set AAA = Nothing

End Sub

本当にありがとうございました。

お礼日時:2013/11/18 15:42

このViewの中に同様の質問が二つあるのに、灯台もと暗しというか面白いですね。

質問者様のコードに、コマンドラインオプションを追加するだけなのですが、関数化したので使いやすいかもしれません。
プリンター及び同ドライバ名は環境に合わせて下さい。指定しなければWindowsの標準プリンタに出力されます。
Sub test()
printPdf (GetDesktopPath & "\" & "test.pdf")
End Sub

Sub printPdf(pdfFullPath As String)
Dim objWShell As Object
Dim cmdLine As String
Dim printerName As String
Dim driverName As String

printerName = Chr(34) & "DocuWorks Printer" & Chr(34)
driverName = Chr(34) & "DocuWorks Printer Driver" & Chr(34)
Set objWShell = CreateObject("WScript.Shell")
cmdLine = "AcroRd32.exe /n /s /o /h /t " & pdfFullPath & " " & printerName & " " & driverName
objWShell.Run cmdLine, VbNormalFocus, True '連続実行時の誤動作が少ないことを期待して同期動作にしています。
Set objWShell = Nothing
End Sub

'これは試験の便宜上
Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function

参考URL:http://pdf-file.nnn2.com/?p=222
    • good
    • 0
この回答へのお礼

貴重なマクロ構文を教えていただきありがとうございます。
試したところ、印刷まではできましたが
アクロバットリーダー本体が閉じてくれません。

No2の方へのお礼欄に書きましたマクロ「SSS」と同じ状況です。
今一度ご教示をお願いします。

お礼日時:2013/11/15 10:18

参照先が繋がっていた


No1回答の
Adobe Reader で PDF ファイルを表示 / 印刷する方法

http://pdf-file.nnn2.com/?p=752http://www.f3.dio

http://pdf-file.nnn2.com/?p=752
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …

です
    • good
    • 0
この回答へのお礼

2度に渡るご回答ありがとうございます。
色々な関係サイトをご紹介頂き勉強になりました。
Sub SSS()
Dim AA, AAA
AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\MX-4111FN_20131003_162711.pdf"
AAA = Shell(AA, vbNormalFocus)
SendKeys ("^P"), True
SendKeys "{ENTER}"
SendKeys "%{F4}"
End Sub
では、PDFファイルが開くのみで、SendKeysが機能しませんでした。

そこで、知恵を絞りbatファイルを利用することにして、
Sub TTT()
Dim AA, AAA
AA = "START AcroRd32.exe /t ""C:\Scan\MX-4111FN_20131003_162711.pdf"" ""RICOH MP C6003 白黒"" ""50.28.99.211"""
AAA = "C:\XXX.bat"
Open AAA For Output As #5
Print #5, AA
Close #5
AAA = Shell(AAA, vbNormalFocus)
End Sub
を作りました。
印刷まではできましたが、アクロバットリーダー本体を閉じることができません。

いま少し、お知恵を拝借させてください。

お礼日時:2013/11/15 10:10

PDFファイルの印刷はReader上で行うので、Excelから直接実行はできません



VBAから実行するにはSendKeysでReaderを操作するのが一番簡単な方法
Readerがアクティブの状態で

SendKeys "^p", True
SendKeys "{ENTER}"

この2つを実行すれば印刷が始まります
SendKeysに関しては下記サイト参照
http://officetanaka.net/excel/vba/statement/Send …
http://www.moug.net/tech/exvba/0150016.html

終了動作もReaderがアクティブの状態で

SendKeys "%{F4}"

で終了できます


-----
その他の方法として

Adobe Reader で PDF ファイルを表示 / 印刷する方法

http://pdf-file.nnn2.com/?p=752http://www.f3.dio …

標準モジュール AdobeReaderは
https://app.box.com/shared/jisind0q7l

ココでダウンロードしたエクセルファイルに組み込まれています

私も、はじめ内容がよくわからなかったけど、Reader開かずにVBA上から直接印刷できるなど、理解できると結構便利に使えます
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QLサイズで撮影したものをL判で印刷できるか?

私が使っているデジタルカメラ。

デジカメ本体:Canon IXY DIGITAL 800IS
メモリー:1.0GB(ProMaxATP)

私のデジタルカメラの仕様。

撮影サイズ(記録画素数)→ 説明書に書いてある用途

L(2816×2112)→A3サイズに印刷するとき。
M1(2272×1704)→A4サイズに印刷するとき。
M2(1600×1200)→L判やハガキサイズに印刷するとき。
S(640×480)→電子メールで画像を送るとき。

さらに詳しい私のデジカメの仕様(CANONホームページより)

http://www.canon-sales.co.jp/camera/ixyd/800is/spec.html

質問

 【撮影サイズL】で撮影してもメモリーが1Gなので360枚程度撮ることが可能です。そこで、その設定で撮った写真を【L判】に印刷することができますか?

 また、【撮影サイズM1】で撮ったものも【L判】で印刷することは可能ですか?

 要するに、メモリーが1GBと余裕があり、被写体によって1枚ずつ撮影サイズを変更する必要は特にありません。そこで、全て【撮影サイズL】で撮り、ほとんど【L判】で印刷して、必要に応じてさらに大きなサイズで印刷しようと思っています。これは可能ですか?

私が使っているデジタルカメラ。

デジカメ本体:Canon IXY DIGITAL 800IS
メモリー:1.0GB(ProMaxATP)

私のデジタルカメラの仕様。

撮影サイズ(記録画素数)→ 説明書に書いてある用途

L(2816×2112)→A3サイズに印刷するとき。
M1(2272×1704)→A4サイズに印刷するとき。
M2(1600×1200)→L判やハガキサイズに印刷するとき。
S(640×480)→電子メールで画像を送るとき。

さらに詳しい私のデジカメの仕様(CANONホームページより)

http://www.canon-sales.co.jp/camera/ixyd/800is/spec.html

...続きを読む

Aベストアンサー

>【撮影サイズL】で撮影してもメモリーが1Gなので360枚程度撮ることが可能です。そこで、その設定で撮った写真を【L判】に印刷することができますか?

常に最高画質(サイズL、ファイン)で撮影して下さい。(後でファイルサイズを変更する事は可能です。)
大は小を兼ねても、小は大を兼ねる事は出来ないからです。

>【撮影サイズM1】で撮ったものも【L判】で印刷することは可能ですか?

可能です。

QExcel 2003 VBAにてマクロの実行中にESCキーにて中断されないようにしたい

Excel 2003 にてマクロの実行中にESCキーを押されるとコードの実行が中断されるのを抑制したいのですができません。

シートに直接テキストボックスコントロールを貼り付けています。
そのテキストボックスにKeyDownイベントプロシージャを記述しています。
テキストボックスにIMEの全角文字を入力中(未確定状態)の時に、ESCキーを押すとコードの実行を中断しましたというダイアログが出てしまいます。

KeyDownイベントプロシージャの内容の有無にかかわらず(処理は無記入でも)、ESCキーを押すとダイアログが表示されてしまいますので、ESCキーを押してもダイアログが表示されず処理が中断されない方法はありませんでしょうか。

調べましたところ、
Application.EnableCancelKey = xlDisabled
にてESCキーを無効にする事ができるそうなのですが、BOOKを開いた時のイベントにて
上記コードを記載しているのですが、抑制はできません。

何かしら別の方法で対応などはできないものなのでしょうか。
よろしくご教示をお願い申し上げます。

Excel 2003 にてマクロの実行中にESCキーを押されるとコードの実行が中断されるのを抑制したいのですができません。

シートに直接テキストボックスコントロールを貼り付けています。
そのテキストボックスにKeyDownイベントプロシージャを記述しています。
テキストボックスにIMEの全角文字を入力中(未確定状態)の時に、ESCキーを押すとコードの実行を中断しましたというダイアログが出てしまいます。

KeyDownイベントプロシージャの内容の有無にかかわらず(処理は無記入でも)、ESCキーを押すとダイア...続きを読む

Aベストアンサー

KeyDownイベントの内容がわからないので今ひとつ不安ですが、
以下で対応できるかもしれません。

'Sheetモジュール
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private flg As Boolean

Private Sub TextBox1_GotFocus()
  Application.EnableCancelKey = xlDisabled
  flg = False
  Do
    Sleep 1
    DoEvents
  Loop Until flg
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  '処理
End Sub

Private Sub TextBox1_LostFocus()
  flg = True
End Sub

KeyDownイベントの内容がわからないので今ひとつ不安ですが、
以下で対応できるかもしれません。

'Sheetモジュール
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private flg As Boolean

Private Sub TextBox1_GotFocus()
  Application.EnableCancelKey = xlDisabled
  flg = False
  Do
    Sleep 1
    DoEvents
  Loop Until flg
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shi...続きを読む

Q2Lサイズの写真のトリミングの取り方を教えて

デジカメの写真を、Lサイズだけでなく、2Lサイズにプリント出来る機械があったので、写真(JPEGファイル)を2Lサイズにプリントしたところ、出来上がった紙の写真のトリミングが適切でなく、写真の端のほうの写っていて欲しい部分がプリントからはみ出して印刷されませんでした。
どうすればこの機械で2Lサイズの写真で、好みのトリミングが出来るのでしょうか。

Aベストアンサー

デジカメ画像のアスペクト比は普通、2:3か3:4。
2Lサイズは、5:7
端が写っていないなら、画像のアスペクト比は、2:3。
通分すると、10:15の画像を10:14にプリントするので左右が切り取られるのです。
ですから、左右がトリミングされないようにプリントすれば良いのです。
その場合、当然、上下に余白ができます。

どんなプリンタをお使いか書いていないので、具体な設定は回答出来ません。
必要なら、使用カメラ、プリンタの機種を補足して下さい。

Qexcel vba 他ファイルマクロ処理中断、自己ファイルマクロ処理後、再度他ファイルマクロ継続方法

excel vbaで、他のEXCELファイルのマクロの処理を中断して、自己ファイルのマクロを処理後、再度他のEXCELファイルのマクロを継続して再度処理を行わせるにはどうすれば良いですか。教えて下さい

他のEXCELファイルとして、フリーソフトを利用しています。
そのソフトは、モジュールにロックが掛ってるので、その中のマクロなどを編集することはできません。(ロック解除などは考えていません。)
そのソフトを起動して、データファイル入力画面で、データファイルを入力して、処理をして、処理結果を保存することを、入力データファイルを変えながら、繰り返し行いたいです。
そこで、処理マクロを作成しています。その手順とVBAを説明します。

1)フリーソフト(違法なものではありません。)を開き、
2)そのフリーソフトのシート内のボタンを、VBAで、マウスカーソルを移動させて、マウスのキー操作で、「押す」「離す」を行い、
3)ファイルの初期化の問合せの警告が出るので、キー操作で、「Y」を押し、
4)データファイルの名称をクリップボードにコピーし
5)EXCELのカレントフォルダを、データファイルのあるフォルダに変えて
6)DoEventsとして、フリーソフトのデータファイル入力画面を開いています。
この時、画面のポインタは、データ入力画面のファイル名入力欄にあり、
この後、データファイル名をクリップボードから入力したいので、
キー操作で、「crtl+v」としたいのですが
フリーソフトのマクロが起動中で、作成している処理マクロに制御が移らないためと思いますが
入力できません。(人手での入力は可能ですが)、自動化したいので、どの様にすれば良いか教えて下さい。
マクロは長いので、抜粋して記載します。

sub a()
(宣言文省略します。)
Workbooks.Open freesoft
Dim mPSet As Long
mPSet = SetCursorPos(b,c)
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
keybd_event VK_Y, 0, fKEYDOWN, 0
keybd_event VK_Y, 0, fKEYUP, 0
Application.CutCopyMode = False
Dim d As New DataObject
With d
.SetText e
.PutInClipboard
End With
ChDrive f
ChDir g
DoEvents
(ここで、止まります。)
With d
.GetFromClipboard
.GetText
End With
keybd_event VK_RETURN, 0, fKEYDOWN, 0
keybd_event VK_RETURN, 0, fKEYUP, 0
DoEvents
Dim mPSet2 As Long
mPSet2 = SetCursorPos(h, i)
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
Workbooks(freesoft).SaveAs FileFormat:=xlNormal, Filename:=k
Workbooks(k).Close
End sub

excel vbaで、他のEXCELファイルのマクロの処理を中断して、自己ファイルのマクロを処理後、再度他のEXCELファイルのマクロを継続して再度処理を行わせるにはどうすれば良いですか。教えて下さい

他のEXCELファイルとして、フリーソフトを利用しています。
そのソフトは、モジュールにロックが掛ってるので、その中のマクロなどを編集することはできません。(ロック解除などは考えていません。)
そのソフトを起動して、データファイル入力画面で、データファイルを入力して、処理をして、処理結果を保...続きを読む

Aベストアンサー

フリーソフトに関する詳細が分からないのですが、たぶん、MsgBox、InputBox、または、モーダルのUserFormが表示されたタイミングで、動作待ちになっているものと思われます。動作待ちになるトリガーは、Workbooks.Open freesoftでしょうか?(Open直後にUserFormが表示される?)

であれば、次のように、Shell関数でブックを開くようにすれば良いと思います。
Dim FreeSoft
FreeSoft = Shell("Excel " & "C:\xxxxx\フリーソフト.xlsm",1)
MsgBox "フリーソフトが開くまでの時間稼ぎ!!"
AppActivate FreeSoft

その後は、SendKeysステートメントでフリーソフトを操作することになります。たぶん、mouse_eventやkeybd_event も使えると思います。
ただし、Workbooks(freesoft).SaveAs 等は使えなくなるので、SendKeysによるキーボード操作で保存動作を行う必要があります。

Q卵のMとLサイズについて

ケーキを作ろうと思ってLサイズの卵を
買ったつもりがMサイズでした><
レシピはLサイズ3個分なんです・・・(T。T)
Mサイズの卵を計ってLサイズ分に
して作りたいのでLサイズの
卵白と卵黄の教えてください。

Aベストアンサー

MもLも気にする事無く、そのままレシピでMサイズの3個使って作って下さい。
これがSとLだったらかなりの差になるけど、MとLなら気にする必要は皆無です。
基本的には黄身はほとんど変わらずに、大きくなるにつれて白身の割り合いが増えていきます。

Mサイズ:58~64g未満
Lサイズ:64~70g未満
で殻も全部ひっくるめて重さです。
MとLの差は平均6g、黄身の量にいたっては1gくらい、つまり白身だと5gくらい違うか違わないかです。

0.1gでも気になる超神経質な方なら、白身を15gだけ足して下さい。

よく作るけど、卵3個程度のケーキのレシピなら卵のMとLの違いで失敗する事はないですね。
牛乳大さじ1入れて調整する程度です。
失敗するのは他の要因(粉を混ぜ過ぎとか)です。

QExcel VBA: 自動でxlsファイルを開くマクロでメッセージが現れたとき自動でボタンを押す方法

自動で同ディレクトリ内のxlsファイルを開くマクロを作っています。
開きたいファイルにリンクが張られてあると、「リンクを更新しますか?」という類のメッセージウィンドウが現れるのですが、マクロでこれを自動的に「Yes」「No」と答えるにはどうしたらよいのでしょうか。一応、下のマクロでファイルを開こうとするとこまではできてます。
 Sub update()
Dim DataFile As Workbook
Dim fn As String
fn = "Link.xls"
Set DataFile = Workbooks.Open(FileName:=ThisWorkbook.Path & "\" & fn)
Set DataFile = Nothing
End Sub

Aベストアンサー

Workbooks.Openの2番目の引数が、UpdateLinksなので
Set DataFile = Workbooks.Open(FileName:=ThisWorkbook.Path & "\" & fn , True)
でどうでしょうか?

Q携帯でLサイズ写真

「携帯で撮影したLサイズ以上の写真」

というのは、100万画素を超えるもの(640×480以上)のことでしょうか?

でもそれより小さいものでもLサイズにのばせるしなあ、と考えると
「」内の言葉の意味がよくわからなくて・・・・(^^;)

この言葉の意味は「Lサイズにのばしたときに画像としてきちんと見られるもの」
ということでしょうか?

Aベストアンサー

Lサイズの定義がなんとも曖昧なので断言はできませんが、私の推測は、例えば今時の携帯内蔵カメラは200万画素クラスを備えており、撮影した画像をそのままメールに添付しようとした場合は、携帯キャリアごとに定められている添付容量制限のためにリサイズせねばなりません。(200万画素のフォトサイズは1600×1200でおよそ700KB前後)
リサイズして640×480に変換したものは100KB前後でなんとかギリギリで添付できるかなというところです。(auの場合)

Lサイズ以上がダメということならば、Lサイズ=640×480の予測どおりに違いないと思います。
Lサイズ以上が欲しいということであれば何の問題もないわけですし…。

QEXCEL VBAでPDFファイルを開いて印刷

Excel VBAで指定してフォルダのPDFファイルを開いて印刷したいです(できれば閉じるところまで)。
開くところまではできたのですが、その先に印刷するのはどのようにしたら良いか教えてください。
安直な考えで開いた後のコードに何か付け足せばいけるのかと思って色々調べてはみたのですが、
そもそも開く段階で別のコマンドを指定しないといけないのでしょうか。
ちなみに、フォルダは変動しませんがファイル名はA1に入っている文言を拾うようにしています。

現在のコード
Sub printpdf()
Dim keyword As String
Dim myPath As String
Dim fName As String

keyword = Worksheets("Sheet1").Range("A1").Value
myPath = "\\フォルダのパス\"
fName = Dir(myPath & keyword & ".pdf")

If fName = "" Then
MsgBox ("該当するファイルが存在しません。")
Exit Sub
End If

Shell ("explorer.exe " & myPath & fName)
fName = Dir()
End Sub

Excel VBAで指定してフォルダのPDFファイルを開いて印刷したいです(できれば閉じるところまで)。
開くところまではできたのですが、その先に印刷するのはどのようにしたら良いか教えてください。
安直な考えで開いた後のコードに何か付け足せばいけるのかと思って色々調べてはみたのですが、
そもそも開く段階で別のコマンドを指定しないといけないのでしょうか。
ちなみに、フォルダは変動しませんがファイル名はA1に入っている文言を拾うようにしています。

現在のコード
Sub printpdf()
Dim key...続きを読む

Aベストアンサー

#4の回答者です。

>ちなみにプリンターバッファの問題とはバッファにデータが残ってしまうのでしょうか?

ある一定量を越えると、プリンターがうんともすんとも反応しなくなってしまうことがありました。マクロはすごく速く処理してしまうのに、プリンターのほうは、実際に印刷時間がありますから、ギャップがあるのです。

Sleep 1000  '1秒
------------------
cnt = cnt + 1
If cnt > 100 Then Exit Sub

で、ほんのちょっとの時間稼ぎはしています。
ちなみに、
If cnt > 100 Then Exit Sub 
これは、ハンドルが取れない時の保護処理です。

なお、sendkeys は、例えば、エクセルで発生させると、エクセル内に関しては、うまくいくこともありますが、外部には働かないことが多いです。
もし、Sendkeys を試すなら、
  CreateObject("Wscript.Shell").SendKeys "%{F4}"
を試してみることですね。

>キーワードが頭に無い為調べ方すら分からないレベルだったので勉強になりました。
そういう私も、もう一度勉強し直します。WMで始まる命令って4個ぐらいしかないのですが、実は、他の定数で、もっと一杯あることを最近知りました。ネット検索でも、ぜんぜん出てこないのですね。(探し方にVB限定で検索するのが、問題があるようです)

#4の回答者です。

>ちなみにプリンターバッファの問題とはバッファにデータが残ってしまうのでしょうか?

ある一定量を越えると、プリンターがうんともすんとも反応しなくなってしまうことがありました。マクロはすごく速く処理してしまうのに、プリンターのほうは、実際に印刷時間がありますから、ギャップがあるのです。

Sleep 1000  '1秒
------------------
cnt = cnt + 1
If cnt > 100 Then Exit Sub

で、ほんのちょっとの時間稼ぎはしています。
ちなみに、
If cnt > 100 Then Exit Sub 
これは...続きを読む

QLサイズ以上のミニバンを購入する理由って何ですか?

Lサイズ以上のミニバンを購入する理由って何ですか?

できれば、実際にLサイズミニバンを所有されている方にお聞きしたいです。
Lサイズミニバンを購入した理由は何ですか?

※ここで言う「Lサイズミニバン」とは、
(1)アルファード(ヴェルファイア)
(2)エスティマ
(3)エルグランド
(4)エリシオン
(5)他(ラグレイト、プレサージュ、マークXジオなどの3500cc搭載車)
を指します。

Aベストアンサー

必要だからです。

ACR40W エスティマ2.4 4WD所有です。

家族が自分を含め6人、さらに自分の親を加えると8人。
全員で移動する場合も考えての理由です。

また、自営で商売をしてますので配達にも使います。

都市部であれば、公共交通機関が発達してますので移動手段が選択できますがこちらは北海道の片田舎。
マイカーが主たる移動手段です。

家族で長距離移動もしますので、Lサイズミニバンを選択というか、それしか選択肢がありません。

Qエクセル2003 VBAマクロにて 背景色 白色の抽出

エクセル2003のマクロでセル背景色にて抽出したいのですが
背景色が白色(空白)の抽出ができません。
背景色別に 他セルに文字を自動記入したいのですが、
背景色が白(collorindex=0)の認識をしてくれません。
カラーインデックスでは、白は「0」か「2」になっているので
その値でマクロを組んでも認識してくれないようです。
どのようにすればよいのでしょうか?

以下に私(素人)のマクロ文(一部)です。ご指摘お願い致します。

Dim 行番号 As Integer
行番号 = 7
Do Until Cells(行番号, 1).Value = ""
If Cells(行番号, 9).Interior.ColorIndex = 5 Then
Cells(行番号, 14).Value = "3号機"

  ElseIf Cells(行番号, 9).Interior.ColorIndex = 7 Then
Cells(行番号, 14).Value = "4号機"

ElseIf Cells(行番号, 9).Interior.ColorIndex = 0 Then
Cells(行番号, 14).Value = "未加工"
End If
行番号 = 行番号 + 1
Loop

エクセル2003のマクロでセル背景色にて抽出したいのですが
背景色が白色(空白)の抽出ができません。
背景色別に 他セルに文字を自動記入したいのですが、
背景色が白(collorindex=0)の認識をしてくれません。
カラーインデックスでは、白は「0」か「2」になっているので
その値でマクロを組んでも認識してくれないようです。
どのようにすればよいのでしょうか?

以下に私(素人)のマクロ文(一部)です。ご指摘お願い致します。

Dim 行番号 As Integer
行番号 = 7
Do Until Cells(行番号,...続きを読む

Aベストアンサー

ヘルプのColorIndex プロパティには、
「xlColorIndexNone 塗りつぶしを行わない場合に指定します。」
とあります。

「0」ではなくて、「xlColorIndexNone」として下さい。

If Cells(行番号, 9).Interior.ColorIndex = xlColorIndexNone Then


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング