2015年11月18日水曜日

Excel2010 で複数プリンタをマクロとボタンで使い分けてみる

マクロって1行ぐらいで済めば意外と簡単なんですね。

今までVBAをインストールしなかったくらいガチガチの関数派でした、七面鳥です。


住所録と発注書をまとめた Excelブックで仕事をしているのですが、用紙の関係で
前のエントリで取り上げた LP-S440 と複合機と両方使っています。

ご存知の方もいるかと思いますが、Excelはシート毎に用紙設定を持てる一方で、
プリンタ情報は基本的に標準プリンタを使い、設定でプリンタが変わればExcel終了まで
それを保持するという挙動になっています。

このため、印刷シートにあわせてプリンタを切り替えるということになります。

しかしどのシートでどのプリンタを使うかは決まっているため、シートとプリンタの紐付けが
できないものかと思っていました。

結局のところ、印刷するキーマクロを一度とり、それを元にマクロボタンをシート毎に
設ける格好が手っ取り早かったので、それを紹介します。

端的に言えば
https://twitter.com/7mencho/status/563160615829512192

https://twitter.com/7mencho/status/563160923645296641

プリンタ名は、プリンタのプロパティ画面の


この欄内の文字列を”プリンタ名”の""中に入れてやればいいです。


これを仕込んだマクロボタンを設ければ解決となります。
ボタン表示は雑に「【印刷】」などとしておきます。


ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, ActivePrinter:="RICOH MP C3503 JPN RPCS V2", Collate:=True, IgnorePrintAreas:=False

1枚のシートに複数の雛形があって、ページによって使い分けてる場合は
 From:= や To:= の数字をそれぞれ「1」「2」に設定することにより
容易に印刷し分けることができます。

正副(控)など2枚必要なら、正副それぞれのページを作り、From:=を1、To:=を2などに
設定すれば自動で正副ページのみを印刷できます。

また、常に3部必要などの場合は Copies:=を3などに設定すれば、常に必要部数を印刷できます。


なお、ファイルの保存形式は「Excel マクロ有効ブック(*.xlsm)」になりますので、ご注意下さい。

使い慣れると手放せないボタンですので、複数台の切り替えにかぎらず、印刷にお困りでしたら便利かと思います。

こちらからは以上です。

foltia Anime Locker でエンコードが詰まった場合(対処療法)

こちらではお久しぶりです。

最近やっと foltia Anime Locker を使い始めて、なんでもザクザク録画してくれるのに満足しております。

ところが、録画が立て続けになったせいか、あるタイミングから録画は順調だけどmp4へのエンコードが行われなくなってしまいました。

原因は不明ですが、大抵はエンコが詰まった番組のうち、一番古いのに原因があるそうです。

公式サイトにも MP4変換が詰まってしまった時の対処 はあるのですが、これで直接解決しなかったので、
今回自分がとった方法をメモ的に記しておこうと思います。

なお、「データベース直接編集」を多用しますので、操作は慎重に行って下さい。
また、本記事によるいかなる責任も負いません。操作は作業される方自身の責任で行ってください。


1.未エンコードの番組の filestatus を全て「999」にする
   →データベース(以下DB)からログアウト
   →再起動
   →以降の正常動作を確認

 オンラインマニュアルに従って、phpPgAdmin にログインし foltia_subtitle を「選択」する。
  ↓
 「選択」画面が出るので、filestatus の演算子を「!=」にして、右の欄に「200」を入れて、「すべてのフィールドを選択する」チェックを入れて「選択」する。
 ※filestatus 200 がエンコードも含めた完了を意味する模様
  ↓
 ファイルのリストが出てくるので、filestatus が 50 とか 70 などになっているファイルを「選択」し、
 filestatus 欄内の 50, 70 などを「999」に書き換え、「保存」する。
  ※アニラジなど filestatus が 130 のものは無視する
  ※単純に書き換えて保存を繰り返してると、なぜか書き換えてないのに画面から消えていくのがあるので、時々選択画面からやり直すこと。無くなったら選択画面からやり直して、全て「999」に書き換えてあることを確認する。
  ↓
 全て「999」に書き換わったことを確認したら、ログアウトする。
  ↓
 録画一覧などを確認し、再起動に問題なければ再起動する。
 ※再起動にかかる時間は、自分の環境では1~2分程度
  ↓
 そのまま放置し、再起動以後の番組が正常に録画・エンコードされることを確認する

 ここまでが第一ステップ。


2.未エンコード番組のうち、最新のものから filestatus を「50」にする
   →DBログアウト
   →再起動、放置

 再び録画とエンコードが行われることを確認したら、1.の再起動前までエンコードされなかった番組のうち、最新のファイル“のみ”を filestatus 「50」にする。

 これはオンラインマニュアルにある、ファイル名による「選択」を使う。詳しい手順はそちらを参照のこと。
 ※ファイル名の取得は、CAP画面にある m2t ファイルのリンクからURLを取得し、パス(http://~/tv/までの部分)を削除する方法がある
  ↓
 当該ファイルが出てきたら「選択」
  ↓
 filestatus を「999」→「50」 に変更
  ↓
 当該ファイルが「50」に書き換わったことを確認し、ログアウト。
  ↓
 録画一覧などを確認し、問題なければ再起動。
  ↓
 そのまま放置し、当該番組が正常に録画・エンコードされることを確認する

以降は2.の手順を、未エンコード番組の新しい方から愚直に繰り返して下さい。
うまくやれば1日2~3本ずつはエンコードされていきます。

また、この方法でうまく行かない番組は、「999」に書き換えて放置し、他の番組を進めて下さい。


~ 雑感 ~

 公式の方法だと、詰まる原因のファイルを「999」でスキップしろということだが、自分の環境では埒があかなかった。

 そのため、いっそのことと思い未エンコードのファイルを全て「999」にし、DBログアウト→再起動したところ、再びエンコードがかかるようになった。

 その勢いで、エンコードされなかった番組も新しいファイルから「50」にしたところ、とりあえず2~3本は成功するようになったので、まとめてみた。

 なお、再起動をかけるのにしつこく「DB(phpPgAdmin)をログアウトしろ」と書いているのは、どうもこのログアウトの操作を行わなかったことも失敗の一因であるような気がしてるからである。
ログアウトしなくてもうまく動作している環境では、必要ないと思われる。

 また、Linuxに精通していないのもあってか、コマンドラインから ~/perl/ipodtranscode.pl も試してみたがうまく動作しなかったので、cron からの ipodtranscode.pl に頼っている。
※su で昇格してもダメだった。

 また自分の場合は1.~2.の間に2日ほど外出しており、外出前に全て「999」に書き換え再起動・放置していた。そうして土日2日間の録画をさせたところ、無事録画・エンコードされていたので、不調な方は参考にしてほしい。


 こちらからは以上です。