Excel 破坏了现有的数据导入,如何恢复到以前?

Excel 破坏了现有的数据导入,如何恢复到以前?

多年来,我一直使用半自动化系统来生成电气设计的 BOM(物料清单)。通过 CAD 程序中的脚本(该脚本运行我很久以前编写的一些外部代码),我得到了一个制表符分隔值 (TSV) 文件。此过程还会复制一个模板 XLS 文件。此文件定义了特定列的格式,而 TSV 文件无法包含这些列。

我会在 Excel 中打开模板 XLS 文件,然后执行类似 DATA、FROM TEXT FILE 的操作,为其指定文件名,然后按回车键 5 次以获取一组默认值。TSV 文件中的数据将出现在电子表格中,格式与模板文件中的格式相同。一些单元格包含方程式而不是直接数据。这一切都会按预期工作。

这种方法在过去 15 年里一直运行良好,直到现在。显然,微软在过去几周更新了我 Win10 笔记本电脑上的 Excel,现在一切都坏了。你从数据 > 来自文本 > 文件名完全不同。之前的所有控件现在都消失了,而且现在猜错了。我找不到明显的方式来启用某些“传统”模式,也找不到给它更多细节的方法。它只是做它该做的事,这与以前不同,它破坏了我的流程。

似乎有两个不兼容性确实把事情搞糟了:

  1. 当第一行的第一个单元格包含数字时,它现在会自动添加自己的标题行。我使用单元格 A1 作为要构建的板总数,因此根据该数字计算出各种数量。第一行的其余单元格是我的列标题。我同意第一列顶部有一个数字。那应该是我的事。

    由于它添加了自己的标题行,我的所有方程式在垂直方向上都偏离了一个。真是乱七八糟!

  2. 公式导入功能已损坏。当它获取到包含“=”作为第一个字符的单元格时,它会在“=”前面添加一个空格,然后将其余部分视为字符串。如果我手动编辑电子表格中的空格,那么我就会得到想要的公式。有数百个这样的单元格,因此手动修复它们不是一个选择。

我该如何返回上一个操作? 我不是 Excel 高手,而且真的不想成为高手。我想继续生成我的 BOM。

作为实验,我手动将 TSV 文件中的几行转换为 CSV 文件。导入该文件会导致同样的问题。只需输入 CSV 文件名,Excel 就会正确加载数据,但当然它不知道我的列格式。

在某个地方的一大层灰尘下找到生成 TSV 文件的程序并根据需要进行更改应该不难。例如,如果我现在绝对需要一个 CSV 文件,我可以忍受。我想我很久以前就创建了一个 TSV 文件来绕过某些单元格中文本字符串中的特殊字符。同样,这一切都有效了好几年,直到几周前才恢复。

答案1

这将允许您选择并打开要导入的文件,它会打开一个新的工作簿并仅粘贴值,我稍微修改了这里

Sub Makro1()

Dim fullpath As String

' Makro1 Makro
' Makro indspillet 13-07-2013 af Eric Bentzen
'

'
'Display a Dialog Box that allows to select a single file.
'The path for the file picked will be stored in fullpath variable
  With Application.FileDialog(msoFileDialogFilePicker)
        'Makes sure the user can select only one file
        .AllowMultiSelect = False
        'Filter to just the following types of files to narrow down selection options
        .Filters.Add "Text Files", "*.TSV; *.TXT; *.CSV , 1"
        'Show the dialog box
        .Show
        
        'Store in fullpath variable
        fullpath = .SelectedItems.Item(1)
        
    End With
    
On Error GoTo EndSub

Workbooks.OpenText Filename:=fullpath, _
   Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
   TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
   Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _
   Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
   Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
   Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _
   Array(11, 1), Array(12, 1), Array(13, 1)), _
   TrailingMinusNumbers:=True
   
EndSub:

End Sub

看起来它可能只有 13 行,但可以进行修改以适应。

相关内容