Excel VBA質問箱 IV

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

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


70205 / 76734 ←次へ | 前へ→

【11039】Re:プリンタについて
回答  りん E-MAIL  - 04/2/24(火) 19:23 -

引用なし
パスワード
   ふきゅ さん、こんばんわ。

>やりたい場所がエクセル上にリストボックスを貼り付けてそこ限定なんです。

かっこいいやり方ではないですが、
通常使うプリンタを変更 → 情報取得を繰り返します。


Sub tempo()
  Dim win As Object, Acp As String, objItem As Object, rr As Long
  Set win = CreateObject("Shell.Application")
  '
  Acp = Application.ActivePrinter
  '
  Workbooks.Add
  '
  For Each objItem In win.NameSpace(4).items
   If Left(objItem.Name, 4) <> "プリンタ" Then
     rr = rr + 1
     objItem.InvokeVerb "通常使うプリンタに設定(&F)"
     ActiveSheet.Cells(rr, 1).Value = objItem.Name
     DoEvents 'これを入れないと反映されないみたいでした
     ActiveSheet.Cells(rr, 2).Value = Application.ActivePrinter
     If Acp = Application.ActivePrinter Then _
      ActiveSheet.Cells(rr, 3).Value = "←"
   End If
  Next
  '戻す
  Application.ActivePrinter = Acp
  DoEvents 'これを入れないと反映されないみたいでした
End Sub

こんな感じです。
A列の値をリストボックスに入れて、B列の値でActivePrinterを設定するようにしたらいいと思います(そのときは別にセルに入れなくてもいいですよ)。

0 hits

【11013】プリンタについて ふきゅ 04/2/24(火) 10:41 質問
【11014】Re:プリンタについて 名無しの笛の踊り 04/2/24(火) 11:54 回答
【11015】Re:プリンタについて ふきゅ 04/2/24(火) 12:39 発言
【11039】Re:プリンタについて りん 04/2/24(火) 19:23 回答
【11051】Re:プリンタについて ふきゅ 04/2/25(水) 13:33 発言
【11060】Re:プリンタについて りん 04/2/25(水) 21:18 発言
【11188】Re:プリンタについて ふきゅ 04/3/2(火) 13:29 発言

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