在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 展开
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 展开
6个回答
展开全部
一般是使用这种方式:
线程休眠等待用户鼠标置于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秒之内光标放要输入的位置,不要再动了,程序就会按按键行为自动输入,等同于按键精灵的做法。
展开全部
如果你是每次都调用这个程序段,那么当然速度会很慢
主要原因是这两行
Set xlapp = CreateObject("Excel.Application") '
Set xlbook = xlapp.Workbooks.Open(SS1)
这两行要打开文件,如果你文件很大,可能还不止三秒
解决的办法是,把这两行放到写数据程序段之外
只能打开一次
后面就只是把打开后文件传递给写值的过程进行写值
才能缩短时间
主要原因是这两行
Set xlapp = CreateObject("Excel.Application") '
Set xlbook = xlapp.Workbooks.Open(SS1)
这两行要打开文件,如果你文件很大,可能还不止三秒
解决的办法是,把这两行放到写数据程序段之外
只能打开一次
后面就只是把打开后文件传递给写值的过程进行写值
才能缩短时间
追问
确实是这两行程序花的时间比较长,写数据的程序时间很短,我也想过把这两行程序放在外面,只执行一次,但是有个问题是,往EXCEL里面写数据的时候,必须先关闭EXCEL才能写入,如果不关闭写入的话会弹出是否保存的对话框,而想要在关闭的时候写入数据,又必须要执行这两行程序才行,写完之后再次关闭,所以在这里有点麻烦。
追答
应该不会弹出是否保存的对话框
主要是看不到你完整程序段
不知道你是如何调用的。
当然,还有其他一些处理办法,主要还是根据你的需求
但并不清楚你的需求
还有一种办法是,在内存中定义一个动态数组
不断给这个数组增加内容
只到最后一次性写入
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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_
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_
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以利用线程
定义一个线程,Thread.Sleep(1000);
1000毫秒就是1秒
定义一个线程,Thread.Sleep(1000);
1000毫秒就是1秒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为啥不用数组?
可以直接赋值的。
比如
dim n(5)
range("b1:f1")=n
可以直接赋值的。
比如
dim n(5)
range("b1:f1")=n
追问
写数据部份花不了多少时间,主要是开始创建文件和打开文件的时候花了两三秒时间,后面的很快。
追答
不是每写一次都要重新打开文件的,程序刚进入的时候就可以把表格打开了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询