Невозможно экспортировать таблицу в CSV вместе с заголовком с VBA в Excel - PullRequest
0 голосов
/ 12 января 2019

У меня есть таблица внутри листа. Я использовал следующее найденное здесь

http://learnexcelmacro.com/wp/2017/09/save-excel-range-data-as-csv-file-through-excel-vba/#VBA-to-save-excel-table-to-csv

Sub saveTableToCSV()

Dim tbl As ListObject
Dim csvFilePath As String
Dim fNum As Integer
Dim tblArr
Dim rowArr
Dim csvVal

Set tbl = Worksheets("EXPORT").ListObjects("TableName")
csvFilePath = "C:\CSVFile.csv"
tblArr = tbl.DataBodyRange.Value

fNum = FreeFile()
Open csvFilePath For Output As #fNum
For i = 1 To UBound(tblArr)
    rowArr = Application.Index(tblArr, i, 0)
    csvVal = VBA.Join(rowArr, ",")
    Print #1, csvVal
Next
Close #fNum
Set tblArr = Nothing
Set rowArr = Nothing
Set csvVal = Nothing
End Sub

Как включить заголовок таблицы в csv? Моя мысль сделать следующее

tblArr2 = tbl.HeaderRowRange.Value

Но как я присоединюсь к столам?

Кроме того, как включить поддержку UTF-8 в сохраненный CSV?

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Я добавил следующее

rowArr2 = Application.Index(tblArrHeaders, 0, 0)
csvVal2 = VBA.Join(rowArr2, ",")
Print #1, csvVal2 + csvVal

так что я получил

Set tbl = Worksheets("FOR EXPORT").ListObjects("table")
csvFilePath = "C:\CSVFile.csv"
tblArr = tbl.DataBodyRange.Value
tblArrHeaders = tbl.HeaderRowRange.Value

fNum = FreeFile()
Open csvFilePath For Output As #fNum

rowArr2 = Application.Index(tblArrHeaders, 0, 0)
csvVal2 = VBA.Join(rowArr2, ",")
Print #1, csvVal2 + csvVal

For i = 1 To UBound(tblArr)
    rowArr = Application.Index(tblArr, i, 0)
    csvVal = VBA.Join(rowArr, ",")
    Print #1, csvVal
Next
Close #fNum
Set tblArr = Nothing
Set rowArr = Nothing
Set csvVal = Nothing
0 голосов
/ 12 января 2019

Когда вы выбираете диапазон ячеек, вы просто выбираете данные таблицы:

tblArr = tbl.DataBodyRange.Value

Что вам нужно сделать, это выбрать весь диапазон таблиц, например:

tblArr = tbl.Range.Value

Вы можете взглянуть на эту статью для дополнительной справки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...