Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在access 2007 中用vba 代码将excel 2007 数据导入到 sql 2005 express中

陈诺  发表于:2013-04-26 16:42:21  
复制

Dim strFileName As String

    With Application.FileDialog(3) 'msoFileDialogFilePicker
        .InitialFileName = ""
        .InitialFileName = CurrentProject.Path & "\"
        .Filters.Clear
        .Filters.Add "Material Requirement List(.xlsx)", "*.xlsx;"
        If Not .Show Then Exit Sub
          strFileName = .SelectedItems(1)
     end with

Dim conn As ADODB.Connection
Dim strSQL As String
Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB;Data Source=<服务器名>;Initial Catalog=数据库名;User ID=sa;Password="

strSQL = "SELECT * INTO table1 FROM [Sheet1$] IN '" & strFileName & "'[Excel 12.0;]"

conn.Execute strSQL

conn.Close
Set conn = Nothing

 

其中<服务器名>与<数据库名>已换成实际的名称。但却不能导入数据。为什么呢?

 

Top
叶海峰 发表于:2013-04-26 17:06:03

试试

strsql="insert into table1 select * from [excel 8.0;DATABASE=" & strfilename &"].[sheet1$]"

另外确定一下strfilename返回的是否全路径的文件名,而不是只是文件名.xls



陈诺 发表于:2013-04-26 21:50:10

excel 文件是2007版,改成excel 12.0 如下,试了不行

strsql="insert into table1 select * from [excel 12.0;DATABASE=" & strfilename &"].[sheet1$]"

 

strfilename返回的是文件名,改成绝对路径文件名也不行。

strsql="insert into table1 select * from [excel 12.0;DATABASE="c:\test.xlsx"].[sheet1$]"

 



陈诺 发表于:2013-04-28 15:25:54

strsql = "INSERT INTO table1 SELECT * FROM OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0','Data Source=c:\test.xlsx;Extended properties=Excel 12.0')...[sheet1$]"

就可以了。

我想实现随便选择一个excel 文件(excel 文件列名与table1的列名一致),data source=.........    , 要怎么实现呢



陈诺 发表于:2013-05-07 14:13:59

Dim strFileName As String

    With Application.FileDialog(3) 'msoFileDialogFilePicker
        .InitialFileName = ""
        .InitialFileName = CurrentProject.Path & "\"
        .Filters.Clear
        .Filters.Add "Material Requirement List(.xlsx)", "*.xlsx;"
        If Not .Show Then Exit Sub
          strFileName = .SelectedItems(1)
     end with

msgbox strFilename

 

返回值: strFileName 是包含有绝对路径的文件名。如: c:\test.xlsx

 



陈诺 发表于:2013-05-08 11:42:20

如果用下面语句可以实现导入数据到sql2005

strFilename="c:\test.xlsx"

strsql = "INSERT INTO table1 SELECT * FROM OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0','Data Source=""" & strFilename & """;Extended properties=Excel 12.0')...[sheet1$]"

----------------------------------------------------------------------------------------

但是,如果strFilename="c:\test.xlsx" ,用下面语句替代就不行(在弹出选择文件对话框时选择了c:\test.xlsx)。

Dim strFileName As String

    With Application.FileDialog(3) 'msoFileDialogFilePicker
        .InitialFileName = ""
        .InitialFileName = CurrentProject.Path & "\"
        .Filters.Clear
        .Filters.Add "Material Requirement List(.xlsx)", "*.xlsx;"
        If Not .Show Then Exit Sub
          strFileName = .SelectedItems(1)
     end with

----------------------------------------------------------------------

为什么?问题在哪里??郁闷啊~~~

Dim strFileName As String

    With Application.FileDialog(msoFileDialogFilePicker)         

         .InitialFileName = ""
        .InitialFileName = CurrentProject.Path & "\"
        .Filters.Clear
        .Filters.Add "Material Requirement List(.xlsx)", "*.xlsx;"
        If Not .Show Then Exit Sub
          strFileName = .SelectedItems(1)
     end with

 

Dim conn As ADODB.Connection
Dim strSQL As String
Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB.1;User ID=sa;Password=;Initial Catalog=数据库名;Data Source=服务器名\SQLEXPRESS"

strSQL = "INSERT INTO table1 SELECT * FROM OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0','Data Source=""" & strFilename & """;Extended properties=Excel 12.0')...[sheet1$]"

conn.Execute strSQL

conn.Close
Set conn = Nothing

 



总记录:5篇  页次:1/1 9 1 :