Excel сломал существующий импорт данных. Как вернуться к прежнему состоянию?

Excel сломал существующий импорт данных. Как вернуться к прежнему состоянию?

В течение многих лет у меня была полуавтоматическая система для создания спецификаций (BOM) для электрических проектов. С помощью скрипта в моей программе CAD, который запускает некий внешний код, написанный мной давно, я получаю файл значений, разделенных табуляцией (TSV). Этот процесс также копирует файл шаблона XLS. Этот файл определяет форматирование для определенных столбцов, которые файл TSV содержать не может.

Я бы открыл файл шаблона XLS в Excel, затем сделал бы что-то вроде ДАННЫЕ, ИЗ ТЕКСТОВОГО ФАЙЛА, дал бы ему имя файла и нажал бы Enter 5 раз, чтобы взять кучу значений по умолчанию. Данные из файла TSV появились бы в электронной таблице с форматированием из файла шаблона. Некоторые ячейки содержали бы уравнения вместо прямых данных. Все это работало бы так, как и предполагалось.

Эта процедура отлично работала последние 15 лет, до сих пор. Видимо, Microsoft обновила Excel на моем ноутбуке Win10 за последние несколько недель, и теперь все сломалось. Что вы получаете отДАННЫЕ > ИЗ ТЕКСТА > имя файласовершенно другой. Все элементы управления из прошлого теперь отсутствуют, и теперь он угадывает неправильно. Я не могу найти очевидный способ включить какой-то "устаревший" режим, и я не вижу способа дать ему больше деталей. Он просто делает то, что делает, что отличается от того, что было раньше, и это нарушает мой процесс.

Похоже, есть две несовместимости, которые действительно все портят:

  1. Когда первая ячейка в первой строке содержит число, она теперь автоматически добавляет свою собственную строку заголовка. Я использовал ячейку A1 как общее количество досок для сборки, поэтому различные количества были вычислены из этого числа. Оставшиеся ячейки в первой строке являются моими заголовками столбцов. Меня устраивает, что первый столбец имеет число вверху. Это должно быть моим делом.

    С добавлением собственной строки заголовка все мои уравнения сбились на единицу по вертикали. Что за беспорядок!

  2. Импорт уравнения сломан. Когда он получает ячейку, содержащую "=" в качестве первого символа, он добавляет пробел перед "=", а затем обрабатывает остаток как строку в результате. Если я вручную удаляю пробел в таблице, то получаю нужное уравнение. Таких ячеек сотни, поэтому вручную исправить их все не получится.

Как вернуться к предыдущей операции? Я не гуру Excel, и не хочу им быть. Я хочу заняться созданием своих спецификаций.

В качестве эксперимента я вручную преобразовал несколько строк файла 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 строк, но его можно модифицировать по мере необходимости.

Связанный контент