Access交流中心

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

[5分]如何导入用户选定的Excel文件中用户选定的sheet表格中用户选定的范围的数据

西出阳关无故人  发表于:2021-04-26 17:42:29  
复制

如题,经常遇到从其他系统导出的Excel表格(前几行不是标题行,有其它信息,如:导出时间/查询参数/查询条件等,行数不定),这些参数结束后,才是正式的数据表格格式,同时由于导出的又是交叉表查询的结果,不同参数的导出会导致数据表的行数/列数都不固定.

现在,需要把该数据表导入到access的表里面进行处理,问题是:数据表的起始位置(行,列)/结束位置(行,列)都不固定,如何让用户指定区域?

下面的代码已经可以让用户选择到sheet这一级了,如何进一步让用户指定Excel的区域?比如A5:I65这样的范围:

Private Sub Command4_Click() '让用户选定Excel文件
    Dim File
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Excel 文件", "*.xl*"
        .Filters.Add "All 文件", "*.*"
        If .Show Then
            For Each File In .SelectedItems
                '文件 = File
                getTablesName File
            Next
        End If
    End With
End Sub


Sub getTablesName(strPath) '获得并展示用户选定的Excel文件的sheet表清单
    Dim Cat As New ADOX.Catalog
    Dim Tb As ADOX.Table
    
    Cat.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;hdr=yes;';Data Source=" & strPath
    sheet.RowSource = "" 'sheet是列表框控件名,用于展示Excel文件的sheet表清单,便于用户选择
    For Each Tb In Cat.Tables
        sheet.AddItem Tb.Name
    Next
    Set Cat = Nothing
    Set Tb = Nothing
End Sub



 

Top
chinasa 发表于:2021-04-28 08:04:46


chinasa 发表于:2021-04-28 08:09:58

也不知为啥代码无法上传,可能系统认为这个代码有风险?图片也不能上传。我把代码乱改一通,版主参考吧。


kgmxqy = "A2:D500"
CurrentDb.Execute 

"Insert INTO MX_旷工明细 

Select * FROM 

[Excel 8.0;DATABASE=" & KGMXwjm & "].

[" & kgmxqy & "]"



西出阳关无故人 发表于:2021-05-07 19:12:11

实现方法见链接:

http://www.accessoft.com/article-show.asp?id=19861



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