< návrat zpět

MS Excel


Téma: Export prostý text a struktura souboru rss

Zaslal/a 27.8.2015 8:50

AlfanDobrý den,
banka po nás chce pohledávky (POS) v určitém formátu a struktuře.
Já vyexportuji v excelu POS (viz list "matrice").
A na listu "export" jsem se pokusil pomocí vzorců docílit požadované struktury (viz *.pdf v příloze).
Nicméně si nedokážu poradit s kontrolou počtu znaků u IČO a případně doplnit chybějící znaky mezerami tak, jak chce banka a hlavně nedokáži docílit formátu té částky tak, jak to požaduje banka.
Nikdy nevím, kolik budu mít řádků POS, ale to by asi nebyl problém protáhnout vzorce.
Pokud by se mi podařilo dostat data do požadovaného formátu, tak bych je už jen potřeboval vyexportovat bez záhlaví sloupců ve formátu prostého textu tak, jak to chce banka.
Mohl byste mi někdo prosím poradit?
Děkuji

Příloha: rar26450_pos-rb-wall.rar (63kB, staženo 28x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3
icon #026613
eLCHa
No v podstatě mně teď v rychlosti napadají 2 možnosti:
Použijete deklaraci s variabilní délkou řetězceDim s1 As String, s2 As Stringatd. a pak někde v kódu budete testovat délku pomocí If Len(s) > 120 Then ElseNebo můžete ponechat fixní deklaraci (s "*") a pak před použitím odstraníte přebytečné mezery např. pomocí Replace.
Záleží na situaci a hlavně na Vás ;)) .

U déky 120 znaků bych asi volil 1. variantu, pokud by byly krátké, tak záleží na tom, co se dělá.citovat
#026614
Alfan
A mohl byste mi začátek té kontroly a pak doplnění do požadované délky napsat do kódu?
Sub subExport2Text()

Dim s1 As String, s2 As String, s3 As String, s4 As String, s5 As String, s6 As String, s7 As String, s8 As String, s9 As String, s10 As String

Dim sPrint As String

'TOTO JE PRVNÍ ŘÁDEK VE VYEXPORTOVANÉM SOUBORU. TEN POTŘEBUJI MÍT V TOTMTO FORMÁTU
sPrint = Range("D1").Value & "," & """" & Range("A1").Value & """" & "," & Range("B1").Value & "," & Range("C1").Value & "," & """" & "HERKUL a.s." & """" & "," & """" & "25004638" & """" & "," & """" & "Praha 1, Rybná 682/14, PSČ 110 01" & """" & vbNewLine

Dim rRow As Range

For Each rRow In Range(Cells(3, 1), Cells(Rows.Count, 10).End(xlUp)).Rows

s1 = """" & rRow.Cells(1).Value & """" & ","

s2 = """" & rRow.Cells(2).Value & """" & ","

s3 = rRow.Cells(3).Value & ","

s4 = """" & rRow.Cells(4).Value & """" & ","

s5 = """" & rRow.Cells(5).Value & """" & ","

s6 = rRow.Cells(6).Value & ","

s7 = Replace(Format(rRow.Cells(7).Value, "0.00"), ",", ".") & ","

s8 = Replace(Format(rRow.Cells(8).Value, "0.00"), ",", ".") & ","

s9 = rRow.Cells(9).Value & ","

s10 = rRow.Cells(10).Value


sPrint = sPrint & s1 & s2 & s3 & s4 & s5 & s6 & s7 & s8 & s9 & s10 & vbNewLine

Next rRow

Set rRow = Nothing



Dim sFile As String


sFile = Application.GetSaveAsFilename(InitialFileName:=Format(Range("D1").Value, "yyyy-mm-dd") & "_" & "Pohledávky ČS regulace", FileFilter:="CSV (textový soubor s oddělovači) (*.csv), *.csv")

If Not sFile = "False" Then

Dim iFile As Byte

iFile = FreeFile

Open sFile For Output As #iFile

Print #iFile, Mid$(sPrint, 1, Len(sPrint) - 2);

Close #iFile



Shell "Notepad.exe" & " " & sFile, 1

Else

MsgBox "Zrušeno uživatelem."

End If

End Sub

Já bych si to pak dopsal
Já musím mít ten vyexportovaný soubor dle požadavku České spořitelny, viz příloha.
Tu hlavičku má vyřešenou a teď řeším ten Seznam pohledávek a maximální délku řetězce. Ta minimální je vždy splněna.
Děkuji
Příloha: rar26614_eska-sporitelna-format-csv-pro-ezp.rar (17kB, staženo 17x)
citovat
icon #026615
eLCHa
Máte tam minimální a maximální délku.
Takže Vy byste měl vlastně řešit jen to minimum, protože maximum ošetříte pomocí Left (pro změnu jiná možnost).
Takže např.:s1 = Left$(rRow.Cells(1).Value, 120)
If Len(s1) < 4 Then
s1 = s1 & Space(4 - Len(s1))
End If
s1 = """" & s1 & """" & ","

Píšu to rovnou sem bez testování, takže pokud tam je nepřesnost, tak se omlouvám a opravte si.

A ještě jen upozorním, že csv je standardní formát v excelu a možná by v tomto případě bylo jednodušší použít vzorce a použít uložit jako. Nicméně dnes už nemám čas.citovat
#026617
Alfan
Zatím jsem doplnil ta pole bez změny formátu, ale tyto dvě s částkou nedokážu zapsat:
s7 = Replace(Format(rRow.Cells(7).Value, "0.00"), ",", ".") & ","

s8 = Replace(Format(rRow.Cells(8).Value, "0.00"), ",", ".") & ","
citovat
icon #026637
eLCHa
A proč to nenechat tak jak to je?
Vždy to bude miniálně 4 znaky dlouhé ("0.00"), takže 1 znak to splňuje. A max 13 znaků - hrozí Vám, že budete posílat částku větší než 10mld. nebo menší než -1mld. ?citovat
#026639
Alfan
Jj, jsem lama 1
Vyzkoušel jsem to a funguje to.
Snad jsem něco nepřehlédl.
Děkujicitovat

Strana:  « předchozí  1 2 3

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje