VB程序员博客
02 4th, 2010
我用VB程序第一次读取EXCEL文件后,用:
Shell "cmd.exe /c taskkill /im EXCEL.exe /f", vbHide
命令彻底杀掉EXCEL.EXE进程,
当第二次读取EXCEL文件时,提示
“远程服务器不存在或不能使用”
错误信息,无法完成读取,请问怎么回事,要怎么办?
注明:
不要给我如下代码结束EXCEL:
xlBook.Close False
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
因为这段代码我试过多次,无法结束EXCEL.exe进程。
此问题已经解决!
呵呵,详细说说的你解决过程,说不定对别有用…
呵呵接分了
<
回答过N遍了,要按照从小到大的次序释放对象。
<
<
02 2nd, 2010
我自定义了个按钮,用来执行某条宏,在我的电脑上可以正常显示和运行,但是拷贝到同事电脑上就没了,怎么回事?
要怎么解决啊
http://www.vcfans.com/2009/02/excel-custom-toolbar-and-preservation.html
我按以上说法,是可以在同事电脑上显示自定义的工具栏,但是该工具栏上的按钮不见了
<
<
是不是他的exCel的宏的安全性设置的太高了?
<
有的版本不行,有的可以,真是奇怪……唉……
<
<
01 12th, 2010
1、以下的步骤全部使用VB6写出代码,EXCEL中包含SHEET1和SHEET2
2、向SHEET1自动插入EXCEL中一个按钮控件
3、给此按钮重命名为“跳转到SHEET2”
4、点击此按钮后触发事件,跳转到SHEET2
万分感谢,结贴。
我发了两次帖子,请到http://topic.csdn.net/u/20090127/23/39527634-7599-437b-ab35-54d6942f8f85.html
再次给分,还有100分。
学习!!!
thanks
01 12th, 2010
1、以下的步骤全部使用VB6写出代码,EXCEL中包含SHEET1和SHEET2
2、向SHEET1自动插入EXCEL中一个按钮控件
3、给此按钮重命名为“跳转到SHEET2”
4、点击此按钮后触发事件,跳转到SHEET2
万分感谢,结贴。
我发了两次帖子,请到http://topic.csdn.net/u/20090127/23/39527634-7599-437b-ab35-54d6942f8f85.html
再次给分,还有100分。
学习!!!
thanks
01 5th, 2010
我有两张Excel做成的透视表,我想用VB写一个程序,来合并这两张透视表,使这两张表中的数据合二为一,并另存为一个新的Excel文件,请问该怎么弄,谢谢!
<
<
12 29th, 2009
我想获取当前系统的月份的最大日期,如12月有31天,就获取31天,
然后或者这个日期下是星期几,如2009.12.16号是星期三.
因为我要遍历,从1号到31号,然后对应的天是星期几.这样.
查查function
format(date,"dddd")
有专门的日期控件,你直接用被。。。
12 22nd, 2009
vb实现保存到excel中
如何让生成的excel自动筛选(就是表头都有下拉列表)
能用代码实现吗???
。。。。
excel中录制宏,拿到vb修改一下
楼上的怎么做成模板?
<
我的是个Acess程序
那保存excel的时候还得有什么特殊操作吗
我直接用
DoCmd.TransferSpreadsheet acExport, 5, WRK_EXPORT, export_name, False, "人员名单"
生成的
PS:要是把代码加进去的话,怎么老提示with。。。的错误,应该怎么加
解决了
Set Excel_App = CreateObject("Excel.Application")
Set Excel_Book = Excel_App.Workbooks.Open(export_name)
Set Excel_Sheet = Excel_App.Worksheets(1)
Excel_Sheet.Rows(1).AutoFilter
谢谢楼上两位
揭帖
12 13th, 2009
有没有什么好的方法,将Excel中的数据存入数据库当中呢?
目前的做法,是将数据存成一个数组,然后一条条的写入到数据库,比较繁琐,有没有更为简单的做法呢?
想到使用OpenRowSet来做
insert into table1 select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel 8.0;hdr=yes;database=" & ThisWorkbook.FullName & ";','select * from [数据]'
发现这个做法不行~,会报错“未给出错误信息”
大家给点意见,谢谢
OpenRowSet 不能用当前正在使用(打开中)的 .xls 文件,你可以复制 .xls 文件,再导入试试。
http://blog.csdn.net/liangsx/archive/2009/01/06/3722438.aspx
opendatasource ….
还有一种方案一条条读
但是组合成一个长串插入
比如
sql="insert …. ; insert…"
这样也可以执行
我可以把Excel中的数据保存为一个Reset,但是怎么能够存储到远程的数据库当中呢?
没遇到过 学习了。
我觉得,本地的Excel文件,可以通过Oledb连接,当做是一个数据库来使用,那也应该可以执行跨数据库的一些操作,但是,直接使用openrowset有问题,不知道应该如何使用。
OpenRowSet 是可以的,只要该 xls 不在使用中。
这还说得不够明白?
<
解决了,呵呵。谢谢大家了。
方法有点土,呵呵,过两天我会放在自己的博客中。
把EXCEL的数据放入了DATAGRID中,怎么样把DATAGRID的数据保存到数据库的某个表中。
在线等。
DATAGRID不灵活,改用msflexgrid吧
msflexgrid中怎么来实现呢,急
用adodc+DATAGRID数据绑定即可完成
给你段代码做示例
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("编号") = dmin + 1
Adodc1.Recordset.Fields("账号") = Val(sh.Cells(1, 2))
Adodc1.Recordset.Fields("金额") = Val(sh.Cells(1, 3))
Adodc1.Recordset.Update
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.MoveLast
Adodc1.Refresh
DataGrid1.Refresh
Private Sub Command1_Click()
Dim iiRow As Integer
Dim iiCol As Integer
Dim tempSql As String
Dim DcolCount As Integer
Dim DrowCount As Integer
Dim Fld() As String
DcolCount = DataGrid1.Columns.Count - 1
DrowCount = 100 '你导入到datagrid中EXCEL记录的行数
ReDim Fld(DcolCount)
iiRow = 0: iiCol = 0
Adodc2.Refresh
Do While iiRow < DrowCount
Adodc2.Recordset.AddNew
Do While iiCol <= DcolCount
DataGrid1.Row = iiRow
Adodc2.Recordset.Fields(iiCol).Value = Format(DataGrid1.Columns(iiCol).Value)
iiCol = iiCol + 1
DoEvents
Loop
Adodc2.Recordset.Update
Adodc2.Refresh
iiCol = 0
tmpCol = 0
tempSql = ""
iiRow = iiRow + 1
DoEvents
Loop
End Sub
没什么不灵活。
你把 Excel 作为 Jet Engine 的外部数据库连接;用记录集对象查询其中的数据,可以直接挂接到 DataGrid 上。
另外,导入到例如 Access 数据库表时,用 Connection 对象的 Execute 方法,就可以执行类似
Insert Into Access_Table IN 'your_Access_Path&Filename.mdb' From [your_Excel_sheet$] Where …
这样的语句。
做个循环就可以了。下面的代码是把datagrid中的数据倒入到密码为11的access数据库。代码如下:
Dim Res As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Res.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
& App.Path & "hushiAgu.mdb;Persist Security Info=False;Jet OLEDB:Database Password=11"
Rs.MoveFirst
Do While Not frmMain.Rs.EOF
Res.Execute "Insert Into table.name (编号,账号,金额)values ('" & Rs("编号") & "','" & Rs("账号") & "','" & Rs("金额") & "')"
Rs.MoveNext
Loop
11 27th, 2009
就是把Excel的数据导入到Access数据库中,代码如下:
Private Sub cmdInput_Click()
CommonDialog1.CancelError = True
On Error GoTo Err:
CommonDialog1.Filter = "(*.xls)|*.xls"
CommonDialog1.FileName = ""
CommonDialog1.ShowOpen
Dim excelPath As String
excelPath = CommonDialog1.FileName
Err:
If Err.Number <> 0 Then
Exit Sub
End If
Dim Msg, Style, Title, Response
Msg = "导入新数据前将清空原有数据(不可恢复),您确定要导入吗?"
Style = vbYesNo + vbExclamation + vbDefaultButton2
Title = "提醒"
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "dbemp.mdb;" & "Persist Security Info=False"
conn.Open
Dim tableName As String
tableName = "Emptable"
Set rs = conn.OpenSchema(adSchemaTables, Array(Empty, Empty, tableName, "Table"))
If Not rs.EOF Then
conn.Execute "Drop Table [Emptable]"
End If
Dim db As Database
Dim sheet As String
Dim accessPath As String
Dim accessTable As String
Dim SQL As String
accessPath = App.Path & "dbemp.mdb"
accessTable = "Emptable"
sheet = "sheet1"
Set db = OpenDatabase(excelPath, True, False, "Excel 8.0")
SQL = ("Select * into [;database=" & accessPath & "]." & accessTable & " from [" & sheet & "$]")
db.Execute (SQL)
rs.Close
conn.Close
现在有个很奇怪的问题,如果Excel的每个单元格中的数据都是字母或者都是数字的话,那么可以正常导入,而那些数据中如果既有字母也有数字的话,那么那些纯为数字的单元格中的数据将无法导入,这是怎么回事呀,而且就算事先把所有单元格格式设定为“文本”类型,那些数字还是无法导入,郁闷!
补充一点:如果表中已有数据的情况,把单元格格式设定为“文本”类型,那也是无法导入的;但如果是设定“文本”类型以后,再向单元格中输入数字,那这些数字可被导入!
现在有个很奇怪的问题,如果Excel的每个单元格中的数据都是字母或者都是数字的话,那么可以正常导入,而那些数据中如果既有字母也有数字的话,那么那些纯为数字的单元格中的数据将无法导入,这是怎么回事呀,而且就算事先把所有单元格格式设定为“文本”类型,那些数字还是无法导入,郁闷!
看了一下你代码,只是想说ado的方式操作excel不是很稳定,一般来说 可以用 加一个
空格的方式,是ado不把这行当成数字格式的。。。不过这个我记不清楚了,如果不成功的话
我研究一下
保底的方式是vba 但是从难易度 和 效率来看都不好。。。
http://www.cnblogs.com/frostcity/archive/2008/03/07/1095484.html
这个方案也可以考虑,文本数字的混合型输入本身就不太好解决
<
<
<
有这种事,我想不是ado不稳定,还是数据格式问题,Excel2003将数字作为字符处理比较怪,左上角有个黄色的小三角
<
<
主要是先输入还是先设格式的问题,呵呵
如需要阅读该回复,请