今だけ人気マンガ100円レンタル特集♪

いつもお世話になっています。ちょっと前に http://bit.ly/29gdmC4 にてA1セルにフルパスを入力して、PDFファイルを開く方法を教えて頂きました。
教えて下さった、maiko0333さん、ありがとうございます。

教えたもらったコードにファイルが存在しなかった時のエラーコードを貼り付けて使ってみました。
すると、自宅のパソコンではうまくいくのですが、職場のパソコンでは予期しないエラーでうまく動作しません。

理由は多分、職場のPC環境のせいだと思っています。

自宅でテストする時は自分のパソコンのCドライブにアクセスしています。
ですが、職場のPCはネットワーク内にありA1セルで検索にいくPDFファイルはNASの中にあります。
しかもWiFiを経由するので無線環境下にあります。

要するに、、、、素人の判断ですが、多分、最初に「If Dir(Range("A1").Value, vbNormal) 」
で検索した時はファイルが見つかるのですが、実際にPowerShellでファイルにアクセスしたときに、モタモタしてしまい「該当なし」ではない別のエラーになってしまうのではないかと考えています。

という状況ですので、私が作成したような先にファイルの有無を確認するタイプのエラー対策ではなく、PowerShellでファイルが開けないという結果が出てからのエラー対策というのは出来ないのでしょか?

もし出来るのでしたら教えて下さい。
※安定していれば他の方法でも構わないです。

詳しい方、説明の上手な方、直接、コードで説明できる方、すいませんがよろしくお願いします。

※今日、明日と仕事が休みのため今、職場PCのエラーを記載することが出来ません。
職場PCのエラーメッセージは月曜日にこちらに貼り付けようと思っています。
※一応、エクセルの画面も貼り付けておきます。
※コードは以下の通りです。
※NASはバッファローのLinkStationです。

-------------
Sub Macro1()

If Dir(Range("A1").Value, vbNormal) = "" Then
MsgBox ("該当なし")
Else

Dim ターゲットパス As String
ターゲットパス = Range("A1").Value
Dim WSH As Object
Set WSH = CreateObject("Wscript.Shell")
WSH.Run Chr(34) & ターゲットパス & Chr(34), 1 '第2引数 WshWindowStyle は1が通常サイズ、2が最小化、3が最大化。好みでどうぞ」
Set WSH = Nothing

End If
End Sub

「PowerShellを使って関連付けられ」の質問画像

質問者からの補足コメント

  • エラーメッセージの画像です

    「PowerShellを使って関連付けられ」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2016/07/11 16:23

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

A 回答 (3件)

最初に、PowerShell って、前の人が使っていた言葉ですね。


PowerShell は、.Net FrameWork 由来のプログラミング言語で、VBScript に取って代わるものではあるのですが、なかなか、環境的にも、多くの人にも広まっていないような気がします。

"Wscript.Shell" は、Windows のオートメーション・オブジェクトの一部で、おもに、VBScript に使われます。

今回のWscript.Shell のRun メソッドは、拡張子の定義づけられたアプリが呼び出されるという仕組みです。

どんなエラーが出たかにもよりますが、

例えば、こんな内容のもの。
--------------------
実行時エラー '-2147024894(80070002)':
'Run'メソッドは失敗しました。'IWshShell3' オブジェクト
--------------------

ここを読んでみてください。
失敗の原因と思われることが書かれています。

https://www.moug.net/tech/exvba/0060072.html

>実は、WSHのRunメソッドに指定するファイル名には「空白を含まない」というルールがあります。
>ファイル名に空白が含まれていると、Runメソッドは空白までがファイル名であると認識してしまうのです。

そのために、もう一度、クォーテーション・マーク("")で囲んであげる必要があるかもしれません。

例えば、こんなふうに書き換えてみました。

Sub FileExecute()
 Dim WSH As Object
 Dim FName As String
 Set WSH = CreateObject("Wscript.Shell")
 FName = Range("A1").Value
 If Dir(FName, vbNormal) = "" Then
    MsgBox "ファイルが見つかりません。", vbExclamation
 Else
   WSH.Run """" & FName & """", 3
 End If
 Set WSH = Nothing
End Sub
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

リンク先の説明を読んでみました。
今のところどれもあてはまるようなものがないような気がします。
正直なところよくわかりませんが。

とにかく職場のNASとWifi環境下でないと試せないので、
すいませんが詳細の説明は月曜日以降ということにさせて頂きます。

もしご面倒でなければ月曜日以降に観て頂ければ補足のところで説明します。
※質問はしばらく閉じないとおきます。

いつもご解答ありがとうございます。

お礼日時:2016/07/09 22:34

>1回目のコードでバッチリです!


>どうしてこんなに安定しているのか不思議です。

思惑があたったというところですが、ファイルの種類がある程度決まっているなら大丈夫だと思います。

まあ、もしダメでも、解決方法はいくつか用意していますから、その時は、またお聞きになったらよいかと思いますが、分からなくなったら、コマンドプロンプト上で、試してみれば、だいたいのことはみえてくるはずです。
    • good
    • 1
この回答へのお礼

今回は本当にありがとうございます。
エラーメッセージの件ですが職場でお礼をアップした時には、
エラーメッセージがご指摘の症例だということに気が付きませんでした。

今落ち着いて読み返したところご指摘の通りで、確かにファイル名ではありませんが、
フォルダー名の一部に全角スペースがありました。

それとリンク先のページにあった「Chr(34)」と「""」が同じだということも今回初めて知りました。
前回教えて頂いた方のコードの中にも「Chr(34)」という文字があったのですが、
意味がわからないままスルーしていました。

今回は本当にありがとうございます。
VBAの本を2冊読み終え、そろそろ3冊目も読み終えます。
もうちょっと実力がついたら今まで頂いたアドバイスを読み返してみようと思っています。

今後ともよろしくお願いします。
今回は本当にありがとうございました。

お礼日時:2016/07/11 21:58

ちょっと、返事をつけやすいようにコメントを置いておきます。



今回のコードの手法は、あくまでも、Wscript.Shell オートメーション・オブジェクトを用いた方法であり、フォルダー・オプションの中で拡張子が登録してあるという前提が成り立っている中で、組み立てられたコードです。PCによって、例えば、拡張子が登録していなければ、何の意味もありません。

簡単に確認するには、エクスプローラーなどで、ファイルを選択して、クリックして、アプリが呼び出されるかどうかで決まります。

しかし、例えば、拡張子.pdf だけの話なら、本体のAcrobat Reader を呼び出せば済むことなのですし、拡張子によっていくつかのプログラムを呼び出すことも可能なのです。

また、#1 で書いている「""(ダブルコーテーション)」についても、ショートネームにすれば、不要なことなのです。もちろん、ChDir で、そのファイルのフォルダーに変更するという手もあるわけです。
Wscript.Shell を利用するのは、その一つでしかありません。
この回答への補足あり
    • good
    • 1
この回答へのお礼

返答が遅くなりすいません。
追加のアドバイスありがとうございます。

1回目のコードでバッチリです!
どうしてこんなに安定しているのか不思議です。
本当にありがとうございます。

前回のコードで解決ですがせっかくですので、
問題のエラーメッセージを貼り付けておきます。

>また、#1 で書いている「""(ダブルコーテーション)」についても、ショートネームにすれば、不要なことなのです。もちろん、ChDir で、そのファイルのフォルダーに変更するという手もあるわけです。

この件は今の私ではよくわからないのですが、ちょっとづつ勉強しようと思います。

あと前回のアドバイスで「VBScript」という言葉がありました。
これも初めて聞く言葉なので軽く調べておきます。

いつもいろいろアドバイスありがとうございます。

PS
先の通りエラーメッセージの件があるので、
一応、質問を閉じないで開けておきます。

※エラーメッセージは以下の通りです
タイピングミスはないと思いますが補足のところに画像も張り付けておきます。

「実行時エラー'-2147024894(80070002)':
'Run'メソッドは失敗しました:'IWshShell3'オブジェクト」

※今晩、No.1の答えにベストアンサーをつけて閉じる予定です。

いつも本当にありがとうございます。

お礼日時:2016/07/11 16:22

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

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

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

このQ&Aを見た人が検索しているワード

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

Q【EXCEL-VBA】PDFファイルを開いて印刷したい

お世話になります。
以前、以下のリンク先の質問でA1セルに入力されたファイル名(フルパスの)を取得し
PDFを開くマクロを頂きました。
※ご解答頂いたWindFallerさん、maiko0333さん、ありがとうございました。
このマクロはすごくシンプルで使いやすいので今でも仕事で使っております。

