プロフィール

たか号(gatsutaka)

Author:たか号(gatsutaka)
コンタクトは下のアドレスもしくはコメントでどうぞ。
過去の古い日記へのコメントも大歓迎です。
garei#mars.dti.ne.jp
#を@にして下さい

ボーカロイドを扱った
自作小説の一覧はこちら
です。

テンプレート設定に失敗したので、#すかすか のツイートが沢山表示される場合があります。

そして、とうとう、とうとう、
ツイッター始めました。
↓↓↓↓↓↓↓↓↓↓
ネフレンを愛でる会

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

遅れてきた突っ込み
書きたいことは山ほどあるけど、暇がない。 だから、多分、どれも旬を過ぎた話題ばかりに なりそうなブログ。ここでのハンドルはたか号ですが、小説などはgatsutaka名で書いています。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ものすごく用途が限定されたtips(dwviewerの/ptオプション)

こんな細かいというか、用途が限定されたtipsなんか必要な人はあまりいないでしょうが、少なくとも私の隣の席にはいたので、他にも誰かいるのではないかと書き置くものです。

富士ゼロックスが販売しているDocuworksというソフトがあります。
PDFに似た独自のフォーマット(拡張子xdw)で文書、図面などを管理するものです。
個人利用というより、業務で使用するのが普通でしょう。

管理用のDocuworks本体(dwdesk)と、その本体でxdw化したファイルを閲覧・印刷するためのビューワ(dwviewer)がメインのプログラムです。

このビューワは起動時オプションを指定すればコマンドライン上でファイルを印刷することができます。
つまり人によるマウス操作を経ないで、EXCEL VBAなどのプログラムからxdwファイルを自動印刷することができるのです。

印刷指示のオプションは「/p」もしくは「/pt」です。
/pはwindowsの「通常使うプリンタ」で印刷します。
/ptはそれ以外のプリンタで印刷します。

私の職場には9台のプリンタがあります。
3台はモノクロレーザー、1台はカラーレーザー
3台はA0カラープロッター、2台はA1モノクロプロッターです。
これだけあると同じ職場の各人(約100人)が勝手にジョブを流した場合、特に印刷トラブルが発生したときの管理が面倒です。
間違えて何百ページにも及ぶジョブをかけられた場合、それがどの端末からのジョブなのか判らないことには止めることもできません。(プリンター側でできないことはありませんが、操作が面倒だし、問題ジョブの解除後に次のジョブが正常に始まらないこともあります)
なので、プリントサーバーを使ってジョブのコントロールをしています。
これだと、トラブル発生時にはそのサーバを操作するだけで解決できます。

さらに、印刷コスト(印刷枚数)を減らすためにFinePrintというソフトが導入されています。
これは色々な機能がありますが、基本的には複数枚の印刷を一枚にまとめるためのソフトです。
便利と言えば便利ですが、EXCELやWORDからの印刷指令が一旦FinePrintに渡されるので、操作の手間が一つ増えます。
しかもログを集約する機能があって、誰が何枚削減したかなんて統計が取られているのです。
なので、Windowsでの「通常使うプリンタ」はこのFinePrintにすることが義務付けられています。
FinePrintから実際のどのプリンタにジョブを流すのかは、各端末毎に設定します。

こういった環境では、プログラムからの自動印刷をするには「通常使うプリンタ」は使えません。
FinePrintは必ずマウスもしくはキー操作を伴うので自動化にならないし、どのプリンタに出力されるかプログラム側から判らないからです。(できるのかもしれませんがそのやり方が判りません)

話をdwviewerに戻します。

/ptオプションでのプリンタ指定は次の形式にしろとdwviewer.exeのhelpに記載されています。

/pt プリンター名 ドライバー名 ポート名

ところが、このプリンタ名、ドライバ名、ポート名として何をどう指定すればいいのか判りません。HELPには具体的な方法が書いてありません。

コントロールパネルの「プリンタ」で表示される情報を元にして色々試してみましたが、印刷することができません。
net viewコマンドの情報でも駄目です。

/pオプションでは印刷できたので、プリンタ名等の指定だけの問題だろうと思われました。

この時点で、プログラムを作成していた人(つまりは私の隣の机の人)から私にヘルプ要請が入りました。

はて?
プリンタ名はプリントサーバで設定している共有名だろうか。
ドライバ名? そんなの普通は意識しないもんなあ。
ポートはプリンタの固定IPでいいんだろうか。

などなど色々試してみましたが駄目でした。

それからネットで情報を探しました。
たどり着いたのはこのページです。
http://www.wmifun.net/sample/vb6/win32_printer.html

ここに記載されているスクリプトをVBAに貼り付けて実行すれば、探していたプリンター名 ドライバー名 ポート名の情報がずらずらと表示されます。

その情報を/ptオプションに使ってdwviewerを起動すると、指定したプリンタに印刷することができます。

例を挙げるとこんな感じ。
"Program Files\Fuji Xerox\DocuWorks\bin\dwviewer.exe" c:\samp.xdw /pt "\\PrSrv\RICOH IPSiO SP 6220 RPCS_2" "RICOH IPSiO SP 6220 RPCS" "IP_192.168.1.11"
(ポート名はでっち上げの架空の番号です。SP 6220 は職場で使っている中で一番小さなプリンタです。念の為w)

尚、上記のサイトに記載されているスクリプトは、そのままでは動かないことがあります。
「ユーザー変数が定義されていません」というエラーの場合は、次のようにしてください。
1)VisualBasicEditorを起動する(Excel画面でAlt+F11)
2)「ツール」の「参照設定」
3)参照可能なライブラリファイルの中で「Microsoft WMI Scripting V1.2 Library」
にチェックを付ける

スクリプトを貼り付けて実行するまでの操作の説明は、必要があってここを読んでいる方には不要だと思うので省略します。

