Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1975 / 13645 ツリー ←次へ | 前へ→

【70688】プリンターのトレイ等の指定 亜矢 11/12/16(金) 17:39 質問[未読]
【70690】Re:プリンターのトレイ等の指定 ちん 11/12/16(金) 18:16 発言[未読]
【70692】Re:プリンターのトレイ等の指定 亜矢 11/12/16(金) 19:02 質問[未読]
【70695】Re:プリンターのトレイ等の指定 ちん 11/12/16(金) 20:25 発言[未読]
【70699】Re:プリンターのトレイ等の指定 亜矢 11/12/17(土) 9:41 質問[未読]
【70703】Re:プリンターのトレイ等の指定 n 11/12/17(土) 16:39 発言[未読]
【70704】Re:プリンターのトレイ等の指定 亜矢 11/12/17(土) 17:49 質問[未読]
【70705】Re:プリンターのトレイ等の指定 ちん 11/12/18(日) 9:41 発言[未読]
【70706】Re:プリンターのトレイ等の指定 亜矢 11/12/18(日) 11:09 お礼[未読]
【70711】Re:プリンターのトレイ等の指定 ちん 11/12/19(月) 9:05 発言[未読]
【70722】Re:プリンターのトレイ等の指定 亜矢 11/12/19(月) 17:46 お礼[未読]

【70688】プリンターのトレイ等の指定
質問  亜矢  - 11/12/16(金) 17:39 -

引用なし
パスワード
   お世話になります。過去の投稿をしらべると、VBAではプリンターのトレイの指定はできないとのことでしたが、
 現在3つのトレイを持っているプリンターがあります。1段目はA4、2段目はA5で残りをA4サイズのタックシールを入れたいと思いますが、紙サイズは1段目のA4と競合しますので、簡単にこのタックシールの印刷ができるようにする方法を教えていただきたいと思います。
 ペーパーサイズは
  PaperSiZE=xlpaperA4 か
  PaperSiZe=9 とかで設定しています。
  通常はトレイ選択は自動に設定されています。
 よろしくお願いします。

【70690】Re:プリンターのトレイ等の指定
発言  ちん  - 11/12/16(金) 18:16 -

引用なし
パスワード
   ▼亜矢 さん、こんばんわ、ちんといいます。
方法としては、新しいプリンターを追加します。
プリンター名をラベル用とかにし、標準で使用するトレイを3に設定します。

VBAから印刷する際に、API関数を使用しプリンターを切り替えて印刷します。

参考サイトは、み〜くんパパのAPIサンプル を使用しました。

以上、参考までに・・・

【70692】Re:プリンターのトレイ等の指定
質問  亜矢  - 11/12/16(金) 19:02 -

引用なし
パスワード
   ▼ちん さん:
>▼亜矢 さん、こんばんわ、ちんといいます。
>方法としては、新しいプリンターを追加します。
>プリンター名をラベル用とかにし、標準で使用するトレイを3に設定します。
>
>VBAから印刷する際に、API関数を使用しプリンターを切り替えて印刷します。
>
>参考サイトは、み〜くんパパのAPIサンプル を使用しました。
>
>以上、参考までに・・・


早速のご教示ありがとうございます。
み〜くんパパのAPIサンプル を教えていただきたいと思います
 よろしくお願いします。
 現在A4、A5用に使っているプリンターを新たに追加して
 名前を変えるということですね。たとえばラベル用とかにするですね。
よろしくお願いします。

【70695】Re:プリンターのトレイ等の指定
発言  ちん  - 11/12/16(金) 20:25 -

引用なし
パスワード
   ▼亜矢 さん、こんばんわ、ちんといいます。

サンプルを記述します。コピー・ペするので見えにくいかもしれません。
以上参考までに・・・

Public Const VER_PLATFORM_WIN32s = 0
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 2


Private Const HWND_BROADCAST = &HFFFF&
Private Const WM_WININICHANGE = &H1A
Private Const WM_SETTINGCHANGE = WM_WININICHANGE

Private Declare Function GetProfileString Lib "Kernel32.dll" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
Private Declare Function WriteProfileString Lib "Kernel32.dll" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Private Declare Function SendMessage Lib "User32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetDefaultPrinter Lib "Winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Long


Sub TEST()
  
  Dim strPrinterName As String
  Dim vntPrinter   As Variant
  Dim i        As Integer
  
  strPrinterName = String$(255, vbNullChar)
  GetProfileString "Windows", "Device", ",,,", strPrinterName, 255

  DEFALUT_PRT = GetDeviceName(strPrinterName)   '**** 通常使用するプリンター名を取得する。
  HENKOU_PRT = "DocuWorks Printer"        '**** 変更するプリンター名を記述する。

  SetDefaultPrinter HENKOU_PRT  '**** プリンターを変更する。
  
  
  SetDefaultPrinter DEFALUT_PRT  '**** 通常使用するプリンタに戻す。
  
End Sub

'-- 取得文字列のバッファよりデバイス名を切り出す
Private Function GetDeviceName(strDeviceName) As String
  GetDeviceName = Left(strDeviceName, InStr(1, strDeviceName, ",") - 1)
End Function

【70699】Re:プリンターのトレイ等の指定
質問  亜矢  - 11/12/17(土) 9:41 -

引用なし
パスワード
   早速のご教示ありがとうございます。
APIのプログラムは確認できましたが、

”新しいプリンターを追加します。
プリンター名をラベル用とかにし、標準で使用するトレイを3に設定します。”

