Доброго времени суток уважаемым программистам VBA Excel! Возможно кто-то уже сталкивался с такой ситуацией. Я никак не могу понять эту странную сложившуюся ситуации. После присвоения значений переменным типа String, содержимое записываеться в раздельные txt документы. Но почему-то значения sLine(1), sLine(3), sLine(4), которые непосредственно перед моментом записи содержат более 1000 символов записываются некорректно, а именно заносится только 513 символов. Со значением sLine(2) на удивление всё нормально.
[vba]
Код
... Dim liFNr(0 To 4) As Integer Dim li_i As Integer Dim liField As Integer Dim sLine(0 To 4) As String Dim liField As Integer Dim lsFields As String Dim msFields(1 To 251) As String
... Set gColSCD_POR = New Collection ...
For li_i = 1 To gColSCD_POR.Count lsExportPfad = "C:\TEMP" & gColSCD_POR(li_i) & "\" MkDir lsExportPfad
If Dir(cTempPfad & "Sapfdp" & gColSCD_POR(li_i) & ".tmp") <> "" Then liFNr(0) = FreeFile Open cTempPfad & "Sapfdp" & gColSCD_POR(li_i) & ".tmp" For Input As #liFNr(0)
'======== Создаем пустые документы liFNr(1) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_1.txt" For Append As #liFNr(1)
liFNr(2) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_2.txt" For Append As #liFNr(2)
liFNr(3) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_3.txt" For Append As #liFNr(3)
liFNr(4) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_4.txt" For Append As #liFNr(4) '=== END ===== Создаем пустые документы
For liField = 1 To 251 '======== Присваиваем sLine(1..4) постепенно значение ШАПКИ If miFields1(liField) = 1 Then sLine(1) = IIf(miNumber6(liField) = 1, sLine(1) & msFields(liField) & ";;", sLine(1) & msFields(liField) & ";") End If If miFields2(liField) = 1 Then sLine(2) = IIf(miNumber6(liField) = 1, sLine(2) & msFields(liField) & ";;", sLine(2) & msFields(liField) & ";") End If If miFields3(liField) = 1 Then sLine(3) = IIf(miNumber6(liField) = 1, sLine(3) & msFields(liField) & ";;", sLine(3) & msFields(liField) & ";") End If If miFields4(liField) = 1 Then sLine(4) = IIf(miNumber6(liField) = 1, sLine(4) & msFields(liField) & ";;", sLine(4) & msFields(liField) & ";") End If Next '=== END ===== Присваиваем sLine(1..4) постепенно значение ШАПКИ
'Debug.Print sLine(1): Debug.Print "" 'Debug.Print sLine(2): Debug.Print "" 'Debug.Print sLine(3): Debug.Print "" 'Debug.Print sLine(4): Debug.Print "" ' ЗДЕСЬ sLine(1) sLine(2) sLine(3) sLine(4) СОДЕРЖАЬ БОЛЕЕ 1000 СИМВОЛОВ
Print #liFNr(1), sLine(1) Print #liFNr(2), sLine(2) Print #liFNr(3), sLine(3) Print #liFNr(4), sLine(4) ' СРАЗУ ПОСЛЕ ЗАПИСИ В ДОКУМЕНТАХ TXT СОДЕРЖАТЬСЯ НЕ ПОЛНЫЕ СТРОКИ, ' А ИМЕННО 513 СИМВОЛОВ ' ЗА ИСКЛЮЧЕНИЕМ ДОКУМЕНТА ...2.txt В НЕГО ЗАПИСЫВАЕТСЯ ПОЛНОЕ СОДЕРЖАНИЕ СТРОКИ sLine(2) ...
[/vba]
Доброго времени суток уважаемым программистам VBA Excel! Возможно кто-то уже сталкивался с такой ситуацией. Я никак не могу понять эту странную сложившуюся ситуации. После присвоения значений переменным типа String, содержимое записываеться в раздельные txt документы. Но почему-то значения sLine(1), sLine(3), sLine(4), которые непосредственно перед моментом записи содержат более 1000 символов записываются некорректно, а именно заносится только 513 символов. Со значением sLine(2) на удивление всё нормально.
[vba]
Код
... Dim liFNr(0 To 4) As Integer Dim li_i As Integer Dim liField As Integer Dim sLine(0 To 4) As String Dim liField As Integer Dim lsFields As String Dim msFields(1 To 251) As String
... Set gColSCD_POR = New Collection ...
For li_i = 1 To gColSCD_POR.Count lsExportPfad = "C:\TEMP" & gColSCD_POR(li_i) & "\" MkDir lsExportPfad
If Dir(cTempPfad & "Sapfdp" & gColSCD_POR(li_i) & ".tmp") <> "" Then liFNr(0) = FreeFile Open cTempPfad & "Sapfdp" & gColSCD_POR(li_i) & ".tmp" For Input As #liFNr(0)
'======== Создаем пустые документы liFNr(1) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_1.txt" For Append As #liFNr(1)
liFNr(2) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_2.txt" For Append As #liFNr(2)
liFNr(3) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_3.txt" For Append As #liFNr(3)
liFNr(4) = FreeFile Open lsExportPfad & "I_" & gColSCD_POR(li_i) & "_4.txt" For Append As #liFNr(4) '=== END ===== Создаем пустые документы
For liField = 1 To 251 '======== Присваиваем sLine(1..4) постепенно значение ШАПКИ If miFields1(liField) = 1 Then sLine(1) = IIf(miNumber6(liField) = 1, sLine(1) & msFields(liField) & ";;", sLine(1) & msFields(liField) & ";") End If If miFields2(liField) = 1 Then sLine(2) = IIf(miNumber6(liField) = 1, sLine(2) & msFields(liField) & ";;", sLine(2) & msFields(liField) & ";") End If If miFields3(liField) = 1 Then sLine(3) = IIf(miNumber6(liField) = 1, sLine(3) & msFields(liField) & ";;", sLine(3) & msFields(liField) & ";") End If If miFields4(liField) = 1 Then sLine(4) = IIf(miNumber6(liField) = 1, sLine(4) & msFields(liField) & ";;", sLine(4) & msFields(liField) & ";") End If Next '=== END ===== Присваиваем sLine(1..4) постепенно значение ШАПКИ
'Debug.Print sLine(1): Debug.Print "" 'Debug.Print sLine(2): Debug.Print "" 'Debug.Print sLine(3): Debug.Print "" 'Debug.Print sLine(4): Debug.Print "" ' ЗДЕСЬ sLine(1) sLine(2) sLine(3) sLine(4) СОДЕРЖАЬ БОЛЕЕ 1000 СИМВОЛОВ
Print #liFNr(1), sLine(1) Print #liFNr(2), sLine(2) Print #liFNr(3), sLine(3) Print #liFNr(4), sLine(4) ' СРАЗУ ПОСЛЕ ЗАПИСИ В ДОКУМЕНТАХ TXT СОДЕРЖАТЬСЯ НЕ ПОЛНЫЕ СТРОКИ, ' А ИМЕННО 513 СИМВОЛОВ ' ЗА ИСКЛЮЧЕНИЕМ ДОКУМЕНТА ...2.txt В НЕГО ЗАПИСЫВАЕТСЯ ПОЛНОЕ СОДЕРЖАНИЕ СТРОКИ sLine(2) ...