アプリ版:「スタンプのみでお礼する」機能のリリースについて

A1セルにアクティブセルが(アクティブセルの場所が)、
印刷した時に何ページ目に印刷されるのか
ページ数を入力したいと思っております。

いろいろ調べてみたのですが良い方法が見つかりませんでした。
以下のサイトは参考なり、かなり良いところまでいっており、
自分なりにいろいろ試行錯誤してみたのですが、
実際に動作するところまでは至りませんでした。

すいませんが、A1セルにアクティブセルが印刷した時に
何ページ目に印刷されるのかのページ数を入力する方法を教えて下さい。
方法はリンク先のように関数を利用しても、マクロでもOKです。

すいませんが詳しい方、説明の上手な方で
具体的に関数やマクロのコードで説明できる方、よろしくお願います。

リンク1
エクセルで、印刷ページ数を 「セル」に 返す方法はありますか?
http://bit.ly/2pyrIsX

リンク2
http://www2.odn.ne.jp/excel/waza/print.html#SEC12

リンク3
https://oshiete.goo.ne.jp/qa/1467879.html

参考
リンク1の通りに名前の定義を設定し
以下のマクロを実行するとアクティブセルに関数の入ったD1セルを
コピーすることによって、アクティブセルのページ数がわかります。

ですが、、、、アクティブセルに関数がコピーされてしまうし、
A1セルにページ数を表示することも出来ないので、この方法はだめです。

参考になれば幸いです。

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

Sub Macro1()

Range("D1").Copy
ActiveCell.Select
ActiveSheet.Paste

Application.CutCopyMode = False

End Sub

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

  • うれしい

    改ページプレビューの画面の画像です。

    タブレットのプリントスクリーンでなく、
    通常のパソコンのものなので、
    実際の画面はもっと小さいです。

    ※すいませんタブレットの方はソフトウエアキーで、
    プリントスクリーンの割り当てがないため、
    キャプチャーの方法がわかりませんでした。

    「A1セルにアクティブセルのページ数を入力」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2017/04/28 15:37
  • うれしい

    fujilinさんへ:No.3の続きです。

    400文字しか入力出来ないので、すいませんが入力可能なところで区切っておきますね。

    3)
    A1セルもいつも見えているとは限らなそうなので、セルに表示するのが良いのかどうかも疑問に感じてしまいました。

    No.1のご質問の最後の方に記載した通り、3行でウインドウ枠を固定しております。
    なので10ページ目にジャンプしても、19ページ目にジャンプしても
    3行目までは常に表示されます。

    4)
    上の方にある色付きの四角形が、何らかのコマンドボタン(マクロ処理?)になっているのかと想像しますが、ご質問のページ表示に関しても同様の方法を取るのが良いのではないでしょうか?

    そうです。
    この「色付きの四角形」(横書きテキストボックス)にマクロを登録してあります。

    中途半端ですが一度ここで区切ります。
    ※時間がたってから続きの補足するかもしれないです

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/04/28 18:24
  • うれしい

    fujilinさんへ:No.3の続きの2個目の補足です。

    4)
    勝手な思いつきですが、ユーザーフォーム内またはシート上部に、、、、

    おっしゃるとおりです。
    ただしボタンは【P検索】を押したら同時に、A1かC1セルに表示されるように出来たらいいと思っています。

    5)
    ページの判断基準に用いるセルは、アクティブセル以外にも、表示中の左上のセル(あるいは中央のセルなど)といった方法もありかなと。

    これはダメです。
    先に触れたとおり、アクティブセルの図面番号が紙のリストの何枚目にあるのかを探すのが目的です。なのでタブレットの画面で図面番号が見えるといういのが第一条件です。ただし行が同じなら、画像でわかるとおりA列からR列までは同じページにあるので、同じ行でA列からR列の間で判定するのならOKです。

    そろそろ400文字なので、一回区切りますね。
    ※続きはすぐに入力します。

      補足日時:2017/04/28 22:05
  • うれしい

    fujilinさんへ:No.3の続き3個目の補足です

    6)
    A列の前に細幅の列を追加して、そこにページ数を表示しておくというのもありかと思いました

    おっしゃるとおりです。
    この方法は完璧な方法があります。リンク1の名前の定義を設定をして、A列(全てに)にリンク1の関数を貼り付ければOKです。

    これが一番簡単で正確ですね。

    7)
    ページ数の計算はその表示状態に基づいてされるので、仮に正確に求めることができたとしても印刷物のページと一致するとは限らない可能性があります。

    1、2枚ずれる程度なら問題ないです。

    8)
    もちろん、この列は印刷範囲から外しておいて、印刷物はいままで通りで、画面表示だけに出るという考えです。

    そこまでシビアでないので、どっちでも良いです。だいたいのページ数がわかればで良いですから

    No3の補足完了です。
    続きがあるのでしたらよろしくお願いします。

      補足日時:2017/04/28 22:28
  • HAPPY

    正確にはA1セルにページ数を入力するのではないのですが、
    何とか納得いくものが出来ました。

    こちらのページは自分用のメモも兼ねていますので、
    方法をアップしておきたいのですが、、、。

    1回のコメントで400文字しか入力出来ないので、
    別途、「A1セルに○○-2」の質問を立てて、
    そちらに具体的な解決方法を記載しておきます。

    fujilinさんへ

    fujilinさんへも400文字しか入力出来ず、
    コードがアップできなかった、、、。
    ということでしたら、次回の質問の方にアップして頂ければ嬉しいです。

    ※もちろんスルーでもOKです。

    今回は相談に乗って頂きありがとうございます。
    いろいろ参考になりました。

    機会がありましたら、またお願いします。

      補足日時:2017/04/30 16:40

