标题:MSComm控件不能用
只看楼主
ranxian
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-6-11
结帖率:100%
已结贴  问题点数:20 回复次数:5 
MSComm控件不能用
我从EXCEL的宏功能打开VB编辑器,在窗体上添加MSComm控件的时候提示(对于指定的操作,改主题不受信任),但是直接打开VB就可以添加这个控件,EXCEL是2003,VB是6.0中文企业版的,望各位帮忙。
搜索更多相关主题的帖子: 编辑器 企业版 EXCEL 中文 主题 
2011-06-11 11:06
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:20 
据猜测该不会是你EXCEL中的巨集安全性没调过吧〜要用巨集要调到低等级〜当然也可以用程序强制调整〜但是这已经属于骇客等级的技术〜不方便在此讨论〜上网找就有〜
这网站一定没有〜另外除了要调整安全性外〜还得调整EXCEL的对VB的专案的信任度〜EXCEL中有个ListBox可以让你设定〜当然你要对所有EXCEL中都搞这套的话〜老化一句〜
这已经超出正常编程的范围〜上网找吧〜关键字“Sendkey“

大前提〜你要很了解整个EXCEL.Application的组织架构及使用方法〜

P.S 偷偷的说〜你还能用程序更改EXCEL的上方菜单内建的控制项目〜新增.修改.删除.都行〜你可以加上需输入帐号密码才允许使用....等功能〜
当然VB中也支援让你写程序去新增.删除.修改.VBA的指令〜想指定哪一行要怎么改都行〜VB6可以让你指定改EXCEL的哪个Sheet〜哪个模块〜
哪个模块类〜这部分我有做出来〜不过这超出你的范围了〜只想说VB6有些时候还蛮强大的〜我也相信可以用VB6程序〜去创造出新的VB6的程序〜
只是我功夫还不到家还得练练〜要是你会〜教教我〜我需要这功能〜


[ 本帖最后由 wube 于 2011-6-13 05:22 编辑 ]

不要選我當版主
2011-06-13 05:10
ranxian
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-6-11
得分:0 
谢谢你的答复,看到我都觉得我现在不可能完成,我现在该用VB+EXCEL了,写到这里不知道怎么写了,就是想让MSComm触发的时候把收到的数据写到EXCEL里去,现在我只能用手动发过去,还不能换行,不能保存,能不能让VB控制EXCEL的保存,保存到指定的路径,文件名为保存时间2011.06.13/11,第一行自动写成序号,名称等,让数据从地2行开始保存。
2011-06-13 11:14
ranxian
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-6-11
得分:0 
这是我现在写的
Option Explicit
    Dim xlapp As Variant
    Dim xlBook As Variant
    Dim xlSheet As Variant
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    Dim d As Integer
    Dim e As Integer
    Dim f As Integer
    Dim g As Integer
Private Sub Command1_Click()
    a = a + 2
    b = b + 3
    c = c + 4
    d = d + 5
    e = e + 6
    f = f + 7
    g = g + 8
    xlSheet.Cells(1, a) = Text2.Text
    xlSheet.Cells(1, b) = Text3.Text
    xlSheet.Cells(1, c) = Text4.Text
    xlSheet.Cells(1, d) = Text5.Text
    xlSheet.Cells(1, e) = Text6.Text
    xlSheet.Cells(1, f) = Text7.Text
    xlSheet.Cells(1, g) = Text8.Text
 
End Sub

Private Sub Form_Load()
    Set xlapp = CreateObject("excel.application")
    xlapp.Visible = True
    Set xlBook = xlapp.Workbooks.Add
    Set xlSheet = xlBook.Worksheets(1)
MSComm1.Settings = "9600,n,8,1"
= 3
MSComm1.NullDiscard = False
MSComm1.RThreshold = 57
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
    xlapp.Quit '关闭EXCEL
    Set xlapp = Nothing '释放EXCEL对象
End Sub




Private Sub MSComm1_OnComm()

Text1.Text = MSComm1.Input
Text2.Text = Mid(Text1, 6, 10)
Text3.Text = Mid(Text1, 17, 8)
Text4.Text = Mid(Text1, 33, 6)
Text5.Text = Mid(Text1, 39, 3)
Text6.Text = Mid(Text1, 44, 2)
Text7.Text = Mid(Text1, 49, 4)
Text8.Text = Mid(Text1, 54, 2)
End Sub
2011-06-13 11:15
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:0 
MSComm控件我不了解没用过〜
只能说要用到EXCEL中的巨集指令=用VB6的写资料到EXCEL的〜就得改下面2项〜




不然你不会从VB6中去控制EXCEL〜还有替代方案就是用范本〜你开启一个EXCEL的档案〜
将画面和设定做成适合你要的〜再把档案存成.xlt〜每次要用就去Load这档案〜存出来自动会变成的.xls档〜
这样也行〜

不要選我當版主
2011-06-13 11:39
ranxian
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-6-11
得分:0 
刚刚查到VBA里面MSCOMM因为安全原因被微软禁用了,
2011-06-13 12:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342475-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020044 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved