質問です。ActiveX DLLを作成しているのですが 'Module1 Public Type TestStruct1'ユーザー定義 strIp As String strUser As String strPass As String End Type 'Class1 Public GetHostInfo(stDisk As String) As TestStruct1 End Function
Excel VBA でMSCommを使おうとしていますが、 On_commイベントでの受信ができません。 Windows XP Pro SP2, Excel 2003 SP1, VBA(VB6.0相当?) PC: Excel使用, 外部装置:何か来ると、ステータスを返す
以下のプロシージャで"hoge"が送れました。 Private Sub Command1_Click() Set mscomm1 = CreateObject("MSCOMMLib.MSComm.1") mscomm1.CommPort = 1 mscomm1.Settings = "9600,N,8,1" mscomm1.PortOpen = True mscomm1.Output = "hoge" mscomm1.PortOpen = False End Sub 外部装置からステータスが返ってきますが、下のイベントは発生しません。 Sub MSComm1_OnComm() MsgBox "fuga" End Sub Comman1_Click() 内で Wait を使うと拾えます。 If Application.Wait(Now + TimeValue("0:00:1")) Then data = mscomm1.Input End If アドバイスお願いします。
[ツール]-[参照設定] Microsoft Comm Control 6.0 にチェック クラスモジュール(Class1) ------------------------------------------- Public WithEvents mscm As MSCommLib.mscomm
Private Sub mscm_OnComm()
End Sub ------------------------------------------- 標準モジュール(Module1) ------------------------------------------- Dim mscomm1 As Class1
Sub SetMscommEvent() Set mscomm1.mscm = MSCommLib.mscomm End Sub ------------------------------------------- 本に、実際のオブジェクトと関連づける必要がある、 とあったので、上のようにしましたが、 「メソッドまたはデータ メンバが見つかりません。」 とエラーが出ます。 Set mscomm1.mscm = MSCommLib.mscomm だと、「オブジェクトが必要です」 Set mscomm1.mscm = CreateObject("MSCOMMLib.MSComm.1") だと、「オブジェクト変数または With ブロック変数が設定されていません。」 あと、少しでうまくいく気がするのですが...
レスありがとうございます。 VBなら簡単なのに。VBAだとここまでてこずるとは。 標準モジュール(Module1) ------------------------------------------- Sub SetMscommEvent() Set mscomm1 = New Class1 Set mscomm1.mscm = New MSCommLib.mscomm End Sub
Private Sub SendData() Set mscomm1 = New MSCommLib.mscomm mscomm1.CommPort = 1 mscomm1.Settings = "19200,N,8,1" mscomm1.PortOpen = True mscomm1.Output = "piyo" mscomm1.PortOpen = False End Sub
Sub mscm_OnComm() MsgBox "fuga" End Sub -------------------------------------------
Dim bobj, ar Dim Server As String, User As String, Pass As String, Command As String, Folder As String Set bobj = CreateObject("basp21") ''BASP21オブジェクト Server = "pop.xxxxx.com" ''POP3サーバー User = "toru_tanaka" ''アカウント名 Pass = "password" ''パスワード Command = "SAVEALL" ''コマンド Folder = "<" & ThisWorkbook.Path & "\mail" ''保存するフォルダ ar = bobj.RcvMail(Server, User, Pass, Command, Folder) If IsArray(ar) Then MsgBox "メールを受信しました" Else MsgBox "新着メールはありません" End If Set bobj = Nothing