A 回答 (3件)

ANo2です。



>やって見ましたがやっぱりダメです。
あらら・・・、これじゃ見えないですね(笑)

というか、シートの内容もあまり見えないような気がしますので、推測するところ、タブレットの利用方法としてはページ検索用のインデックス的な用い方が主で、実際の内容確認は印刷物の方でなさるといった感じなのでしょうか?
いずれにしろ、かなり作り込まれたシートのようですね。

>リンク1が見つかったので もしかしたら何か良い方法があるかと思い~
ご提示の図を見て思ったのですが、S,T,U列が別ページになっていますが、印刷物では同じページに収まっていたりはしませんか?
(普通に考えると妙な切れ方なので…)
そのような場合、(ANo2にも述べましたが)ページ数の計算はその表示状態に基づいてされるので、仮に正確に求めることができたとしても印刷物のページと一致するとは限らない可能性があります。

どうやら、A1セルもいつも見えているとは限らなそうなので、セルに表示するのが良いのかどうかも疑問に感じてしまいました。
上の方にある色付きの四角形が、何らかのコマンドボタン(マクロ処理?)になっているのかと想像しますが、ご質問のページ表示に関しても同様の方法を取るのが良いのではないでしょうか?

勝手な思いつきですが、ユーザーフォーム内またはシート上部に「ページ表示」のようなボタンを追加作成しておいて…
ボタンを押すと、フォーム内のテキストボックスや、または別のフォーム、あるいはテキストボックスコントロールなどにページ数がポップアップするというUIもあるのではないかと思いました。
いちいち表示を消す手間が面倒だというのであれば、1~2秒間表示したら自動で消えるようにしておくというのもありそうに思います。
(多分、目視確認ができさえすれば良いのでしょうから…)
ページの判断基準に用いるセルは、アクティブセル以外にも、表示中の左上のセル(あるいは中央のセルなど)といった方法もありかなと。
(どこを採用するのが適切かは、私にはわかりませんが…)

あるいは、もっとプリミティブな方法として・・
A列の前に細幅の列を追加して、そこにページ数を表示しておくというのもありかと思いました。
行数から計算する方法なら、簡単な関数式でページや行も計算可能ですし、視認性も良さそうに思います。
もちろん、この列は印刷範囲から外しておいて、印刷物はいままで通りで、画面表示だけに出るという考えです。この方法だとマクロ等も不要になりますね。
・・とはいうものの、使い慣れた書式である場合は、(実質的に変わらなくても)変更に抵抗する人が多かったりするケースも多いと思いますので、何とも言えませんけれど・・・
この回答への補足あり
    • good
    • 1
この回答へのお礼

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

順番に行きますね。

1)
シートの内容もあまり見えないような気がしますので、推測するところ、タブレットの利用方法としてはページ検索用のインデックス的な用い方が主で、実際の内容確認は印刷物の方でなさるといった感じなのでしょうか?

おっしゃるとおりです。
左側(A列)の番号をタッチして【直接入力】をタッチすると、
上のテキストボックスに図面番号が入力されます。
その状態で【検索】をタッチするとサーバー上の図面(PDF)を呼び出して表示します。

その後、【因数OK】をタッチするとアクティブセル(A列の)とS列の
「数量」の背景色が青になり、「判定」に○が入力されます。