で、、、今回、これをカスタマイズして「印刷もしたい」と思ったのですが、
印刷するためのコードの追加方法がわかりませんでした。

このコードに固執してないので、別の方法でもかまいません。
ですが、ネットで調べたところ複雑なコードばかりでした。
リンク先のようなシンプルなコードでPDFファイルを開いて
印刷することって出来ないのでしょうか?

すいませんが詳しい方、説明の上手な方、
直接、コードで説明できる方、マクロでPDFファイルを開いて印刷するための
コードを教えて下さい。よろしくお願いします。


リンク先:PDFファイルを開くマクロ
「PowerShellを使って関連付けられたアプリケーションでファイルを開く時のエラー」
https://oshiete.goo.ne.jp/qa/9338065.html

追記
1)開いたPDFファイルを閉じる必要はありません。
開けっ放しでOKです

2)前述していますし、リンク先を見て頂ければわかると思いますが、
A1セルに入力するファイル名はフルパスです。
※詳細はリンク先の説明、画像をご覧ください

3)PDFファイルはどれも1枚だけです。
※複数ページのPDFはありません。

以上です。すいませんがよろしくお願いします。

お世話になります。
以前、以下のリンク先の質問でA1セルに入力されたファイル名(フルパスの)を取得し
PDFを開くマクロを頂きました。
※ご解答頂いたWindFallerさん、maiko0333さん、ありがとうございました。
このマクロはすごくシンプルで使いやすいので今でも仕事で使っております。

で、、、今回、これをカスタマイズして「印刷もしたい」と思ったのですが、
印刷するためのコードの追加方法がわかりませんでした。

このコードに固執してないので、別の方法でもかまいません。
ですが、ネットで調...続きを読む

Aベストアンサー

こちらを参考にして
https://www.moug.net/tech/acvba/0130005.html
こんな感じで動きました。(Windows7 64ビット , Excel2010 32ビット)

Option Explicit

Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hwnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long

Public Sub PrintPDF()
 Dim strPath As String

 strPath = Range("A1").Value
 ' 現在の位置とサイズで表示 5(SW_SHOW)
 Call ShellExecute(Application.hwnd, "open", strPath, vbNullString, vbNullString, 5)
 ' 印刷
 Call ShellExecute(Application.hwnd, "print", strPath, vbNullString, vbNullString, 5)
End Sub

こちらを参考にして
https://www.moug.net/tech/acvba/0130005.html
こんな感じで動きました。(Windows7 64ビット , Excel2010 32ビット)

Option Explicit

Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hwnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long

Public Sub PrintPDF()
 Dim strPath As String

 strPath = Range("A1").Value
 ' 現在の位置とサイズで表示 5(SW_SHOW)
 Call ShellExecute(Applica...続きを読む

QPDFファイルを開き、印刷し、閉じるマクロ

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ファイルを指定する必要があると思いますが、
その構文が判りません。
知っている方、教えて下さい。

Aベストアンサー

#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.aspx

#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 prin...続きを読む

QエクセルVBAで、PDFファイルを開きたい

セルに入力した値のブック(xls)を開く場合、
以下となりますが、↓

Sub セルに入力したブック名のブックを開く()
ブック名 = Cells(1, 2) 'B1セルの値を取り出す
Workbooks.Open Filename:=ブック名 & ".xls" '指定されたブックを開く
End Sub


これでPDFファイルを開きたいです。
記述をどうしたらよいでしょうか。
目的はPDFファイルの検索/照会をxlsにてしたいのです。
お手数ですがお願いいたします。

Aベストアンサー

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュールに
Sub test2()
Dim strFilePath As String
strFilePath = _
  Application.GetOpenFilename _
  ("PDFファイル,*.pdf", MultiSelect:=False)

If strFilePath = "false" Then
 Exit Sub
End If

Call Shell("explorer.exe " & strFilePath)

End Sub
でも?
ということかな?

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュー...続きを読む

Qセルにフルパスを入力してPDFファイルを開きたい

いつもお世話になります。

A1セルにフルパスを入力してPDFのファイルを
開くことってて出来るのでしょうか?

具体的に言うと画像1のような感じで、
ボタンを押すとフルパスの場所にある
PDFファイルが開くようにしたいのですが、
こいうことは出来るのでしょうか?

1)拡張子は関連付けしています
2)サブフォルダーはありません

対象とするファイルはフォルダーの中の.pdfファイルだけでいいです

