EXCELで、USB-RS232C変換アダプタをPCに繋げたとき、使用しているCOMポート番号を取得するマクロを作ろうとしています。
下記のコードのGetUseComNameプロシージャを実行してポート番号を取得できるようになりました。
わざわざGetUseComNameプロシージャを実行しなくても、USB-RS232C変換アダプタをPCに接続されたのをプラグアンドプレイで検知して、
COMポート番号を取得する仕様に改良したいのですが、どうすれば良いでしょうか。
私のパソコンの環境は(windows XP 2002 SP3 office excel2003 sp3)です。
'--------------------
Option Explicit
'--------------------
Sub GetUseComName()
Dim a, b, port_no As String
Range("a1").Select
Selection.Clear
'通信ポート名を取得
a = GetUseComNo()
'通信ポート名の文字列からCOMポート番号(書式「1,2,・・・」の形で)を取り出す。
Do While InStr(a, "(COM") <> 0
a = Mid(a, InStr(a, "(COM") + 4)
port_no = port_no + Left(a, 1)
If InStr(a, "(COM") <> 0 Then
port_no = port_no & ","
End If
Loop
'USB-232C変換アダプタが接続されていれば、セルa1に通信ポート番号を表示する。
If port_no = "" Then
MsgBox ("使用できるCOM Portがありません。")
Exit Sub
ElseIf InStr(port_no, ",") <> 0 Then
Selection = port_no
End If
End Sub
'---------------------
Function GetUseComNo() As String
Dim Serial As Object
Dim SerialSet As Object
Dim objWMIService As Object
Dim strComputer As String
Dim intCnt As Integer '要素数
Dim strComName As String '取得したデバイス名
strComputer = "."
'WMIを呼び出す
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'PnPで登録されているもの(デバイスマネージャで見えるもの)から
'シリアルポートのクラスでかつ名前に「(COMxx)」と付いているものを抽出
Set SerialSet = objWMIService.ExecQuery("Select * from Win32_PNPEntity Where " & _
"(ClassGuid = '{4D36E978-E325-11CE-BFC1-08002BE10318}') and " & _
"(Name like '%(COM%)')")
'全ポートの数(取得できた項目数)
intCnt = SerialSet.Count
'情報の取得
strComName = ""
For Each Serial In SerialSet
'デバイス名を取得 「"通信ポート (COM1)"」
If strComName <> "" Then
strComName = strComName & vbCrLf
End If
strComName = strComName & Serial.Name
Next
'戻り値セット
GetUseComNo = strComName
End Function
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
使用出来るCOMポートが発生するまで、GetUseComNoをグルグル回すしか無いと思いますが・・。
それか、COMポートを監視するWindowsの常駐アプリを作って、それをトリガーにそのVBAを起動させるとかですかね・・。
どちらも似たようなものですが。
※ちなみに「プラグアンドプレイ」って、デバイスが接続されたらそれ用のデバイスを自動で組み込んで使えるようにしますよ。って意味なのはご存知でしょうか。(アプリケーションをキックする為の仕組みではない)
参考URL:http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%A9% …
ありがとうございます。
「デバイスが接続されたらアプリケーションをキックする」という仕組みはないということなのでしょうか。。。
まだ諦めがつかないので、もう少し調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
エクセル VBA でのCOMポート認識
その他(プログラミング・Web制作)
-
COM接続デバイスのポート番号特定方法について
Visual Basic(VBA)
-
VBAを使用して、USBでつないだ機器の制御が出来るでしょうか?
Access(アクセス)
-
-
4
シリアル通信時のデータ受信方法
Visual Basic(VBA)
-
5
VBA2005 16進を2桁で表示したい。
Visual Basic(VBA)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
【VB6】デバイスマネージャを表示させたい
Visual Basic(VBA)
-
8
COMポート 名前を取得する方法
C言語・C++・C#
-
9
プログラムでUSB機器が接続された事を認識するにはどうしたら良いのでしょうか?
Visual Basic(VBA)
-
10
エクセルVBAでRS232Cへ
Visual Basic(VBA)
-
11
VBでUSB制御プログラム作成する方法
Visual Basic(VBA)
-
12
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
13
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
14
デバイスマネージャーの一覧取得
Visual Basic(VBA)
-
15
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
16
VBA EasyCommでの送信
Visual Basic(VBA)
-
17
ttlで戻り値を取得する方法
その他(プログラミング・Web制作)
-
18
エクセルVBAでRS232通信は可能ですか?
PowerPoint(パワーポイント)
-
19
エクセルVBAでのネットワークプリンタのポー名の取得方法は?
Visual Basic(VBA)
-
20
Excelで隠れてしまった図やテキストボックスを探す方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dell Inspiron 14 5415 をコン...
-
8000番や8080番のポー...
-
バンジージャンプのデータを貰...
-
Supermodelのエミュレーターに...
-
マザーボードにSATAのHDDを接続...
-
Windows10におけるUSB-RS232C機...
-
USBメモリ増設アダプターについて
-
PCのUSBポートの不具合と対処法...
-
USBポートの無いPCでUSB機器を使用
-
PCがのぞかれてないか調べる...
-
仙台市内で、独身者に最も住み...
-
ポートの80と443
-
スイッチのポート番号について
-
マザーボードに取り付けたハー...
-
ワイヤレスマウスUSBレシーバー...
-
来月カンボジアのシェムリアッ...
-
ポートスキャン時のunknownの意...
-
分かりません。どなたか教えて...
-
Lenovo G570 USBポートについて
-
RS-232Cコネクタ付きマザーボード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
8000番や8080番のポー...
-
Windows10におけるUSB-RS232C機...
-
ワイヤレスマウスUSBレシーバー...
-
USBメモリ増設アダプターについて
-
スイッチのポート番号について
-
PCのUSBポートの不具合と対処法...
-
ポートの80と443
-
ポート80、443を開けろと言われ...
-
コマンドプロンプトで、ポート...
-
Dell Inspiron 14 5415 をコン...
-
Supermodelのエミュレーターに...
-
バンジージャンプのデータを貰...
-
ポート80を閉じたいのですが
-
EXCEL VBAで、PnPでCOMポート番...
-
縦続 と 直列
-
マンションHUB交換について
-
無線LANルータのアクセスログの...
-
microsoft-ds(445)とnetbios(13...
-
サーバーにLANポートが多いとど...
-
マザーボードにSATAのHDDを接続...
おすすめ情報