Excel 2016如何实现Excel 2013中指定CSV文件导入及数据刷新时的文件选择、现有工作表加载功能?
Excel 2016如何实现Excel 2013中指定CSV文件导入及数据刷新时的文件选择、现有工作表加载功能?
嘿,我正好碰到过类似的困扰,Excel 2016其实用内置的**Get & Transform(原Power Query)**就能实现这个需求,甚至比2013的操作更灵活,下面给你两种靠谱的方案:
方法一:用Get & Transform实现(推荐,无需宏)
这个方法能让你每次刷新时弹出文件选择框,并且把数据加载到指定的现有工作表,还能保留你需要的删除行等数据处理逻辑:
第一步:创建可编辑的文件路径参数
点击「数据」选项卡 → 「获取数据」→ 「参数」→ 「新建参数」,设置如下:- 参数名称:比如
CSV文件路径 - 参数类型:选择「文本」
- 建议值:选「任意值」
- 勾选「允许在刷新时编辑」,最后点击确定。
- 参数名称:比如
第二步:用参数导入CSV并配置数据处理
- 点击「数据」→「获取数据」→「从文件」→「从CSV」,随便选一个CSV文件(只是用来生成数据源模板),进入Power Query编辑器。
- 在编辑器里点击「高级编辑器」,把原代码中的固定文件路径替换成刚才创建的参数。比如原代码里的
Source = Csv.File("C:\test.csv", ...),改成:
(其他参数保持默认即可,不用改)Source = Csv.File(Excel.CurrentWorkbook(){[Name="CSV文件路径"]}[Content], Delimiter=",", QuoteStyle=QuoteStyle.Csv) - 这时候你可以在编辑器里完成删除不需要的行、调整列格式等操作,完成后点击「关闭并上载至」。
- 在弹出的对话框里选择「现有工作表」,指定你要加载数据的起始单元格(比如
Sheet1!$A$1),点击确定。
第三步:刷新时选择新文件
以后每次需要刷新数据时,右键点击工作表里的查询数据 → 「刷新」,就会弹出参数编辑框,输入或选择新的CSV文件路径,确认后数据就会自动刷新到指定的现有工作表,之前设置的删除行等操作也会自动应用到新数据上。
方法二:用VBA宏实现(适合自定义需求较多的场景)
如果你更习惯用代码来控制,这个宏可以让你一键选择CSV文件并导入到指定工作表,还能自定义删除行的逻辑:
- 按
Alt+F11打开VBA编辑器,插入一个新模块(右键点击工作簿 → 「插入」→ 「模块」)。 - 粘贴以下代码,记得替换代码里的工作表名称:
Sub RefreshCSVWithFilePick() Dim fd As FileDialog Dim targetWs As Worksheet Dim csvPath As String ' 替换成你要加载数据的现有工作表名称 Set targetWs = ThisWorkbook.Worksheets("你的工作表名") ' 弹出文件选择框,仅显示CSV文件 Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .Title = "请选择要导入的CSV文件" .Filters.Clear .Filters.Add "CSV文件", "*.csv" If .Show <> -1 Then Exit Sub ' 用户取消选择则退出 csvPath = .SelectedItems(1) End With ' 清除现有数据(如果需要保留表头,可改成 targetWs.Range("A2:Z10000").Clear) targetWs.Cells.Clear ' 导入CSV数据到指定工作表的A1单元格 With targetWs.QueryTables.Add(Connection:="TEXT;" & csvPath, Destination:=targetWs.Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True ' 按逗号分隔,其他分隔符可自行调整 .Refresh BackgroundQuery:=False End With ' 这里可以添加删除指定行的代码,比如删除第3行: ' targetWs.Rows(3).Delete End Sub
- 保存工作簿为启用宏的工作簿(.xlsm格式),以后每次要刷新数据时,按
Alt+F8选择这个宏运行,就能弹出文件选择框,导入后还会自动执行你设置的删除行操作。
备注:内容来源于stack exchange,提问作者Sun
相关产品推荐
相关产品推荐

