| WindowsAPIを利用し「デバイスとプリンター」画面を開きたい | |
|---|---|
[196554] WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ はな -(2025/04/29(14:28)) □U R L/ WindowsAPIを利用し、コントロール パネル\ハードウェアとサウンド\デバイスとプリンターを開きたいです。宣言部分に以下を記載するのは分かりましたが、この先の書き方がわかりません。教えて頂ければ幸甚です。
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As LongPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Longこの記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒Windows 11 Version⇒Office365 ++++++++++++++++++++ | |
[196555] Re[1]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ OK -(2025/04/29(15:24)) □U R L/ WindowsAPIを利用する理由は何ですか?
WindowsAPIに拘らないのならこんな方法でも。
'デバイスとプリンターを起動
Sub test()
Dim WSHShell As Object
Dim s As String
Set WSHShell = CreateObject("WScript.Shell")
s = "control.exe printers"
WSHShell.Run s
End Subこの記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[196556] Re[2]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ OK -(2025/04/29(16:01)) □U R L/ APIはよくわかりませんが、↓は参考になりますか? ht tps://ooo.iiyudana.net/htm/winframe.htm | |
[196557] Re[2]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ はな -(2025/04/29(16:05)) □U R L/ OK様 ご教示有難うございます。 >>WindowsAPIを利用する理由は何ですか? WindowsAPIを利用しなければ、解決できないと思っておりました。 OK様のコードを試しました。 私のPCでは「Blootoothとデバイス」画面が開きました。 更に先にある「その他のデバイスとプリンターの設定」画面を開きたいのですが、 この方法をご教授願います。 | |
[196558] Re[3]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ OK -(2025/04/29(16:17)) □U R L/ 私の環境(Windows10)では「\デバイスとプリンター」が 開きました。 他の方の回答をお待ちください。 | |
[196559] Re[4]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ OK -(2025/04/29(16:39)) □U R L/ コントロールパネルはいつまで使用できるかは微妙です。 参考まで。 ht tps://pc.watch.impress.co.jp/docs/news/1618021.html | |
[196560] Re[5]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ はな -(2025/04/29(16:43)) □U R L/ OK様 ご連絡有難うございました。 自分でも調べてみます。 | |
[196568] Re[6]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ OK -(2025/04/30(08:49)) □U R L/ CドライブのWindowsフォルダの中にSystem32というフォルダがありますが、 その中のファイルで拡張子が「cpl」のものが各種設定などのもののようです。 Windows10のPCで見てみましたが、コントロールパネルで設定できるものが 全てSystem32のcplファイルに含まれているというわけではないようです。 | |
[196569] Re[7]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2025/04/30(09:01)) □U R L/ 失礼します。 Copilotに聞いてみて、ShellExecuteも含め、いろんな方法を試しましたが、 ひどいのはウィルスと判断されたりして「デバイスとプリンター」画面は開けませんでした。 Copilot曰く、 なるほど、Windows 11ではcontrol printersが「Bluetoothとデバイス」画面にリダイレクトされる仕様になっているようですね。 さらに調査したところ、Windows 11では「デバイスとプリンター」画面を直接開くためのコマンドが廃止されている可能性が高いです。 とのことでなさそうです。 ところで、最終目的はデバイスとプリンターの画面を開くことではなく、 Windowsの通常使うプリンターに設定する。 または、ExcelのActivePrinterに設定する。 なのでは? | |
[196575] Re[8]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ はな -(2025/04/30(19:42)) □U R L/ OK様、kazuo様 ご連絡有難うございます。 最終目的は、win11のエクスプローラーから、そこにあるファイルの一括印刷をしたいのです。その為に @デバイスとプリンターの画面を開き Aプリンタの印刷ジョブを表示させ Bエクスプローラー内のファイルを印刷ジョブに移動させて印刷したいのです。 これを簡易化させる為に、デバイスとプリンターの画面をワンクリックで開きたいのです。 因みに、「ファイル名をして実行」に以下を張り付けてたらデバイスとプリンターの画面がでるのですが、これをVBAで操作する事はできるのでしょうか。 shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A} | |
[196579] Re[9]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2025/04/30(22:43)) □U R L/ はなさん失礼しました。そんな作業ができるのですね。
Copilotの回答に以下がありましたが、私の環境では
explorer.exeから
このファイルには、この操作を実行するように関連付けられたアプリがありません。アプリをインストールするか、または既にインストールされている場合は、既定のアプリの設定ページで関連付けを作成してください。
のメッセージが出たため実施しませんでした。
explorerに直接入力しても動作しませんでしたが、何度か実行してたら開くようになり、vbaからもエラーでなくなりました。
explorerに開けるようになるまでshell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}を何度も入力してみてください。開けたら関連付けが完了します。
Sub OpenDevicesAndPrinters()
Dim WSHShell As Object
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "explorer.exe shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[196580] Re[10]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■ □投稿者/ はな -(2025/05/01(07:08)) □U R L/ デバイスとプリンターの画面、出ました。 有難うございました! | |
[196581] Re[11]: WindowsAPIを利用し「デバイスとプリンター」画面を開きたい- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2025/05/01(08:25)) □U R L/ 解決済みですが他の閲覧者もいらしゃると思われますので、
そういえば、
>Aプリンタの印刷ジョブを表示
なら
>@デバイスとプリンターの画面を開き
は不要何じゃねと思い、Copilotに聞きました。
Sub OpenPrintQueue()
Dim WSHShell As Object
Dim PrinterName As String
' プリンター名を指定(例: Microsoft Print to PDF)
PrinterName = "Microsoft Print to PDF"
' WScript.Shell を使用してプリンターキューを開く
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "rundll32 printui.dll,PrintUIEntry /o /n """ & PrinterName & """"
' オブジェクト解放
Set WSHShell = Nothing
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
| このトピックに書きこむ |
|---|