• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロで教えて下さい)

エクセルのマクロでプリンタ名を取得する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、プリンタ名を取得する方法を教えてください。
  • 32ビット版のエクセルでは問題なく動作していますが、64ビット版ではエラーが発生します。
  • エラーの原因を教えていただければと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 どちらもコンパイルエラーということで宜しいでしょうか? とりあえずTypeステートメントの方は、 ' ' /// #If VBA7 And Win64 Then Type PRINTER_INFO_1 flags As LongPtr pPDescription As LongPtr pName As LongPtr pComment As LongPtr End Type #Else Type PRINTER_INFO_1 flags As Long pPDescription As Long pName As Long pComment As Long End Type #End If ' ' /// End Typeが漏れているという単純なミス。 64ビットVBA7(Office2010)/64ビットWin7環境では 正しくコンパイルされることを確認しました。 Declareの方は 64ビットVBA7ではPtrSafeキーワード抜きでDeclare文を記述するだけで、 条件付きかどうかを問わず、問答無用でコンパイルエラーとなります。 対策があるかどうかは残念ながら存じ上げません。 ただ、32ビット用のDeclare分だけをコメントブロックすれば、 条件付きのDeclareがコンパイルされていることは確認できました。 従って問題点は、32ビット用のDeclareを 64ビットVBA7で如何にして条件付きコンパイルに組み込むか の一点に整理されます。 私はこれまで出来ないものと思い込んでいましたし、 これといって情報も持ってないのですが、 何かの情報をお持ちで、それを元に着手した、ということなら、 そこら辺を紹介なさったら、識者のコメントが付く可能性は高まるかと思います。 私はプリンターの扱いも不得手なので、例えば、 代替え案を提示するにも至りません。 お役に立てず、すみません。

s-hirai
質問者

お礼

回答ありがとうございました。 End Typeを追加することで、コンパイルエラーは解消されました。(単純なミスなのに気が付きませんでした) プリンタ選択VBAとしてはまだエラー箇所があり、完成までには程遠いのですがまた相談させて頂きます

すると、全ての回答が全文表示されます。

関連するQ&A