-1

Почему данные в сгенерированном пользователем отчете (например, записи журнала, закодированные вручную в файле Excel) уничтожаются, когда я добавляю или объединяю их, используя язык команд аудита или Windows CMD?

Как, например, я пытаюсь добавить содержимое отчетов о продажах, чьи данные были введены человеком вручную - однако, как только я добавлю их, данные будут уничтожены. Это не относится к сгенерированным компьютером отчетам (т. Е. К отчетам, сгенерированным SAP).

1 ответ1

1

Файлы Excel - это двоичные файлы, а не обычный текст. Запуск copy *.txt consolidated.txt - это нормально, но запуск copy *.xls consolidated.xls не работает, потому что двоичные файлы закодированы, поэтому вам нужно открыть определенную программу, которая понимает структуру данных в файле.

Один из способов объединения папок с файлами Excel - это просто преобразовать их в простой текстовый формат (например, в формат CSV) и объединить их с помощью copy в командной строке.

Вы можете создать макрос, чтобы сделать это для вас:

  1. Создайте новый файл Excel. Сохраните файл в том же каталоге, что и файлы, которые вы хотите объединить, в виде книги с поддержкой макросов: например, CsvConverter.xlsm.

  2. Нажмите Alt+ F11, чтобы открыть редактор Visual Basic. Выберите Вставить, затем Модуль.

  3. Вставьте следующий код в ваш модуль (взято отсюда):

    Option Explicit
    
    Sub ConvertToCSV()
    ' Uses code from John Walkenbach's Power Programming book
    '
    Dim i As Long
    Dim NumFiles As Long
    Dim FileName As String
    Dim FileNames() As String
    
    ' Get name of first file in backlog directory
    FileName = Dir(ThisWorkbook.Path & "/*.xls")
    
    NumFiles = 1
    ReDim Preserve FileNames(1 To NumFiles)
    FileNames(NumFiles) = FileName
    
    ' Get other file names, if any
    Do While FileName <> ""
    FileName = Dir()
    If FileName <> "" Then
    NumFiles = NumFiles + 1
    ReDim Preserve FileNames(1 To NumFiles)
    FileNames(NumFiles) = FileName
    End If
    Loop
    
    ' Save each file as a .csv file, overwriting any existing .csv files
    Application.DisplayAlerts = False
    For i = 1 To UBound(FileNames)
    If FileNames(i) <> ThisWorkbook.Name Then
    Workbooks.Open FileName:=ThisWorkbook.Path & "\" & FileNames(i)
    ActiveWorkbook.SaveAs _
    FileName:=Left(FileNames(i), Len(FileNames(i)) - 4) &
    ".csv", _
    FileFormat:=xlCSV
    ActiveWorkbook.Close
    End If
    Next i
    Application.DisplayAlerts = True
    
    End Sub
    
  4. Запустите макрос.

  5. Теперь в командной строке перейдите в папку и введите

    копия * .csv consolidated.csv

  6. Открыть consolidated.csv в Excel и сохранить как обычный .xlsx worbook снова применить форматирование или другие изменения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .