Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запись в txt полное содержание переменной типа String - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись в txt полное содержание переменной типа String (Макросы/Sub)
Запись в txt полное содержание переменной типа String
vbamaker Дата: Суббота, 16.08.2014, 02:02 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток уважаемым программистам 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 ===== Создаем пустые документы
     
       sLine(1) = ""
       sLine(2) = ""
       sLine(3) = ""
       sLine(4) = ""
        
       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 ===== Создаем пустые документы
     
       sLine(1) = ""
       sLine(2) = ""
       sLine(3) = ""
       sLine(4) = ""
        
       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]

Автор - vbamaker
Дата добавления - 16.08.2014 в 02:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись в txt полное содержание переменной типа String (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!