Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1850348
  • 博文数量: 354
  • 博客积分: 11021
  • 博客等级: 上将
  • 技术积分: 4048
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-24 10:04
文章存档

2020年(1)

2018年(1)

2016年(1)

2015年(2)

2014年(4)

2013年(4)

2012年(12)

2011年(14)

2010年(37)

2009年(34)

2008年(22)

2007年(68)

2006年(102)

2005年(29)

2004年(21)

分类: 数据库开发技术

2011-12-11 09:04:15

1.启动excel从:工具-->宏-->Visual Basic 编辑器,打开excel VBA.

2.在ThisWorkbook上右单击鼠标选择插入--用户窗体

3.单击一下插入的窗体,单击菜单上的--工具--附加控件--选择Microsoft Communications Control, version 6.0

4.在窗体上添加mscomm1,添加commandButton1

5.单串口机子,短接rs232的2脚和3脚,双串口机子用232线连接两个串口,注意2、3线交叉,我这里以单串口短接举例。

6.复制以下代码到你的窗体里:

VB code

'VBA代码
Private Sub CommandButton1_Click()
MSComm1.Output = "BEG1END"
End Sub

Private Sub MSComm1_OnComm()
Dim t1 As Long, com_String As String
Static i As Integer
t1 = Timer

Select Case MSComm1.CommEvent
Case comEvReceive '收到 RThreshold定义的字符数1字节
MSComm1.RThreshold = 0
Do
DoEvents
Loop While Timer - t1 < 0.1 '延时时间自己调整
com_String = MSComm1.Input
MSComm1.RThreshold = 1
i = i + 1: If i > 255 Then i = 1
Application.Cells(3, i).Value = com_String
End Select
'ActiveWorkbook.SaveAs Filename:="C:\d1.xls"
End Sub


Private Sub iniMscomm()
'On Error Resume Next
'=====-----初始化通信串口-----=====

MSComm1.CommPort = 1 '使用 COM1
MSComm1.Settings = "9600,N,8,1" '9600 波特,无奇偶校验,8 位数据,一个停止位
MSComm1.PortOpen = True '打开端口

MSComm1.RThreshold = 1 '缓冲区有1个字节就产生OnComm事件
MSComm1.InputLen = 0 '为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。

MSComm1.InputMode = comInputModeText 'Input以二进制形式取回用comInputModeBinary,以文本形式取回是(缺省项)
MSComm1.RTSEnable = True
MSComm1.InBufferCount = 0 '清空缓冲区

End Sub

Private Sub UserForm_Initialize()
iniMscomm
End Sub


7.双击thisWorkBook,复制以下代码到窗体里:

VB code

'VBA代码
Private Sub Workbook_Open()
UserForm1.Show 0
'UserForm1.Hide

End Sub




8.保存文件并关闭excel,然后再打开你的文件,然后单击你窗体上的按钮看看。
9.这个程序是我为你特意做的,已经做过测试,sys2003 office2003。
10.如果excel中有数据输入,再去测试你的设置,注意com口号与波特率的设置。
阅读(19107) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

4029726912018-07-28 10:09:57

大佬救急

plumlee2013-04-05 18:28:04

原来回复是有长度限制的。。。。

查了好长时间才找到解决方法... 十分感谢GU998899和uranus1997的启发!

问题原因如GU998899和uranus1997所说的原因,windows的更新补丁限制了一些activex控件的使用。
此时需要再安装一个针对vb控件的更新包(Microsoft Visual Basic 6.0 Service Pack 6 Cumulative Update),安装完之后,那些不能使用的控件就可以重新展现了...

补丁说明:http://support.microsoft.com/kb/932349
补丁地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=CB824E35-0403-45C4-9E41-459F0EB89E36&amp;displaylang=en&displaylang=

plumlee2012-08-28 07:45:50

有朋友反映,在某些电脑中会出现 "the subject is not trusted for specified action”的问题而无法使用。请见下面的解决方法。

如何解决“对于指定的操作,该主题不受信任”的问题
本文由fys_111贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
如何解决“对于指定的操作,该主题不受信任”的问 题
用 VB 或是 VBA 开发的朋友,特别是会用到 COM 控件的,这种故障应该是碰到过的, 那就是弹出对话框提示“对于指定的操作,该主题不受信任”(见下图)。
据我个人所知的,受影响的控件有 MSCOMCT2、Mscomm32、MSDataGrid、MSFlexGrid、 MSWinsock。也就是说如果你在使用 VB、VBA 开发的时候,在添加某一控件的时候,出现上 述画面中的提示,那么下面的内容可以帮你解决这一问题。
一、原因 为什么会出现上述提示,因为在 VB(包含 VBA)中的