3)最終的には画像2のようにテキストボックスからVBAでA1セルのパスを書き換えて
フォルダー内の他のファイル(PDF)を開けるようにしようと思っています。

4)コードが複雑になると見にくいので、とりあえずA1に記載されたフルパスから開くものを完成出来ればそれでいいです。

まだVBA初心者です。すいませんが詳し方、説明の上手な方で具体的にコードを記載出来る方、ご存じでしたら教えて下さい。よろしくお願いします。

Aベストアンサー

Sub ボタンクリック()
'PowerShellを使って関連付けられたアプリケーションでファイルを開く
Dim ターゲットパス As String
ターゲットパス = Range("A1").Value
Dim WSH As Object
Set WSH = CreateObject("Wscript.Shell")
WSH.Run Chr(34) & ターゲットパス & Chr(34), 1 '第2引数 WshWindowStyle は1が通常サイズ、2が最小化、3が最大化。好みでどうぞ」
Set WSH = Nothing
End Sub

QvbaでPDFファイルが印刷されない

エクセルのA列に「フォルダ場所+ファイル名.pdf」のリストを作成し、
PDFファイルを開き、印刷し、閉じるマクロを作成しましたが、全く印刷されません。
エラーが出て止まることなく、次々進んでいるのですが、肝心の印刷が実行されていません。

ネット検索で見つけたものをアレンジしたのですが、高度すぎて苦戦しています。
エクセルシートの内容は、
セルA2~には、フォルダ場所+ファイル名.pdf  例)C:\work\test1.pdf
C2には印刷実行数(ファイルの数)
を置いています。

どなたかご存知の方いらっしゃいましたら、どうか教えてください。
よろしくお願いいたします。

----------------------------------------------------

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

Sub PDF()

Dim AA, BB, CC, DD
Dim AAA, BBB
Dim i As Long

For i = 1 To Range("C2").Value


AA = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe /t "
BB = Range("A" & i + 1).Value
CC = Application.ActivePrinter
DD = AA & """" & BB & """" & " " & """" & CC & """"
Debug.Print DD
Set AAA = CreateObject("WScript.Shell")
Set BBB = AAA.exec(DD)
Sleep 1000
On Error Resume Next
BBB.Terminate
Set BBB = Nothing
Set AAA = Nothing

Next i

End Sub

エクセルのA列に「フォルダ場所+ファイル名.pdf」のリストを作成し、
PDFファイルを開き、印刷し、閉じるマクロを作成しましたが、全く印刷されません。
エラーが出て止まることなく、次々進んでいるのですが、肝心の印刷が実行されていません。

ネット検索で見つけたものをアレンジしたのですが、高度すぎて苦戦しています。
エクセルシートの内容は、
セルA2~には、フォルダ場所+ファイル名.pdf  例)C:\work\test1.pdf
C2には印刷実行数(ファイルの数)
を置いています。

どなたかご存知の方いらっしゃい...続きを読む

Aベストアンサー

yon56です。

私の参照設定と同じにしてみて下さい。

Visual Basic For Applications
Microsoft Excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object Library
Microsoft Forms 2.0 Object Library
Windows Script Host Object Model

残りの点として、
マクロのプリンターの名称をApplication.ActivePrinterとしないで、
プリンタとFAXに表示されたプリンターの名前をコピー貼付してみて下さい。

Application.ActivePrinterが正しく機能していないこともあります。

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 
これは...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

QPDFファイルを開かずに印刷したい

幾つものPDFファイルを印刷したいのですが、
できればAdobeReaderを起動させずに印刷したいです。

ファイルのアイコン上で右クリック→印刷でも可能ですが、
数が多くなると、この作業も大変です。
そこでVisualBasic2008ExpressEditionを使って、
簡単なシステムを作りたいと考えています。

しかし、PDFを開かずに印刷する方法が、どうしてもわかりません。
ネット検索、教えてgoo内の検索でもヒットせず途方に暮れています。
参考になるホームページや書籍がありましたら教えてください。
「こんな手法があるよ」というものでも構いません。

宜しくお願いします。

Aベストアンサー

PDFを開く際にACRORD32.exeに対して以下のコマンドラインを指定してください。

ACRORD32.EXE /s /l /p /h [PDFのパス]

コマンドラインの解説は参照URLを。

参考URL:http://scripting.cocolog-nifty.com/blog/2007/07/adobe_reader_81_e41e.html


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

人気Q&Aランキング