ここから本文です

表1に例のように数字を入力してボタンを押すと、

iwa********さん

2019/9/1414:04:46

表1に例のように数字を入力してボタンを押すと、

2.pdf→1.pdf→3.pdf→4.pdf→2.pdf→1.pdf→5.pdf→1.pdf→2.pdfといった順にPDFを印刷できるようにしたいのですが、どうすればいいのでしょうか。

Columns.Count,AcroRd32.exe,Set ws,2 To Cells,pdf&quot,ボタン,数字

閲覧数:
70
回答数:
2
お礼:
100枚

違反報告

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

Prometheusさん

2019/9/1422:37:41

一応、載せておきますが、実際には、意味はありません。

と言うのは、「(Aさん)2→1→3→(Bさん)4→2(Cさん)1→(Dさん)5→1→2」とプログラムでは、実行していますが、実際には、そのとおりには、印刷されない場合が多々あります。

理由は、プログラムでは、「印刷」というのは、パソコンの印刷用のデータを格納する場所にスプール(保存)してゆきます。

そして、プリンタは、そのスプールされたデータを印刷するのですが、このとき、「1→2→3」とプログラムで出力しても、スプールされる順番が「1→3→2」などとなってしまうのです。

これをプログラム側で制御できないのです(きっと出来るのだと思うのですが、かなり本格的なかなり難しいプログラムになるものと思われます)。

Sub Sample()
Dim ws As Object, p As String
Dim i As Long, j As Long
Set ws = CreateObject("WScript.Shell")
p = ThisWorkbook.Path & "\"
For i = 2 To Range("A2").End(xlDown).Row
For j = 2 To Cells(i, Columns.Count).End(xlToLeft).Column
ws.Run "AcroRd32.exe /t " & p & Cells(i, j).Value & ".pdf"
Next j
Next i
Set ws = Nothing
End Sub

簡単な説明です。

Set ws = CreateObject("WScript.Shell")

「コマンドプロンプト」を扱うのに必要です。

p = ThisWorkbook.Path & "\"

マクロを走らせているブックが保存されているフォルダ+「\」を「p」に入れています。

For i = 2 To Range("A2").End(xlDown).Row

2行目から列「A」についての最終行まで繰り返します。

For j = 2 To Cells(i, Columns.Count).End(xlToLeft).Column

2(B)列目から、その(i)行の最終列までを処理。

ws.Run "AcroRd32.exe /t " & p & Cells(i, j).Value & ".pdf"

「1」なら、「マクロを走らせているブックが保存されているフォルダ+\+1.pdf」というファイルをプリントアウトしています。

Next j
Next i

を、繰り返しています。

Set ws = Nothing

「Set」で使用した変数は、「Nothing」で解放しておきます、

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

1〜1件/1件中

mike22ymdさん

2019/9/1414:49:51

2.pdf→1.pdf→3.pdf→4.pdf→2.pdf→1.pdf→5.pdf→1.pdf→2.pdf
てのはどういう規則に基づいた順番なの?

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

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

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

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

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

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

閉じる

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

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

閉じる