Как записать в файл, используя запятую и без двойных кавычек в строке? - PullRequest
0 голосов
/ 30 сентября 2019

Я хотел бы напечатать диапазон дат в файл .txt со специальным заголовком, чтобы специальное программное обеспечение под названием Prophet могло распознавать.

Sub Export_TEST()
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
Dim prophetheader As String
Dim prophetlineheader As String
myFile = Application.DefaultFilePath & "\" & "test" & ".txt"
Set rng = Selection

prophetheader = "!1"
Open myFile For Output As #1
Print #1, rng.Columns.Count - 1

For i = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count
        cellValue = rng.Cells(i, j).Value
        If j = rng.Columns.Count Then
            Print #1, cellValue
        ElseIf i = 1 And j = 1 Then
            Print #1, prophetheader, cellValue,
        ElseIf j = 1 Then
            Print #1, "*", cellValue,
        Else
            Print #1, cellValue,
        End If
    Next j
Next i
Close #1

End Sub

Код довольно прост, просто добавьте * в начале каждой строки и добавьте! 1 в заголовок столбца. Но я сталкиваюсь с проблемой, что выходной файл был разделен запятой и без двойных кавычек в строке. И я нахожусь в дилемме, что если я использую функцию записи, она будет использовать запятую в качестве разделителя, но имеет двойные кавычки в строке и если я использую Print, пробел в качестве разделителя и без двойных кавычек в строке.

Есть лиспособ распечатать файл с использованием запятой и без двойных кавычек в строке?

Ниже приведен выбор фиктивных данных.

ИМЯ SPCODE

1 JS

И вывод должен быть

21

! 1, SPCODE, NAME

*, 1, JS

1 Ответ

1 голос
/ 30 сентября 2019

Возможно, вместо того, чтобы записывать каждую строку в текстовый файл, вы просто пишете каждую строку в общей сложности

Option Explicit

Sub Export_TEST()
    Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
    Dim prophetheader As String
    Dim prophetlineheader As String
    myFile = ThisWorkbook.Path & "\" & "test" & ".txt"
    Set rng = Selection

    prophetheader = "!1"
    Open myFile For Output As #1
    Print #1, rng.Columns.Count - 1

    Dim line As String
    For i = 1 To rng.Rows.Count
        line = ""
        For j = 1 To rng.Columns.Count
            cellValue = rng.Cells(i, j).Value
            If j = rng.Columns.Count Then
                line = line & cellValue & ","
            ElseIf i = 1 And j = 1 Then
                line = line & prophetheader & cellValue & ","
            ElseIf j = 1 Then
                line = line & "*" & cellValue & ","
            Else
                line = line & cellValue & ","
            End If
        Next j
        line = Left(line, Len(line) - 1)
        Print #1, line
    Next i
    Close #1

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