Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

29 Май 2020, 20:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: очень нужна помощь с кодировкой файла  (Прочитано 760 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 852


« Ответ #53489: 29 Январь 2020, 09:27 »

Очень прошу помощи с кодировкой, чтобы строки в файлах читались уже в нужной кодировке.
Прошу помочь написать это в уже имеющемся макросе

Вот, прямо без всяких правок стиля:

Код:
sub BUH_PO_ORG_32_ORG
Dim oDoc as Object
Dim oSheet
Dim oCellRange ' диапазон
Dim oDataArray ' массив данных
Dim oCell
Dim f, l As String
f=1
l=9999999

Dim OVZR(100), kolf,  z, my_fop(100)
Dim maskbk(10000),massum(10000), masorg(10000)


Dim mastemp(1000),massum2(1000),massum3(1000), massum4(1000)
Dim massum5(1000), massum6(1000), massum7(1000), massum8(1000)
Dim massum9(1000), massum10(1000),massum11(1000), massum12(1000)
Dim massum13(1000), masnump(1000),massum1(1000), mastip(1000), masvid(1000)
Dim PathIn As String
Dim InFileName As String
Dim CurCol, CurRow, colkbk As Integer
Dim WordNumP, WordORG, WordNach, WordTip, WordSum, WordReshenie, WordResult, WordNumB As String 
Dim sNumP, sOrg, sTip, sResult, sNumb, sReshenie, sNach As String
dim sSum as Double
dim k,d,s,kolop


Dim sFile as String, sPath As String
Dim sDir as String, sValue as String
Dim iFIle, i,t, ikbk ,j as Double
Dim temp As Double

WordNumP = "ОРГАНИЗАЦИЯ" 'длЯ номера в 1с
WordORG = "ОРГАНИЗАЦИЯ" 'банк или почта
WordNach  = "НАЧИСЛЕНИЕ"
WordTip  = "НАЧИСЛЕНИЕ"
WordSum  = "<ОбщаяСуммаПоМассиву"


oDoc=ThisComponent
oSheet =oDoc.Sheets.getByName("32_ОРГ")
oCell=oSheet.getCellByposition(2,0) 
PathIn = oCell.getString()

sPath = "D:\666\test\1\"
PathIn= sPath

sValue = Dir$(sPath)
InFileName = sValue

iFile = 0
colkbk = 0
sValue = Dir$(sPath, 0)
Do
    If sValue <> "." and sValue <> ".." Then
        REM здесь файлы - описи
        If (inStr(sValue,"POSD") >= 0) Then
        iFile = iFile + 1
        my_fop(iFile-1) = sValue
    End if     
    End If
    sValue = Dir$
Loop Until sValue = ""

kolop=0
ikbk=0
Do while kolop < iFile
    InFileName = PathIn + my_fop(kolop)
a=1


Dim oUcb As Object, oInputStream As Object
oUcb = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = CreateUnoService("com.sun.star.io.TextInputStream")
oInputStream.setInputStream(oUcb.openFileRead(ConvertToURL(InFileName)))
oInputStream.setEncoding("cp866")
Do While Not oInputStream.isEOF()
s = oInputStream.readLine()
        s=Ltrim(s)
    If (len(s) >0) Then 'если строка не пустая
 
  'наименование банка или почты 
        If s Like WordORG & "*" Then 
      sOrg = Split(s, "|")(10) 'ПАО Сбербанк</НаименованиеОрганизации>
          ' oCell=oSheet.getCellByPosition(CurCol+1, CurRow)
      ' oCell.setString(sOrg)
        '   CurRow = CurRow + 1
        End If
 
 
 
  sVid=Left(s,10) 'слово начисление
  If sVid = "НАЧИСЛЕНИЕ" Then
    a=2
     
   
'КБК
       If s Like WordNach & "*" Then
       sNach = Split(s, "|")(2)'2
      'oCell=oSheet.getCellByPosition(CurCol, CurRow)
'oCell.setString(sNach)
   End If
   

       
'номер из 1с
  If s Like "*" & WordNumP &"*" Then
    sNumP = Split(s, "|")(5)
          ' oCell=oSheet.getCellByPosition(CurCol, CurRow)
  ' oCell.setString(sNump)
        End If

 
'тип выплаты 0301 или 0201
        sTip=" "
        If s Like WordTip & "*" Then
        sTip = Split(s, "|")(1) '02010000
        sTip = Left(sTip,Len(sTip)-2) 'оставляем 0201
       
          ' oCell=oSheet.getCellByPosition(CurCol+2, CurRow)
  ' oCell.setString(sTip)
        End If
  If (Right(Str(sTip),2)="00") Then
       
'сумма 1
       If s Like WordNach & "*" Then
       sSum1 = Split(s,"|")(3)
       sSum_1 =Val(sSum1)
'   oCell=oSheet.getCellByPosition(CurCol+4, CurRow)
    ' oCell.setString(sSum1)
        End If
           
'сумма 2
       If s Like WordNach & "*" Then
       sSum2 = Split(s,"|")(4)
       sSum_2 =Val(sSum2)
  '  oCell=oSheet.getCellByPosition(CurCol+5, CurRow)
    ' oCell.setString(sSum2)
        End If           
       
'сумма 3
       If s Like WordNach & "*" Then
       sSum3 = Split(s,"|")(5)
       sSum_3 =Val(sSum3)
   ' oCell=oSheet.getCellByPosition(CurCol+6, CurRow)
    ' oCell.setString(sSum3)
        End If       
           
'сумма 4
       If s Like WordNach & "*" Then
       sSum4 = Split(s,"|")(6)
       sSum_4 =Val(sSum4) 
'   oCell=oSheet.getCellByPosition(CurCol+7, CurRow)
    ' oCell.setString(sSum4)
        End If
           
'сумма 5
       If s Like WordNach & "*" Then
       sSum5 = Split(s,"|")(7)
       sSum_5 =Val(sSum5)
  '  oCell=oSheet.getCellByPosition(CurCol+8, CurRow)
    ' oCell.setString(sSum5)
        End If           
       
'сумма 6
       If s Like WordNach & "*" Then
       sSum6 = Split(s,"|")(8)
       sSum_6 =Val(sSum6)
  '  oCell=oSheet.getCellByPosition(CurCol+9, CurRow)
    ' oCell.setString(sSum6)
        End If
       
'сумма 7
       If s Like WordNach & "*" Then
       sSum7 = Split(s,"|")(9)
       sSum_7 =Val(sSum7)
  '  oCell=oSheet.getCellByPosition(CurCol+10, CurRow)
   ' oCell.setString(sSum7)
        End If
           
'сумма 8
       If s Like WordNach & "*" Then
       sSum8 = Split(s,"|")(10)
       sSum_8 =Val(sSum8)
  '  oCell=oSheet.getCellByPosition(CurCol+11, CurRow)
    ' oCell.setString(sSum8)
        End If           
       
'сумма 9
       If s Like WordNach & "*" Then
       sSum9 = Split(s,"|")(11)
       sSum_9 =Val(sSum9) 
  ''  oCell=oSheet.getCellByPosition(CurCol+12, CurRow)
    ' oCell.setString(sSum9)
        End If       
           
'сумма 10
       If s Like WordNach & "*" Then
       sSum10 = Split(s,"|")(12)'12
       sSum_10 =Val(sSum10) 
  '  oCell=oSheet.getCellByPosition(CurCol+13, CurRow)
    ' oCell.setString(sSum10)
        End If
           
'сумма 11
       If s Like WordNach & "*" Then
       sSum11 = Split(s,"|")(13)'13)
       sSum_11 =Val(sSum11)
'   oCell=oSheet.getCellByPosition(CurCol+14, CurRow)
    ' oCell.setString(sSum11)
        End If           
       
'сумма 12
       If s Like WordNach & "*" Then
       sSum12 = Split(s,"|")(14)'14)
       sSum_12 =Val(sSum12)
   ' oCell=oSheet.getCellByPosition(CurCol+15, CurRow)
    ' oCell.setString(sSum12)
        End If 
       
'сумма 13
       If s Like WordNach & "*" Then
       sSum13 = Split(s,"|")(15)'15
       sSum_13 =Val(sSum13)
  '  oCell=oSheet.getCellByPosition(CurCol+16, CurRow)
    ' oCell.setString(sSum13)
        End If
       
'сумма 14
       If s Like WordNach & "*" Then
       sSum14 = Split(s,"|")(16)'16
       sSum =Val(sSum14)
   ' oCell=oSheet.getCellByPosition(CurCol+1, CurRow)
    'oCell.setString(sSum14)
        End If               
    'CurRow = CurRow + 1
   
' If (sTip="0000" ) Then 'если строка не пустая
If (sNach>0 ) Then 'если строка не пустая

       

       
       ' поиск КБК
            i=0 ' за что отвечает
            j=0  ' за что отвечает
           
            For i=0 To iorg-1 '0 - 1 значение, 1 - 2 значение
'           
               If (sOrg=masorg(i)) Then 'если кбк = кбк в массиве Мне это условие не нравится
                 
                   j=i+1 'переходим к след
               End If
            next
          If (j=0) Then
          'If (sTip="0000" ) Then 'если строка не пустая
         
                iorg=iorg+1
             
                massum(iorg-1)=sSum
               ' maskbk(iorg-1)=sNach
                masorg(iorg-1)=sOrg
                mastip(iorg-1)=sTip
                masnump(iorg-1)=sNumP
                massum1(iorg-1)=sSum_1
    massum2(iorg-1)=sSum_2
    massum3(iorg-1)=sSum_3
    massum4(iorg-1)=sSum_4
    massum5(iorg-1)=sSum_5
    massum6(iorg-1)=sSum_6
    massum7(iorg-1)=sSum_7
    massum8(iorg-1)=sSum_8
    massum9(iorg-1)=sSum_9
    massum10(iorg-1)=sSum_10
    massum11(iorg-1)=sSum_11
massum12(iorg-1)=sSum_12
    massum13(iorg-1)=sSum_13
    masvid(iorg-1)=sVid
   
          Else
         
         
                massum(j-1)=massum(j-1)+sSum
                massum1(j-1)=massum1(j-1)+sSum_1
                massum2(j-1)=massum2(j-1)+sSum_2
                massum3(j-1)=massum3(j-1)+sSum_3
                massum4(j-1)=massum4(j-1)+sSum_4   
            massum5(j-1)=massum5(j-1)+sSum_5
              massum6(j-1)=massum6(j-1)+sSum_6
              massum7(j-1)=massum7(j-1)+sSum_7
              massum8(j-1)=massum8(j-1)+sSum_8
              massum9(j-1)=massum9(j-1)+sSum_9
              massum10(j-1)=massum10(j-1)+sSum_10
              massum11(j-1)=massum11(j-1)+sSum_11
              massum12(j-1)=massum12(j-1)+sSum_12
              massum13(j-1)=massum13(j-1)+sSum_13
             
           
               
          End If
         End If 
       ' далее обработка этого КБК     
        End If       
        End If
        End IF
       
Loop
oInputStream.closeInput()
    kolop = kolop + 1
    If a=1 Then
   msgbox InFileName + " - это не 32 ведомость!"
   Stop
    End If
   
 Loop
 
 


oCell=oSheet.getCellByPosition(CurCol, CurRow)
oCell.setString("Код строки")

oCell=oSheet.getCellByPosition(CurCol+1, CurRow)
oCell.setString("Наименование доставочной организации")
       
oCell=oSheet.getCellByPosition(CurCol+2, CurRow)
oCell.setString("Нач.за тек.мес.(4)")
oCell=oSheet.getCellByPosition(CurCol+3, CurRow)
oCell.setString("Нач.за прош.время(5)")
oCell=oSheet.getCellByPosition(CurCol+4, CurRow)
oCell.setString("уд.перепл.всего(6)")
oCell=oSheet.getCellByPosition(CurCol+5, CurRow)
oCell.setString("уд.перепл.в т.ч. тек.фин.года(7)")
oCell=oSheet.getCellByPosition(CurCol+6, CurRow)
oCell.setString("уд.по испол.док(8)")
oCell=oSheet.getCellByPosition(CurCol+7, CurRow)
oCell.setString("уд.по проч.основ(9)")
oCell=oSheet.getCellByPosition(CurCol+8, CurRow)
oCell.setString("сумма платы за стацион.обслуж. к переч(10)")
oCell=oSheet.getCellByPosition(CurCol+9, CurRow)
oCell.setString("возврат суммы, неполуч.взыск(11)")
oCell=oSheet.getCellByPosition(CurCol+10, CurRow)
oCell.setString("сумма к выплате 4+5-6-8-9-10+11 (12)")
oCell=oSheet.getCellByPosition(CurCol+11, CurRow)
oCell.setString("сумма неопл(не прекр.выпл) тек(13")
oCell=oSheet.getCellByPosition(CurCol+12, CurRow)
oCell.setString("сумма неопл(не прекр.выпл) возобн.из приост(14)")
oCell=oSheet.getCellByPosition(CurCol+13, CurRow)
oCell.setString("сумма неопл(не прекр.выпл) иная(15)")
oCell=oSheet.getCellByPosition(CurCol+14, CurRow)
oCell.setString("сумма восстан из прекращ(16)")
oCell=oSheet.getCellByPosition(CurCol+15, CurRow)
oCell.setString("сумма к доставке (12+13+14+15+16)(15)")

CurRow=CurRow+1       
For i=0 To iorg

oCell=oSheet.getCellByPosition(CurCol, CurRow)
oCell.setString(masnump(i))
oCell=oSheet.getCellByPosition(CurCol+1, CurRow)
oCell.setString(masorg(i))
'oCell=oSheet.getCellByPosition(CurCol+2, CurRow)
'oCell.setString(massum(i))
oCell=oSheet.getCellByPosition(CurCol+2, CurRow)
oCell.setString(massum1(i))
oCell=oSheet.getCellByPosition(CurCol+3, CurRow)
oCell.setString(massum2(i))
oCell=oSheet.getCellByPosition(CurCol+4, CurRow)
oCell.setString(massum3(i))
oCell=oSheet.getCellByPosition(CurCol+5, CurRow)
oCell.setString(massum4(i))
oCell=oSheet.getCellByPosition(CurCol+6, CurRow)
oCell.setString(massum5(i))
oCell=oSheet.getCellByPosition(CurCol+7, CurRow)
oCell.setString(massum6(i))
oCell=oSheet.getCellByPosition(CurCol+8, CurRow)
oCell.setString(massum7(i))
oCell=oSheet.getCellByPosition(CurCol+9, CurRow)
oCell.setString(massum8(i))
oCell=oSheet.getCellByPosition(CurCol+10, CurRow)
oCell.setString(massum9(i))
oCell=oSheet.getCellByPosition(CurCol+11, CurRow)
oCell.setString(massum10(i))
oCell=oSheet.getCellByPosition(CurCol+12, CurRow)
oCell.setString(massum11(i))
oCell=oSheet.getCellByPosition(CurCol+13, CurRow)
oCell.setString(massum12(i))   
oCell=oSheet.getCellByPosition(CurCol+14, CurRow)
oCell.setString(massum13(i))
oCell=oSheet.getCellByPosition(CurCol+15, CurRow)
oCell.setString(massum(i))
oCell=oSheet.getCellByPosition(CurCol+16, CurRow)
oCell.setString(masvid(i))
CurRow=CurRow+1

Next i


j1=0
j2=0
j3=0
j4=0
j5=0
j6=0
j7=0
j8=0
j9=0
j10=0
j11=0
j12=0
j13=0
j=0

For i=0 To iorg
    j1=j1+massum1(i)
    j2=j2+massum2(i)
    j3=j3+massum3(i)
    j4=j4+massum4(i)
    j5=j5+massum5(i)
    j6=j6+massum6(i)
    j7=j7+massum7(i)
    j8=j8+massum8(i)
    j9=j9+massum9(i)
    j10=j10+massum10(i)
    j11=j11+massum11(i)
    j12=j12+massum12(i)
    j13=j13+massum13(i)
    j=j+massum(i)
Next


oCell=oSheet.getCellByPosition(CurCol+2, CurRow)
oCell.setString(j1)
oCell=oSheet.getCellByPosition(CurCol+3, CurRow)
oCell.setString(j2)
oCell=oSheet.getCellByPosition(CurCol+4, CurRow)
oCell.setString(j3)
oCell=oSheet.getCellByPosition(CurCol+5, CurRow)
oCell.setString(j4)
oCell=oSheet.getCellByPosition(CurCol+6, CurRow)
oCell.setString(j5)
oCell=oSheet.getCellByPosition(CurCol+7, CurRow)
oCell.setString(j6)
oCell=oSheet.getCellByPosition(CurCol+8, CurRow)
oCell.setString(j7)
oCell=oSheet.getCellByPosition(CurCol+9, CurRow)
oCell.setString(j8)
oCell=oSheet.getCellByPosition(CurCol+10, CurRow)
oCell.setString(j9)
oCell=oSheet.getCellByPosition(CurCol+11, CurRow)
oCell.setString(j10)
oCell=oSheet.getCellByPosition(CurCol+12, CurRow)
oCell.setString(j11)
oCell=oSheet.getCellByPosition(CurCol+13, CurRow)
oCell.setString(j12)
oCell=oSheet.getCellByPosition(CurCol+14, CurRow)
oCell.setString(j13)
oCell=oSheet.getCellByPosition(CurCol+15, CurRow)
oCell.setString(j)

End Sub
Записан

С уважением,
Михаил Каганский
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!