要するに、図面番号のリストが紙で配布されるのですが、
20枚もある紙の中から特定の図面番号を目で探すのは大変な手間です。

なので、タブレットPCに検索させて、ついでにサーバー上の
図面を表示したり、作業が完了した図面番号にチェックを入れたり
するのに使っています。

ちなみにテキストボックスに図面番号を入力して、
【P検索】をタッチすると、所定の図面番号までジャンプします。

現場の人のお気に入りの機能の1つです。
なにせ今までは目だけで20枚もあるリストから特定の図面番号を
探していたわけですから。

ところが、、、再三、触れるように紙のリストだけに記載されている情報もあり、
時々、紙のリストで図面番号を探す必要があるのですが、、、

タブレット上では図面番号までジャンプすることはできますが、
ジャンプした場所が紙のリスト上で、何枚目になるのかこの画面では
知る方法がありません。

こういった事情で、常に表示されているA1(またはC1セル)あたりに
アクティブセルのページ番号を表示してくれ、、、と
現場の作業者からリクエストがあったというわけです。


2)S,T,U列が別ページになっていますが、印刷物では同じページに収まっていたりはしませんか?

おっしゃるとおりです。
本当はこんなところにありませんが、、、見て頂いておわかりのとおり、
画面のど真ん中にユーザーフォーム(キーボード)があります。
そのためにS,T列にコピーして表示しております

この話には続きがあるのですが
文字数がオーバーするので、一度ここで区切りますね。
※続きは補足で説明します。

お礼日時:2017/04/28 18:01

ANo1です



補足を読みましたが・・・
ANo1で紹介したのは「印刷プレビュー」ではなく、「改ページプレビュー」です。(印刷プレビューとは異なるものです)

通常の「標準表示」と同様に、シートやセルの操作が可能ですし、拡大・縮小表示等ももちろん可能です。
異なるのは、ページ区切りの位置が表示され、ページ数が(薄く)表示される点です。
(例を添付図に載せましたが、青線がページの区切り、「194ページ」(←図では読みにくいですが)等とあるのがそのページ数です。)
図の右下に小さく見えているアイコン(通常の設定なら表示されると思います)の右端(図で黄色表示になっている)をクリックすることでこの表示モードにすることが可能です。


また、補足を読むと、印刷した環境と計算させようとしている環境が異なるようですが、その場合は、きちんと計算したとしても完全に一致する答えが得られるとは限らないと思います。
MS系のソフトで、印刷設定をした同じファイルであっても、異なるPCとプリンタで出力すると、レイアウトが壊れる体験を何度もしていますので。
(大抵の場合は大丈夫ですが、寸法的にギリギリの設定をすると崩れることが多いように思います)

一方で、補足によれば、ほぼ定型書式で定型サイズのプリントをなさっているようですので、その書式が行の高さが一定のものであるなら、印刷設定などを調べなくても、単純にアクティブセルの行、列の情報からページ数を割り出してしまっても、ほぼ近い数字が得られるのではないかと想像します。
印刷物で1ページに出力されている行数、列数で、アクティブセルの行位置、列位置(=番号)を除せば、それからページ数を割り出せますよね?
(固定タイトル等がある場合は、その行数分の調整が必要です)
この計算方法であれば、若干の誤差を含む可能性はあるものの、簡単に求めることができるでしょう。

もしも、行の高さがバラバラ(文字の折り返しなどがあるなどで)な場合は、対象セルのtop、leftプロパティで、シートの左上からの寸法(単位:ポイント)が得られますので、こちらを用いることで同様の計算を行うことが可能です。
(この場合は、印刷物の印刷範囲の寸法を、事前に調べておく必要はありますが…)

この程度の計算であれば、四則演算+αの計算で可能なので、簡単に求めることができるものと思います。
内容的には関数でもできそうな計算ですが、アクティブセルの位置の取得は関数からは無理だと思いますので、結局は、VBA利用ということになってしまいそうですね。
関数でできそうな内容としては、INFO("origin") で表示中の左上のセルの位置を取得することが可能ですので、これを利用する方法が考えられそうですが、固定タイトルを表示している場合は(INFOの値がいつも同じセルになってしまい)難しそうな気がします。
「A1セルにアクティブセルのページ数を入力」の回答画像2
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。
順番に行きます。

1)
>補足を読みましたが・・・
ANo1で紹介したのは「印刷プレビュー」ではなく、「改ページプレビュー」です。(印刷プレビューとは異なるものです)

