ここから本文です

【質問】Office2010のExcelやWordファイルを他者から受取った時に、何も考えず、

har********さん

2018/12/1410:01:46

【質問】Office2010のExcelやWordファイルを他者から受取った時に、何も考えず、

印刷したらカラーになってしまいました(デバイスとプリンターにあるプリンタの印刷設定をみると通常時に適応されるカラー設定は白黒になっています。)。
たぶん、ファイル自体にカラー印刷の情報が保持されているため
このようになったのだろうと思います。
業務用のフォルダにこのようなファイルが幾つか存在するのですが、
VBSで、これらのファイルの印刷設定を白黒に設定する方法はありますか?
Excel・Wordどちらかでもいいのでアドバイスよろしくお願いします。

閲覧数:
60
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2018/12/1422:43:55

エクセルの場合は、エクセルの設定でモノクロに出来るのですが、ワードの場合は、「モノクロ」の設定がワードにないみたいです(検索したりした結果、分からなかっただけで、あるのかも知れませんが・・・)。

https://www.relief.jp/docs/word-vba-pagesetup-object.html

エクセルの場合の「VBScript」です。

エクセルのブックをドラッグ&ドロップしてください(今は、拡張子が「xlsx」のみ対応しています)。

Option Explicit
Dim bk, ex, i, so, wa
Set so = CreateObject("Scripting.FileSystemObject")
Set wa = WScript.Arguments
Set ex = CreateObject("Excel.Application")
ex.Application.DisplayAlerts = False
ex.Visible = False
For i = 0 to wa.Count - 1
If LCase(so.GetExtensionName(wa(i))) = "xlsx" Then
Set bk = ex.Workbooks.Open(wa(i))
bk.ActiveSheet.PageSetup.BlackAndWhite = True
bk.ActiveSheet.PrintOut
bk.Close
Set bk = Nothing
End If
Next
ex.Quit
Set ex = Nothing
Set wa = Nothing
Set so = Nothing

簡単な説明です(必要ないと思いますが)。

Option Explicit

「厳密に」というような意味で、このオプションを設定すると、変数は、その使用の前に、必ず、「Dim」等によって、宣言しておかなければなりません。

Set so = CreateObject("Scripting.FileSystemObject")

ファイルやフォルダを扱えるようにしています。

Set wa = WScript.Arguments

ドラッグ&ドロップされるのを待っています。

Set ex = CreateObject("Excel.Application")

エクセルを扱えるようにしています。

ex.Application.DisplayAlerts = False
ex.Visible = False

「上書きしますか?」などと聞いてこないように、また、エクセルを表示しません。

For i = 0 to wa.Count - 1

ドラッグ&ドロップされたファイルを1つずつ処理。

If LCase(so.GetExtensionName(wa(i))) = "xlsx" Then

拡張子が「xlsx」なら(「LCase()」は、英字を小文字に変換する関数で、「so.GetExtensionName()」は、「Scripting.FileSystemObject」の機能を使って(頭の「so.」)、拡張子を取得します)、

Set bk = ex.Workbooks.Open(wa(i))

ドラッグ&ドロップされたファイルを1つずつ開きます。

bk.ActiveSheet.PageSetup.BlackAndWhite = True

★★★肝心なのはここだけです★★★

もちろん、開いたブックのアクティブシートを「モノクロ」に設定しています。

bk.ActiveSheet.PrintOut

アクティブシートをプリントアウトしています。

bk.Close
Set bk = Nothing

閉じています。

End If
Next

を、ドラッグ&ドロップしたファイルで繰り返しています。

ex.Quit
Set ex = Nothing

エクセルそのものを終了しています。

Set wa = Nothing
Set so = Nothing

「Set ~」で使った変数は、その使用後、「Nothing」で解放しておきます。

  • 質問者

    har********さん

    2018/12/1716:57:36

    コードまで記述していただき恐縮です。
    しっかり確認後にお返事したいとも思いますが、
    それでベストアンサーを付け忘れたことがございますので現時点の理解でお礼いたします。

    Excel用のVBSコードを1から作っていただきお手数をおかけしました。
    また、操作部分まで記述していただいて恐縮です。
    個人的にはディレクトリ以下のファイルを全て白黒にするつもりでいたんですが、
    Drag & Dropした個別のファイルを白黒にするのも便利に感じます。

    Wordの白黒の設定項目についてはまだ解っていませんが、
    Excelのが解っただけでもだいぶ前進しました。ありがとうございます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/12/17 16:57:54

助かりました!

ベストアンサー以外の回答

1〜1件/1件中

ko3********さん

2018/12/1410:05:42

http://faq.ricoh.jp/app/answers/detail/a_id/165/~/microsoft-excel%E...
カラーで印刷したいのに白黒されるはあるけど、逆はあるんか?
これがチェックされるvba作ればいいと思うけど

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる