Подтвердить что ты не робот

Сохранение файла Excel в формате .txt без кавычек

У меня есть лист excel, который имеет данные в столбце A. В ячейках много специальных символов. Когда я сохраняю лист в формате .txt, я получаю кавычки в начале каждой строки. Я попробовал как вручную, так и макрос, сохраняя файл в формате .txt. Почему это так? Как их удалить?  Я не могу удалить кавычки . Присоединение рисунка enter image description here

4b9b3361

Ответ 1

Попробуйте этот код. Это делает то, что вы хотите.

LOGIC

  • Сохранить файл в виде файла с разделителями табуляции в каталоге временных файлов
  • Прочитайте текстовый файл за 1 проход
  • Заменить "" пробелами и записать в новый файл одновременно.

КОД (ИСПЫТАНИЕ И ИСПЫТАНИЕ)

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Const MAX_PATH As Long = 260

'~~> Change this where and how you want to save the file
Const FlName = "C:\Users\Siddharth Rout\Desktop\MyWorkbook.txt"

Sub Sample()
    Dim tmpFile As String
    Dim MyData As String, strData() As String
    Dim entireline As String
    Dim filesize As Integer

    '~~> Create a Temp File
    tmpFile = TempPath & Format(Now, "ddmmyyyyhhmmss") & ".txt"

    ActiveWorkbook.SaveAs Filename:=tmpFile _
    , FileFormat:=xlText, CreateBackup:=False

    '~~> Read the entire file in 1 Go!
    Open tmpFile For Binary As #1
    MyData = Space$(LOF(1))
    Get #1, , MyData
    Close #1
    strData() = Split(MyData, vbCrLf)

    '~~> Get a free file handle
    filesize = FreeFile()

    '~~> Open your file
    Open FlName For Output As #filesize

    For i = LBound(strData) To UBound(strData)
        entireline = Replace(strData(i), """", "")
        '~~> Export Text
        Print #filesize, entireline
    Next i

    Close #filesize

    MsgBox "Done"
End Sub

Function TempPath() As String
    TempPath = String$(MAX_PATH, Chr$(0))
    GetTempPath MAX_PATH, TempPath
    TempPath = Replace(TempPath, Chr$(0), "")
End Function

SNAPSHOTS

Актуальная рабочая книга

enter image description here

После сохранения

enter image description here

Ответ 2

Я вижу, что на этот вопрос уже дан ответ, но он хотел предложить альтернативу, если кто-то еще это обнаружит позже.

В зависимости от требуемого разделителя это можно сделать без написания кода. В исходном вопросе не приводится подробная информация о желаемом типе вывода, но здесь есть альтернатива:

Тип файла PRN

Самый простой вариант - сохранить файл в виде типа "Отформатированный текст (ограниченный пространством)". Кодовая строка VBA будет выглядеть примерно так:

ActiveWorkbook.SaveAs FileName:=myFileName, FileFormat:=xlTextPrinter, CreateBackup:=False

В Excel 2007 это будет досадно помещать расширение .prn в конец имени файла, но его можно изменить на .txt, переименовав вручную.

В Excel 2010 вы можете указать любое расширение файла, которое вы хотите в диалоговом окне "Сохранить как".

Важно отметить: количество разделителей, используемых в текстовом файле, связано с шириной столбца Excel.

Заметим:

Excel Screenshot

становится:

Text Screenshot

Ответ 3

Ummm, Как насчет этого.

Скопируйте свои ячейки.
Откройте Блокнот.
Paste.

Посмотрите кавычки, не перевернутые запятые и сохраните специальные символы , о которых попросил ОП. Его также обозначают возвратом каретки, так же как и прикрепленная пиктограмма, которую OP не упоминал как плохая вещь (или хорошая вещь).

Не уверен, почему простой ответ, который дает желаемые результаты, получает отрицательную оценку.

Ответ 4

Я просто провел большую часть дня на этом

Существует два распространенных способа записи в файл, первый из которых - это прямой запрос на запись в файл. Это добавляет кавычки.

Во-вторых, это "ActiveWorkbook.SaveAs" или "ActiveWorksheet.SaveAs", которые имеют очень плохой побочный эффект при изменении имени файла активной книги.

Решение здесь представляет собой гибрид нескольких решений, которые я нашел в Интернете. Это в основном делает это: 1) Скопировать выбранные ячейки на новый рабочий лист 2) Итерации по каждой ячейке по одному и "распечатать" ее в открытый файл 3) Удалите временный лист.

Функция работает с выбранными ячейками и берет строку для имени файла или предлагает имя файла.

Function SaveFile(myFolder As String) As String
tempSheetName = "fileWrite_temp"
SaveFile = "False"

Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long

Set myRange = Selection
'myRange.Select
Selection.Copy

'Ask user for folder to save text file to.
If myFolder = "prompt" Then
    myFolder = Application.GetSaveAsFilename(fileFilter:="XML Files (*.xml), *.xml, All Files (*), *")
End If
If myFolder = "False" Then
    End
End If

Open myFolder For Output As #2

'This temporarily adds a sheet named "Test."
Sheets.Add.Name = tempSheetName
Sheets(tempSheetName).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

For i = 1 To LastRow
    For j = 1 To LastCol
        CellData = CellData + Trim(ActiveCell(i, j).Value) + "   "
    Next j

    Print #2, CellData; " "
    CellData = ""

Next i

Close #2

'Remove temporary sheet.
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Indicate save action.
MsgBox "Text File Saved to: " & vbNewLine & myFolder
SaveFile = myFolder

Конечная функция

Ответ 5

У меня такая же проблема: я должен сделать конкретный .txt файл для банковских платежей из файла excel. Файл .txt не должен делиться каким-либо символом, поскольку для каждого стандартного значения требуется определенное количество запятых. Самый простой способ сделать это - скопировать contect файла excel и вставить его в блокнот.