防止 Excel 将文本转换为列

防止 Excel 将文本转换为列

当我使用 Excel 解析多个文档时,我需要控制导入(最显著的例子是“文本”,而不是“常规”,列导入设置),如何防止 Excel 自动为我运行“文本到列”导入向导。我更喜欢每次都手动运行它,尽管我意识到 Excel 只是试图通过做我刚才做的事情来提供帮助。

它只是不会先将列转换为文本。

答案1

如果您使用的 Excel 版本在数据菜单下不包含“获取外部数据”(例如 Excel 2003,这是我的主要版本,因为 Office 2007 到 2013 的反生产力“升级”),您可以通过几个手动步骤或宏来阻止他们强加给您的“有帮助的”行为(宏更快更容易,所以我把它放在我的 personal.xls 中):

  • 添加工作簿(或Ctrl+ N
  • A在单元格中输入字母A1
  • 单击单元格A1
  • 开始“文本分列”(或Alt+ DE
  • 选择分隔符(或Alt+ D
  • Enter
  • 取消选择每个复选框
  • 单击“完成”(或Alt“+ F”)
  • 关闭工作簿;不要保存。

现在,当您再次粘贴时将阻止“有帮助”的行为。

在代码中,

' Differs from Walkenbach in that he just populated A1 if empty, did this on A1, restored A1.
' This is better IFF you are allowed to add a workbook.
Sub FixAutomaticTextToColumns()
    If ActiveSheet.ProtectContents Then MsgBox _
            "BTW, the active sheet is protected. Consider unprotecting 'ere TextToColumns"
    Workbooks.Add
    Cells(1) = "A" 'Required, else TextToColumns will error
    Cells(1).TextToColumns DataType:=xlDelimited, Tab:=False, semicolon:=False, _
                           comma:=False, Space:=False, other:=False
    ActiveWorkbook.Close False
End Sub

值得一提的是,我独立编写了这个程序,然后发现Excel 大师/作家/开发人员 John Walkenbach 在他的网站上发布了类似的东西,电子表格页面,标题为清除文本到列参数

如何在 MS Office 中添加 VBA?了解一般信息。

答案2

您可以随时更改导入数据的布局或属性。在“数据”菜单上,指向“获取外部数据”,然后单击“编辑文本导入”或“数据区域属性”。

如果选择编辑文本导入,请选择最初导入的文件,然后在文本导入向导中对外部数据进行更改。

通过选择数据范围属性,您可以为外部数据设置查询定义、刷新控制和数据布局选项。

相关内容