faysky2() 进来啊,帮我看看啊

Yjanuary 2006-03-23 11:19:56
晕啊!
老大,能写个详细点的吗?
我的excel表为abc.xls,里面的Sheet1有A到F六列数据
sql的表ciq_main中有col1,col2,。。。到col9个字段
我想在execl的VBA中,点击按钮,把
Sheet1中的数据导入到ciq_main中去,
其中col1是自动id自动增加的,col9是当前的日期
col2到col7是对应excel表里的A到F六列数据,col8是个固定值1
老大能帮我写个完整的程序吗,包括一些注意的事项啊!
谢了啊!
表ciq_main是已经存在的啊!
...全文
110 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
faysky2 2006-03-24
  • 打赏
  • 举报
回复
你改变道入列的顺序就可以:

如A列导入到col5里,B列导入到col3里,C列导入到col4中,D列导入到col2中,E列导入到col6中,F列导入到col7中,1放入col8中,日期放入col9中:

Conn.Execute ("insert into ciq_main (col5,col3,col4,col2,col6,col7,col8,col9) SELECT *,'1',substring(cast(getutcdate() as char),1,10) as col9 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=C:\Temp.xls;Extended properties=Excel 5.0')...[Sheet1$]")


Yjanuary 2006-03-24
  • 打赏
  • 举报
回复
新贴的地址是这里啊
http://community.csdn.net/Expert/topic/4636/4636328.xml?temp=7.299441E-02

这个我先结帐了啊!
faysky2() 帮忙啊!
Yjanuary 2006-03-24
  • 打赏
  • 举报
回复
谢了,明白了啊!
还有个问题啊!
table中的字段
id bh name
4 29023000 甲苯
5 29053990 其他二元醇
excel中sheet2中的数据是
29023000 甲苯 朝鲜
29023000 甲苯 韩国
29023000 甲苯 日本
29023000 甲苯 台湾省
29023000 甲苯 新加坡
29053990 乙苯 奥地利
29053990 乙苯 澳大利亚
29053990 乙苯 巴西
29053990 乙苯 朝鲜
29053990 乙苯 德国
29053990 乙苯 法国
29053990 乙苯 韩国
现在我想把表table中对应的id号取出
然后对应加入到sheet2中去啊
使得sheet2中数据为
29023000 甲苯 朝鲜 4
29023000 甲苯 韩国 4
29023000 甲苯 日本 4
29023000 甲苯 台湾省 4
29023000 甲苯 新加坡 4
29053990 乙苯 奥地利 5
29053990 乙苯 澳大利亚 5
29053990 乙苯 巴西 5
29053990 乙苯 朝鲜 5
29053990 乙苯 德国 5
29053990 乙苯 法国 5
29053990 乙苯 韩国 5
用VBA该如何写啊??
faysky2 2006-03-23
  • 打赏
  • 举报
回复
如果是把整个的Excel导入到ciq_main中去,那很简单的,用前面那个贴子就可以
Yjanuary 2006-03-23
  • 打赏
  • 举报
回复
Conn.Execute ("insert into ciq_main (col2,col3,col4,col5,col6,col7,col8,col9) SELECT *,'1',substring(cast(getutcdate() as char),1,10) as col9 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=C:\Temp.xls;Extended properties=Excel 5.0')...[Sheet1$]")
为什么要用select *啊?
能不能把excel里面的列一列列的取出来导入到sql里面啊
如A列导入到col5里,B列导入到col3里,C列导入到col4中啊,
能不能分开写啊??
分开该如何写啊??
vansoft 2006-03-23
  • 打赏
  • 举报
回复
col1是自动id自动增加的
col9是当前的日期
col8是个固定值1
在數據庫設置字段的默認值啊。
其他的就對應起來直接導就OK了。
這三個就不用寫了。他會按默認值填進去的。
faysky2 2006-03-23
  • 打赏
  • 举报
回复
需要在Excel里添加两个按钮
faysky2 2006-03-23
  • 打赏
  • 举报
回复
Private Sub CommandButton1_Click() '先将当前的Book保存为临时文件temp.xls
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\temp.xls" '存为临时文件
Workbooks.Open Filename:="C:\abc.xls"
Windows("Temp.xls").Close True '关闭临时文件
End Sub

Private Sub CommandButton2_Click() '然后导出
' 引用ADO(Microsoft ActiveX Data Objects 2.X Library)
Dim Conn As New ADODB.Connection
'连接SQL数据库,具体的请自己改过来
Conn.Open "Provider = SQLOLEDB.1;Password = ; Persist Security Info = True;User ID = sa;Initial Catalog = test; Data Source = ljx"
'将临时文件导入ciq_main表
Conn.Execute ("insert into ciq_main (col2,col3,col4,col5,col6,col7,col8,col9) SELECT *,'1',substring(cast(getutcdate() as char),1,10) as col9 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=C:\Temp.xls;Extended properties=Excel 5.0')...[Sheet1$]")
Conn.Close
Set Conn = Nothing
If Trim(Dir("c:\temp.xls")) <> "" Then Kill "c:\temp.xls" '删除临时文件
End Sub
Yjanuary 2006-03-23
  • 打赏
  • 举报
回复
如果是要分字段的呢?
就是数据库里表的字段比较多,只有部分字段的数据是从excel里导入的,而excel里的数据是全部导入到数据库里的!
strSQL = "INSERT into ciq_main SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\abc.xls;Extended Properties=Excel 8.0')...[Sheet1$]"
该如何写?

2,504

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