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