![Экспортируйте текстовый файл, но продолжайте редактировать файл xlsx](https://rvso.com/image/1592138/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D1%83%D0%B9%D1%82%D0%B5%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB%2C%20%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B0%D0%B9%D1%82%D0%B5%20%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%84%D0%B0%D0%B9%D0%BB%20xlsx.png)
Я использую Excel для генерации текстовых файлов, которые затем анализируются как входные данные для базы данных. Я постоянно раздражаюсь, когда мне приходится сохранять файл xlsx как текстовый файл и закрывать Excel, потому что теперь я редактирую текстовый файл в Excel. Есть ли способ, который я просто не вижу, чтобы сгенерировать текстовый файл, но оставить файл xlsx открытым в Excel?
решение1
Для этого вам понадобится макрос VBA, который может выглядеть следующим образом:
Sub WriteTextFile()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
CellData = ""
FilePath = Application.DefaultFilePath & "\euth.csv"
Open FilePath For Output As #2
For i = 1 To LastRow
For j = 1 To LastCol
If j = LastCol Then
CellData = CellData + TrimtActiveCell(i, j).Value)
Else
CellData = CellData + TrimtActiveCell(i, j).Value) + ","
End If
Next j
Write #2, CellData
CellData = ""
Next i
Close #2
MsgBox ("Done")
End Sub
Вы можете изменить подпрограмму по своему усмотрению, возможно, добавив "euth.csv" в качестве параметра или запросив его. Если в таблице только один столбец, этот код можно значительно упростить.
Объяснение использованных выше команд см. в статье Запись в текстовые файлы в Excel VBA/