すいません。印刷プレビューと改ページプレビューを読み違えました。

ですが、、、やって見ましたがやっぱりダメです。
理由は補足の画像を見て頂ければお分かりの通り、
画面中央にユーザーフォームが常時表示されるからです。

なので表示する場所はタブレットの画面の上段3行目まででないとダメです。
もちろんユーザーフォームを閉じれば見えますが、

ユーザーフォームを閉じる

スクロールして、ページ数を見に行く

というような操作は手間がかかり過ぎるために出来ません。


2)
補足によれば、ほぼ定型書式で定型サイズのプリントをなさっているようですので、
その書式が行の高さが一定のものであるなら、印刷設定などを調べなくても、
単純にアクティブセルの行、列の情報からページ数を割り出してしまっても、
ほぼ近い数字が得られるのではないかと想像します

その通りだと思います。
それが一番手っ取り早いのですが、リンク1が見つかったので
もしかしたら何か良い方法があるかと思い相談させて頂きました。

とりあえず、アクティブセルの行番号を取得するくらいは自力で出来るので
出来る範囲でやってみます。

今回はご解答ありがとうございます。
機会がありましたら、またお願いします。

追記
他の方の意見も聞いてみたいので、しばらく質問は開けておきます。

お礼日時:2017/04/28 15:31

こんにちは



直接の回答ではありませんが・・・

ページ数は印刷設定によっても変わってくるので、ご提示の参考サイトのように少々面倒な計算をしないと求められないと思います。
(単に、印刷順序の縦・横を変えるだけでも、ページ数はまったく変わりますよね?)
印刷方向だけでなく、固定タイトルの有無や用紙サイズ・余白の設定等々のすべてがページ数に影響します。

私の勝手な思い込みですが、アクティブセルに応じてA1セルの値が変化してしまうので、使用者が何ページであるかを認識できればよく、その値を計算等に利用したりするものではないと考えました。

認識できればよいと考えれば、エクセル本来の機能でも「印刷した場合、表示のセルが何ページになるか」を知る方法はあります。
よく理解できないマクロを作成するよりは、簡単に利用可能だと思います。
以下の、「改ページプレビュー」では、役には立たないのでしょうか?
(ページ数は画面に表示されますが、A1セルには表示されません)
https://support.microsoft.com/ja-jp/help/982830
    • good
    • 0
この回答へのお礼

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

順番にお答えしますね。

1)ページ数は印刷設定によっても変わってくるので、ご提示の参考サイトのように少々面倒な計算をしないと求められないと思います。
(単に、印刷順序の縦・横を変えるだけでも、ページ数はまったく変わりますよね?)
印刷方向だけでなく、固定タイトルの有無や用紙サイズ・余白の設定等々のすべてがページ数に影響します。

シートごとコピーして使っている(=余白の設定が同じ)し、それほど正確でなくてもかまいません。
具体的にいうと1ページくらい前後して大きな問題はありません。

2)~以下の、「改ページプレビュー」では、役には立たないのでしょうか?
(ページ数は画面に表示されますが、A1セルには表示されません)
https://support.microsoft.com/ja-jp/help/982830

残念ですがダメです。
理由はいくつかあるのですが1つはタブレットPCを利用しており、
画面がサイズが10.5インチしかないので、印刷プレビューで全体表示してもわかりにくい
というのが1つの理由です。

それと、、、、具体的な使い方を説明しておきますね。

使い方
A4で配布されたリスト(20枚程度)の中の部品番号をチェックするのに
前述のタブレットPCで操作しております。

要するに目で見て20枚もある紙のリストから部品番号を特定するのは大変です。
なので、同じリストをタブレットPCで表示し、タブレットPCのマクロから、
部品番号を見つけたりサーバー上にある図面を表示させたりするのに使っております。

なので、タブレットPCの画面でリスト(エクセルのシート)にチェックを入れることが
出来ますし実際、そうしております。

ところが、、、前述の紙のリストにはタブレット上にない補足事項があり、
紙のリストの方も確認しなければならないことが時々あります。

要するに、タブレットの画面の方で先に探してから、紙のリストの方をチェックしたり、
必要事項を読みに行きます。なのでその時にページ番号が必要です。

ちなみみにA1セルにページ番号を表示させる理由は3行目でウインドウ枠を固定しているため
スクロールしてもA1セルは常に同じ場所に表示されるためです。

こんな感じです。ご解答ありがとうございます。

お礼日時:2017/04/28 11:51

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

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