上記サイトにあるスクリプトは、情報をMsgBoxに表示するだけです。
プリンタ数が多すぎるときは全ては表示されません。

情報は変数「MesStr」に格納されていますので、これをファイルに書き出すかシートに書き出すかする機能をMsgBox関数の部分、もしくはその下に追加してください。

尚、上記サイトには、VBAではなく、WMIのスクリプトを記載したページへのリンクも含まれています。
これを使うと、EXCELは不要です。
WMIのスクリプトを適当なエディタに貼り付けて、名前を付けて(Ex. PriNamGet.wmi)保存し、そのファイルをダブルクリックして実行すれば情報を得ることができます。
この場合もそのままではMsgBoxが表示されるだけなので、全てを文字列として取得するには一工夫が必要です。

例えば、MsgBox関数の次に
「WScript.echo MesStr」
という一行を追加し、Windowsのコマンドプロンプトを開いて、
C:\>cscript.exe PriNamGet.wmi > c:\res.txt[Enter]
とすれば、res.txtファイルに文字として書き出すことができます。

いつか、どこかの、だれかの、お役に立てれば幸いです。

スポンサーサイト
開店休業の中、数式の保護について考察する
再開して一週間。見事に開店休業が続いております。

相変わらず、ここに来るのは「数式の保護を解除」で検索してきた人だけ。
恐らく、新しく書いた部分なんか読んでいないでしょう。

時間がなくて、他のブログさんを訪問することもあまりできないし。

おっさんの書いているブログなんてこんなもん、今更でなくても分かっていること。
ま、いいんですけどね。orz

==

その「数式の保護を解除」ですが、もう2年も前に書いたエントリーです。

2010/09/16追記:すみません。ここのリンク、リンク先の番号を間違えてました。
           2年半も気付かないとは。orz
           しかも間違えた先が、このブログの中である意味一番恥ずかしい文章
           まあ、いいや。w

2年間も見続けてくると、なんとなく理解できるようになりました。

つまり、こういうことです。

原因は、オリジナルEXCEL(英語版)から日本語版を作ったときの翻訳者のセンスの問題です。

英語の言い回しをそのまま日本語に当てているため、ちょっと見、分からなくなってしまっているのだと思います。

1.「このセルには数式が含まれますが、ロックされていないため変更されないように保護することができません。」

lock1


これは、「このセルには数式が含まれますが、ロックされていないため、シートの保護を設定しても、その数式を変更されないように保護することができません。」

とすれば、意味が通ります。ちょっと長すぎですけれど。


2.「数式の保護を解除します」

このポップアップメニューで、青色表示されている一番上の行は説明文です。
これが単なる説明文であることが分からなかったのが混乱の原因でした。

lock2


例えば、A1セルに「=A2+1」という式を入れて、2行目全体を削除すると、「#REF!」エラーが発生し、そのときは「セル範囲が無効のエラー」と表示されます。
これだと、エラーの「説明文」であることが理解できます。

数式が入ったセルのロックを解除した状態はエラーではありませんから、説明文にもエラーとは表示できません。

それで、「数式の保護を解除します」となるのですが、これ、多分「数式の保護が解除されています」ということを言いたいのでしょう。

英語版を持っていないので原文が何なのか分かりませんが、直訳すると現状の表現になってしまうのだと思います。もしかすると誤訳かもしれません。

さらに考えれば、「セルがロックされていません」としたほうが、その下の「セルをロックする(L)」と対応しますから、使う立場ではピンと来る表現になります。しかし、ここで問題にしているのは、セルに数式が入っていてそれが保護されないことですから、説明文としては整合性がとれないですね。


==2012/10/22追記


今頃になってようやくEXCEL2010に触ることになりました。

それでこの件を調べてみたのですが、
何も変わっちゃねーーーー!!!

現在でも月に数件はこのページの閲覧があっているのはそのせいなのかと納得しました。

唯一違ったのは「このエラーに関するヘルプ」が表示されるようになったことくらいですね。
でも、その中身は疑問に何も答えてくれてない。

マイクロソフトに投書しようかなあ。
せめて「数式の保護を解除します」の表記をもっと実態に合ったものに変えてくれってね。

==追記ここまで

==

このようなことが起きるのは、翻訳のときに下手に意訳してニュアンスが変わってしまうのはまずいから直訳のままにしているせいでしょうが、ユーザーフレンドリー(最近この言葉あまり聞かなくなりました)とは思えません。

似たような例として、一頃、Wikiに出ていた寄付を募るメッセージがあります。その寄付のページへのリンクボタンに「今すぐ寄付!」と表示されていました。

これも英語版に「Donate now!」とでも書いてあったのをそのまま訳したのだと思います。
確認しようとしたらもうなくなっていたので、実際に何と書いてあったか判りませんが、同じような言い方に、「Vote now!」(今すぐ投票!)がありますから、そんなところだと思います。クリック後の画面 


で、寄付をお願いするのに、英語だったら「Donate now!」で普通の言い回しなのかもしれませんが、日本語で「今すぐ寄付!」とはあんまりです。

「今すぐご寄付を」であればまだ許せますが、普通の感覚だったら、「ご寄付をお願いします」ですよね。

だから寄付しませんでした。(嘘:本当は金がないから)

尚、現在のWikiでは、メインページに「寄付のお願い」とあり(これは前からあったかもしれません)、左側のメニューの「寄付」をクリックすると、英語版と同じページが表示されます。


==


私の書く文章は、相変わらず「~が、~。」が多いなあ。
どうにかしたいのですが、うまく表現できないのです。(あ、また。)


==


でもこれで、新しいエントリーを読んでくれる人が少しは現れるかな?
そうだ、自分の過去記事にトラックバックしとこう。




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。