Необходимо изменить этот макрос экспорта для вывода текста с разделителями табуляции - PullRequest
0 голосов
/ 21 марта 2012

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

Public Sub DoTheExport()
Dim FName As Variant
Dim Sep As String
Dim wsSheet As Worksheet
Dim nFileNum As Integer
Dim csvPath As String


Sep = InputBox("Enter a single delimiter character (e.g., comma or semi-colon)", _
"Export To Text File")
'csvPath = InputBox("Enter the full path to export CSV files to: ")

csvPath = GetFolderName("Choose the folder to export CSV files to:")
If csvPath = "" Then
    MsgBox ("You didn't choose an export directory. Nothing will be exported.")
    Exit Sub
End If

For Each wsSheet In Worksheets
wsSheet.Activate
nFileNum = FreeFile
Open csvPath & "\" & _
  wsSheet.Name & ".csv" For Output As #nFileNum
ExportToTextFile CStr(nFileNum), Sep, False
Close nFileNum
Next wsSheet

End Sub

А вот как я его модифицировал:

Public Sub DoTheExport()
Dim FName As Variant
Dim Sep As String
Dim wsSheet As Worksheet
Dim nFileNum As Integer
Dim txtPath As String


'Sep = InputBox("Enter a single delimiter character (e.g., comma or semi-colon)", _
'"Export To Text File")
'csvPath = InputBox("Enter the full path to export CSV files to: ")

txtPath = GetFolderName("Choose the folder to export TXT files to:")
If txtPath = "" Then
    MsgBox ("You didn't choose an export directory. Nothing will be exported.")
    Exit Sub
End If

For Each wsSheet In Worksheets
wsSheet.Activate
nFileNum = FreeFile
Open txtPath & "\" & _
  wsSheet.Name & ".txt" For Output As #nFileNum
ExportToTextFile CStr(nFileNum), Sep, False
Close nFileNum
Next wsSheet

End Sub

Заранее спасибо!

1 Ответ

2 голосов
/ 21 марта 2012

Выглядит так, как будто вы не устанавливаете Sep как что-либо, тогда как похоже, что это должен быть ваш разделитель.Используйте следующее перед циклом For Each...

Sep = vbTab

или

Sep = Chr(9)
...