• 締切済み

Visual Basic から DocumentProperties を使う方法

Visual Basicから、プリンタの印刷設定の変更をしようとしています。 APIのDucumentPropertiesを利用すればよさそうなところまでは判ったのですが、 これを使って正しくプリンタの設定を変更するためには、構造体DEVMODEのサイズの変更等が必要なようです。 Visual Basicでこれをどう実現したらいいのでしょうか。

みんなの回答

  • jmh
  • ベストアンサー率23% (71/304)
回答No.1

こんばんは。 VB6? As DEVMODE の代わりに、As Any などと宣言して、devMode() As Byte を ReDim して使えばできそうな気がします。 ReDim devMode(0 To n - 1) Call DucumentProperties(…, DevMode(0), …)

sakitag1
質問者

お礼

ありがとうございます。 環境の説明があいまいでした。 そうですVB6です。 あー、なるほど。 丸ごとAs Byteの配列で置き換えるわけですね。 構造体内の個々の変数が扱いづらくなるのは・・・・この際仕方ありませんね。 やってみます。

sakitag1
質問者

補足

構造体内にダミー変数を設けて、 予め充分大きくすることで対応できました。 ありがとうございました。

関連するQ&A

  • Visual Basicから、プリンタの印刷設定を変更する方法。

    Visual Basicから、プリンタドライバの印刷設定をする方法を探しているのですが、つまづいています。 環境は Windows2000(SP4) VB6(SP5) です。 具体的にはエプソンのページプリンタ(LP-2400/2500/9100/9300)で、 出力用紙固定(A4)の拡大/縮小印刷を設定する方法です。 まず、APIのDocumentPropatiesを利用しようと思ったのですが、 これでは倍率指定による拡大/縮小しかできず、 また、なぜか変更しても結果が印刷設定に反映されません。 続いて、EPSONから提供されているEPDIを利用しようとしたのですが、 これだと、期待する情報(出力する用紙サイズ指定の拡大/縮小)を取得できるものの、 変更し、反映しようとしても、これまた結果が印刷設定に反映されません。 何かいい方法はないでしょうか。

  • エクセルでシート毎の両面印刷を自動で設定する方法

    エクセルシートのプリンタドライバの印刷設定について、現在の印刷設定と両面印刷設定とを切り替える方法を探しています(EXCEL2002です)。 VBAによる対策方法を色々調べてみましたが、VBAの機能では対応できないようです。 ( sendkeys を使って擬似的にキー入力を行う方法もありましたが、ショートカットの割り当てが他のアプリケーションと重なる可能性があるため、この方法は避ける事にしました) ワード向けですが、MicrosoftのページにVBからAPIを利用して、同様の設定をするサンプルがありましたので、エクセルのVBAでも試してみましたが、変更したプリンタの設定は、シートの設定に反映されませんでした(エクセル独自でシート毎の印刷設定が保存されていると思っています)。 対策として、 1)APIをうまく使う方法 2)Excelファイルが持っていると思われるプリンタ設定の変更 の2つがあると思っています。 APIを本格的に使ったこともありまんせので、印刷設定に関するAPIの参考情報を教えてもらえるだけでも助かります。 よろしくお願い致します。

  • Visual Basic.Netでのハードコピーとその印刷方法

    はじめまして。 個々で質問させていただくのは初めてですので足りないところがあると思いますがよろしくお願いします。 Visual Basic.Netで画面(Form)のハードコピーを取り、そのまま印刷したいのですが方法が見つかりません。Visual Basic6.0ならFormのPrintFormメソッドが使えたのですが廃止になっています。他APIのStretchBltなども試したのですがうまく出来ませんでした。 よろしくお願いします。

  • Visual Basicで通信アプリケーションを作りたい。

    Visual Basicを使いUSBでパソコン同士を通信するアプリケーションを作りたいのですが、どのようにすればよろしいのですか?また、このような通信を行うためには、VC++でDLLを作成する必要があるのですか?どうか教えてください。

  • Visual Stadioでの開発環境の選択

    Visual Stadio2008を使用しています。 同時に2005も使用しています。 Visual Stadioをインストール後に初めて起動すると どの開発環境にしますか? というような選択画面が起動すると思うのですが (私はVisual Basicを選択しました。) これを、今変更したいのですが どのようにしたら良いのでしょうか? もしご存知でしたら教えて頂けませんか? よろしくお願い致します。

  • エクセルのVBAでプリンタを変更したいのですが・・・

    エクセルのマクロでプリンタを変更して印刷をしたいと思っています。 そこで、   (1) 利用できるプリンタ   (2) (1)のポート   (3) (1)のプリンタドライバ を取得したいのですが、どうすればよいのでしょうか? VBではプリンタオブジェクトを使って簡単に取得できるようなのですが、VBAでの方法がわかりません。 プリンタ設定ダイアログなどは表示せずに、APIなどを使ってできないものでしょうか? どうぞよろしくお願いします。 【環境】Windows2000、Office2000

  • Visual Studio 6でvisual Basicのインストール方法

    Visual Studio 6でvisual Basicをインストールする場合の正しいインストール方法が知りたいので教えて下さい。  現在は下記のようにインストールをしています (1) Visual Studio 6セットアップdiskを入れ自動インストールが開始され、Visuak Basicの3項目に  チェックされているのでインストールを開始する (2)インストール中にVisual c++の環境変数のチェックBOXが現れるがチェックしないで続行 (3)msdn liburaryをセットアップする (4)msdn liburaryセットアップ後inshldやoffice bookのインストールが表示されるが次へで何もしないでおくる。 (5)登録画面が現れインストールを終了する これで宜しいのでしょうか? また、環境変数にチェックを入れインストールした場合、コントロールパネルのプログラムの追加と削除でvisual Studioを確認するとアイコンがVisual Basicのアイコンになっております。 チェックを入れない場合のアイコンはVisual Studioのロゴのアイコンになります。 環境変数を登録した場合はそうなるのでしょうか? また、VBだけ使用する場合は環境変数の登録は必要ないのでしょうか? 正しいインストール方法を教えて下さい。またインストール方法がネットに載っていればページを教えて下さい。

  • プリンタの設定について

    Windows7(SP1)+VB.NET(VS2013)にてアプリケーションを作成しています。 既定値がカラー印刷の富士XEROXの複合機で印刷しようとしています。 経費の関係で大量ページの印刷や、モノクロでも良い印刷をプログラムのほうでモノクロにし印刷できるようにしたいと思っています。 色々なサイトを調べてGetPrinter()、SetPeinter()などのAPIを使用してDEVMODE構造体を操作して変更するようにしました。が、用紙サイズ、印刷方向の変更はできたのですが、カラーの変更が出来なくて困っています。何故カラーの変更が出来ないのでしょうか?

  • VBスクリプトはVisual Basicがインストールされていないと動きませんか?

    はじめまして、coco2と申します。 今回の質問なのですが、 とっても素人質問ですいません。 使用するパソコンにVisual Basicがインストールされていないと、VBスクリプトというのは動いてくれないものなのでしょうか? なぜこのような疑問が出てしまったかと言いますと、 ファイルメーカーというDBソフトで、 ファイルメーカーでは対応しきれない機能を VBスクリプトを使って動くように設定されています。 しかし、きちんと動くパソコンと動かないパソコンが出てきてしまったのです。 調べると、Visual Basicがインストールされていない パソコンに限って機能していなかったのです。 私はあまり詳しくはないので、 是非みなさまのお力をお借りしたいと思います。 どなたか、アドバイス頂けたらと思います。 どうぞ宜しくお願いいたします!!

  • Visual Basic 2008 Express Editionを使

    Visual Basic 2008 Express Editionを使用して開発作業を行っています。 デバッグする際に、「プロパティおよび演算子にステップ インする」ことができません。 この設定を変更する方法を教えて下さい。 マイクロソフトのhelpを確認したところ、 1.[ツール] メニューの [オプション] をクリックします。 2.[オプション] ダイアログ ボックスで、左側にあるボックスの [デバッグ] をクリックします。 3.[全般] ボックスで、[プロパティおよび演算子をステップ オーバーする (マネージのみ)] チェック ボックスをオフにします。 4.[OK] をクリックします。 http://msdn.microsoft.com/ja-jp/library/cc667388.aspx と、あるのですが、そもそもメニューのツールのオプションに 「デバッグ」欄の設定がいないのです。・・・ ちなみに、Visual C++ Express Editionではメニューのツール、オプションに ちゃんと「デバッグ」が存在するので設定できるのですが・・・ Visual Basicでの設定はできないのでしょうか???