Скрытые персонажи?

Я написал набор модулей, которые анализируют данные в файлы.json для загрузки в ArcGIS. Все отлично работает, за исключением того, что, когда я пытаюсь загрузить файлы.json, происходит сбой и появляется неожиданный символ. Я не вижу символов, когда открываю.json в блокноте. Я попытался просто повторно сохранить файл. Я записал данные в файлы.txt и изменил расширение. Я вырезал данные, сохранил пустой файл и вставил его обратно.

Единственное, что, похоже, работает: откройте целевой файл.json, скопируйте данные в файл new.txt, закройте целевой файл.json, а затем сохраните файл new.txt в качестве целевого файла.json. Это решает проблему, но это занимает очень много времени, потому что есть 24 файла.json, с которыми я должен это сделать.

Вот мой код:

Sub WriteData()
Dim filepath As String
Dim celldata As String
Dim lastrow As String
Dim lastcol As String
Dim k As Long
Dim temp As Worksheet
Dim ouput As Worksheet
Dim fileout As Object
Dim fso As Object
'
Set temp = ActiveWorkbook.Sheets("Temp")
Set output = ActiveWorkbook.Sheets("Output Sheet")
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 15 To 22
    For j = 3 To 5
        k = 3 * (i - 15) + j - 2
        filepath = Application.ActiveWorkbook.Path & "\JSON Files\" & temp.Cells(i, 1) & " " & temp.Cells(15, j) & ".json"
        Set fileout = fso.CreateTextFile(filepath, True, True)
        For l = 1 To Cells(Rows.Count, k).End(xlUp).Row + 1
            celldata = output.Cells(l, k)
            fileout.write celldata
        Next l
        fileout.Close
    Next j
Next i
Sheets("Output Sheet").Select
ActiveWorkbook.Save
End Sub

1 ответ

Я починил это! Должно быть что-то происходит, когда вы используете fileout.write. Я изменил его на простую команду печати, и она работает! Вот изменения (я оставил старые строки для справки):

k = 3 * (i - 15) + j - 2
filepath = Application.ActiveWorkbook.Path & "\JSON Files\" & temp.Cells(i, 1) & " " & temp.Cells(15, j) & ".json"
'Set fileout = fso.CreateTextFile(filepath, True, True)
Open filepath For Output As #1
For l = 1 To Cells(Rows.Count, k).End(xlUp).Row + 1
    celldata = output.Cells(l, k)
    'fileout.write celldata
    Print #1, celldata
Next l
'fileout.Close
Close #1
Другие вопросы по тегам