在VB中,怎么实现每隔1秒往EXCEL里面写入一个数据?

我的代码是这样的,现在写入没问题,问题是每写入一次要3秒钟左右的时间,有什么办法能使写入时间缩短吗?Setxlapp=CreateObject("Excel.Applic... 我的代码是这样的,现在写入没问题,问题是每写入一次要3秒钟左右的时间,有什么办法能使写入时间缩短吗?
Set xlapp = CreateObject("Excel.Application")
Set xlapp = CreateObject("Excel.Application") '
Set xlbook = xlapp.Workbooks.Open(SS1)
Set xlsheet = xlbook.Worksheets("sheet1")
i = xlsheet.UsedRange.Rows.Count
'xlsheet.Cells(i + 1, 1) = Text1(0).Text '在最后面一行增加记录
xlsheet.Cells(i + 1, 2) = Text1(1).Text
xlsheet.Cells(i + 1, 3) = Text1(2).Text
xlsheet.Cells(i + 1, 4) = Text1(3).Text
xlsheet.Cells(i + 1, 5) = Text1(4).Text
xlsheet.Cells(i + 1, 6) = Text1(5).Text
xlsheet.Cells(i + 1, 7) = Text1(6).Text
xlsheet.Cells(i + 1, 8) = Text1(7).Text
xlsheet.Cells(i + 1, 9) = Text1(8).Text
xlsheet.Cells(i + 1, 10) = Text1(9).Text
xlsheet.Cells(i + 1, 11) = Text1(10).Text
xlsheet.Cells(i + 1, 12) = Text1(11).Text
展开
 我来答
创作者zUzVB1Sl31
2016-08-02 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

一般是使用这种方式:

      线程休眠等待用户鼠标置于EXCEL位置,然后 发送键消息,VB的我没做过,C#现在写了一个,非常简单,看下就明白了。

        private void button1_Click(object sender, EventArgs e)
        {
            //创建线程
            Thread thread = new Thread(new ThreadStart(sendmessage));
            //休眠5秒等待鼠标放入要输入的位置
            Thread.Sleep(5000);
            //线程开始执行
            thread.Start();
        }
        //子线程
        List<String> li=new List<String>{"消息队列1","消息队列2","消息队列3"};
        private void sendmessage()
        {
            //向windows发送键消息
            foreach(String str in li)
            {
                SendKeys.SendWait(str + "{ENTER}");  
                //光标位置换行输出
            }
        }

 运行程序,5秒之内光标放要输入的位置,不要再动了,程序就会按按键行为自动输入,等同于按键精灵的做法。

不想起名字了99
2016-06-29 · TA获得超过1694个赞
知道大有可为答主
回答量:2708
采纳率:76%
帮助的人:712万
展开全部
如果你是每次都调用这个程序段,那么当然速度会很慢
主要原因是这两行
Set xlapp = CreateObject("Excel.Application") '
Set xlbook = xlapp.Workbooks.Open(SS1)
这两行要打开文件,如果你文件很大,可能还不止三秒
解决的办法是,把这两行放到写数据程序段之外
只能打开一次
后面就只是把打开后文件传递给写值的过程进行写值
才能缩短时间
追问
确实是这两行程序花的时间比较长,写数据的程序时间很短,我也想过把这两行程序放在外面,只执行一次,但是有个问题是,往EXCEL里面写数据的时候,必须先关闭EXCEL才能写入,如果不关闭写入的话会弹出是否保存的对话框,而想要在关闭的时候写入数据,又必须要执行这两行程序才行,写完之后再次关闭,所以在这里有点麻烦。
追答
应该不会弹出是否保存的对话框
主要是看不到你完整程序段
不知道你是如何调用的。

当然,还有其他一些处理办法,主要还是根据你的需求
但并不清楚你的需求

还有一种办法是,在内存中定义一个动态数组
不断给这个数组增加内容

只到最后一次性写入
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
任人笑我太疯癫我依行我道
2016-07-10 · TA获得超过1013个赞
知道小有建树答主
回答量:593
采纳率:47%
帮助的人:50.8万
展开全部
Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook
把一下代码放到一个频率是1的Timer
Dim I As Integer
Set xlsApp = Excel.Application
xlsApp.Visible = False
Set xlsBook = xlsApp.Workbooks.Open("D:\11.xls")
I = 1
Do While xlsApp.Sheets(1).cells(I, 1) <> ""
I = I + 1
Loop
xlsApp.Sheets(1).cells(I, 1) = Text1.Text
xlsBook.Close (True)
xlsApp.Quit
Set xlsApp = Nothing

----资料来源于http://zhidao.baidu.com/link?url=b1-zaMya6vzH316gP9BVRiaBz5v-4UdSkL-t7mfYZjVolXVkJ5SbuOVzZOQ5lJ6yLuLoWBjW-BaLKZq7nKOPU_
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰心少年000
2016-07-02
知道答主
回答量:4
采纳率:0%
帮助的人:4498
展开全部
可以利用线程
定义一个线程,Thread.Sleep(1000);
1000毫秒就是1秒
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mayfor000
2016-06-29 · TA获得超过4067个赞
知道大有可为答主
回答量:6970
采纳率:30%
帮助的人:1362万
展开全部
为啥不用数组?
可以直接赋值的。
比如
dim n(5)
range("b1:f1")=n
追问
写数据部份花不了多少时间,主要是开始创建文件和打开文件的时候花了两三秒时间,后面的很快。
追答
不是每写一次都要重新打开文件的,程序刚进入的时候就可以把表格打开了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式