Excel VBA質問箱 IV

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

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


70189 / 76738 ←次へ | 前へ→

【11060】Re:プリンタについて
発言  りん E-MAIL  - 04/2/25(水) 21:18 -

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

>このやり方で試してみたら、ほぼやりたい事が出来ていました。
>しかし、コントロールパネル内の通常使うプリンタが
>
>Left(objItem.Name, 4) <> "プリンタ"
>
>で最後に取り出してきたプリンタになってしまうのですが
>元に戻す事はできないでしょうか?
Sub tempo()
  Dim win As Object, Acp As String, objItem As Object, rr As Long, Idx As Integer
  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
      Idx = rr '行番号取得
      ActiveSheet.Cells(rr, 3).Value = "←"
     End If
   End If
  Next
  '戻す
  Set objItem = win.namespace(4).items.Item(ActiveSheet.Cells(Idx, 1).Value)
  objItem.InvokeVerb "通常使うプリンタに設定(&F)"
  DoEvents 'これを入れないと反映されないみたいでした
  '開放
  Set objItem = Nothing
End Sub

>上記の設定でエクセル自体のプリンタは元のプリンタに
>なっていました。ありがとうございます。
 指定の方法がそもそも間違えてましたすみません。コンパネを変更してるのにエクセルだけ戻してました。

 このマクロだと、コンパネでの「通常使うプリンタ」と、エクセルで一時的に変更されたアクティブなプリンタが一致しないとき(手動で変更ずみとか)にはうまく動作しないようなのでコンパネでの「通常使うプリンタ」かどうかを判定するフラグが必要なようですが、今の私にはわかりません。ごめんね。
1 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 発言

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