この新しいプリンターとは現在使っているプリンターを新たに追加してという
意味と解釈して実行するもできません。

 この新しいプリンターとご教示していただいたプログラムとの
 関連が良く理解できませんでした。
 この辺のところを教えていただきたいと思います。
 よろしくお願いします。

【70703】Re:プリンターのトレイ等の指定
発言  n  - 11/12/17(土) 16:39 -

引用なし
パスワード
   ▼ちん さん:
>VBAから印刷する際に、API関数を使用しプリンターを切り替えて印刷します。

APIを使用するまでもないと思うのですが。
何か理由があるのでしょうか。

Const tmpP = "ラベル用"
Dim buf As String

buf = Application.ActivePrinter
Sheets("Sheet1").PrintOut ActivePrinter:=tmpP
Application.ActivePrinter = buf

【70704】Re:プリンターのトレイ等の指定
質問  亜矢  - 11/12/17(土) 17:49 -

引用なし
パスワード
   ▼n さん:
>▼ちん さん:
>>VBAから印刷する際に、API関数を使用しプリンターを切り替えて印刷します。
>
>APIを使用するまでもないと思うのですが。
>何か理由があるのでしょうか。
>
>Const tmpP = "ラベル用"
>Dim buf As String
>
>buf = Application.ActivePrinter
>Sheets("Sheet1").PrintOut ActivePrinter:=tmpP
>Application.ActivePrinter = buf
ご教示ありがとうございます。
 私の質問は同じプリンターを二つ登録できるかどうかということです。
 登録が出来れば名前を変更したプリンターに接続すれば、トレイ3に
 入っている紙に印刷できることになりますが、まず、プリンターを
 登録できるか質問をさせてください。
 よろしくお願いします。

【70705】Re:プリンターのトレイ等の指定
発言  ちん  - 11/12/18(日) 9:41 -

引用なし
パスワード
   ▼亜矢 さん、nさん おはようございます。ちんといいます。
連絡おそくなりすみません。
新しいプリンターの追加ですが、プリンタインストールCDからできませんか?
同じプリンターがインストールされると、 ・・・(1)とか、・・・(2) などの
名前で登録されると思いますが・・・
あとは、プリンターの名前を変更したり。
トレイ3を設定しておいたり・・・
私の場合は、通常使用するプリンターの他に、
両面印刷用の設定をしたプリンター
カラー印刷の設定をしたプリンター
などのプリンターを追加し、業務にあわせ通常使用するプリンターに変えて印刷してます。


>▼n さん:
>>▼ちん さん:
>>>VBAから印刷する際に、API関数を使用しプリンターを切り替えて印刷します。
>>
>>APIを使用するまでもないと思うのですが。
>>何か理由があるのでしょうか。
>>
>>Const tmpP = "ラベル用"
>>Dim buf As String
>>
>>buf = Application.ActivePrinter
>>Sheets("Sheet1").PrintOut ActivePrinter:=tmpP
>>Application.ActivePrinter = buf
>ご教示ありがとうございます。
> 私の質問は同じプリンターを二つ登録できるかどうかということです。
> 登録が出来れば名前を変更したプリンターに接続すれば、トレイ3に
> 入っている紙に印刷できることになりますが、まず、プリンターを
> 登録できるか質問をさせてください。
> よろしくお願いします。

【70706】Re:プリンターのトレイ等の指定
お礼  亜矢  - 11/12/18(日) 11:09 -

引用なし
パスワード
   ▼ちん さん:
>▼亜矢 さん、nさん おはようございます。ちんといいます。
>連絡おそくなりすみません。
>新しいプリンターの追加ですが、プリンタインストールCDからできませんか?
>同じプリンターがインストールされると、 ・・・(1)とか、・・・(2) などの
>名前で登録されると思いますが・・・
>あとは、プリンターの名前を変更したり。
>トレイ3を設定しておいたり・・・
>私の場合は、通常使用するプリンターの他に、
>両面印刷用の設定をしたプリンター
>カラー印刷の設定をしたプリンター
>などのプリンターを追加し、業務にあわせ通常使用するプリンターに変えて印刷してます。
いろいろお手数をお掛けしました。明日以降会社でテストをしてみます。
その後再度問題がわかれば質問をさせていただきます。
 今回はこれで終了とさせてください。
ありがとうございました。

【70711】Re:プリンターのトレイ等の指定
発言  ちん  - 11/12/19(月) 9:05 -

引用なし
パスワード
   ▼n さん、おはようございます。ちんといいます。
nさんのご指摘通り、VBAでプリンターを切り替えることができるんですね。
ただ、私の場合、VB6.0の流れから、ついついAPIを使用してしまいます。
EXCELVBAの場合、2007,2010などで互換性の問題で動く、動かないが多々あり、
APIで作ると、互換性の問題に直面しない可能性もあり、APIを使用します。
以上、

【70722】Re:プリンターのトレイ等の指定
お礼  亜矢  - 11/12/19(月) 17:46 -

引用なし
パスワード
   ▼ちん さん:
>▼n さん、おはようございます。ちんといいます。
>nさんのご指摘通り、VBAでプリンターを切り替えることができるんですね。
>ただ、私の場合、VB6.0の流れから、ついついAPIを使用してしまいます。
>EXCELVBAの場合、2007,2010などで互換性の問題で動く、動かないが多々あり、
>APIで作ると、互換性の問題に直面しない可能性もあり、APIを使用します。
>以上、
 本日同じプリンターで2台目がセットできました。
 本当にありがとうございました。
 完全に解決です。

1975 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free