< návrat zpět

MS Excel


Téma: SAP report writer report do Excelu rss

Zaslal/a icon 10.7.2015 22:01

Ahoj,

report v SAP report writeri, pokiaľ sa zobrazí v Exceli v okne SAP - po vykopírovaní do Excelu metódou COPY/PASTE (mimo SAP) sa zmení paleta farieb a to tak, že brutálne. Toto je známy problém spôsobený tým, ako je to v SAPe naprogramované.
Uvedené sa dá obísť tým, že sa súbor uloží v SAP/Excel okne ako .ods a v Exceli (mimo SAP) sa potom otvorí tento .ods súbor, ktorý tentokrát zobrazí pôvodnú paletu farieb. Na toto som si nahral jednoriadkové makro:Sub SapOds()
ActiveWorkbook.SaveAs Filename:="C:\Users\al057494\Desktop\pom.ods", FileFormat:=xlOpenDocumentSpreadsheet
End Sub
V podstate funguje bez väčších problémov až na jeden detail: Ukladám vždy do jedného a toho samého pomocného súboru na ploche, takže súbor existuje a pri SaveAs pochopiteľne vyskočí hláška s upozornením, že súbor existuje a treba potvrdiť jeho prepísanie. Tú hlášku by som rád eliminoval, ale tradičné Application.DisplayAlerts = FALSE / TRUE skončí chybou. Makro spúšťam zo Sapieho Excelu (z Excelu v SAPom okne), uložené je v Personal.xls. Takže, milí sapáci, vedel by niekto, čo s tým? Predpokladám, že to bude pravdepodobne spôsobené potrebou nastavenia referencií, alebo použitím pozdnej väzby, ale trochu tápem a spolieham na to, že možno niekto pozná jednoduché riešenie..

Zaslat odpověď >

icon #025859
avatar
Nakoniec som na to prišiel - tipoval som správne na nutnosť late binding; nakoľko by sa to mohlo niekomu hodiť, tak tu je moje riešenie:Sub SapOds()
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\al057494\Desktop\pom.ods", FileFormat:=xlOpenDocumentSpreadsheet
xl.Application.DisplayAlerts = True
Set xl = Nothing
End Sub
Má to ešte jednu chybku na kráse, a to je, že neviem prísť na to, ako programovo zabezpečiť úplný rozpad výkazu (sapia skratka Shift+F9) pred jeho uložením do .ods. To zatiaľ robím ručne, pokiaľ má niekto šikovný skriptík na toto, tak sem s ním. 1citovat
icon #025870
eLCHa
Mno - doma SAP nemám, ale ty reporty se mi otevírají v kontejneru, takže po zobrazení VBE byste je tam měl vidět normálně vidět. Mělo by to teda jít bez CreateObject. Té hlášky se můžete ještě zbavit i tím, že ten starý soubor prostě smažete (Kill)

Co se týká vady na kráse
Já jsem si vyřídil oprávnění na Report Painting, takže si vytvořím výkaz, přesně jak potřebuji. Pokud Vám ho nedají, kontaktujte operátora SAPu ve firmě, ať Vám udělá kopii toho výkazu s plným rozbalením (musí se nastavit v definici výkazu, takže pokud ten výkaz není vytvořen pouze pro Vás, bude kopie lepší). Ikdyž si nejsem jistý, jestli Vámm to projde, když budete argumentovat, že se Vám nechce mačkat Shift+F9 ;)))

Je samozřejmě možnost ovládat SAP přímo z excelu, ale to je na dlouho. Možná bych proto zkusil přesunout focus na okno SAP a vyslat kombinaci SHIFT+F9 (jak bych to normálně nedoporučil) - focus musí být na okně SAP, ne na reportu v excelu.citovat
icon #025872
eLCHa
Mno - takže u mně je ten report v SAPu např. takto:
img

A pak si ho vyhledám: Dim wSAPBook As Workbook
Dim wBook As Workbook
For Each wBook In Workbooks
If (InStr(1, wBook.Name, "List v ReportWriter") <> 0) And (Left(wBook.Sheets(1).Name, 10) = "Výsledovka") Then
Set wSAPBook = wBook
Exit For
End If
Next wBook
Set wBook = Nothing

Pak mám With wExcelBook.Sheets(1)

wSAPBook.Sheets(1).Cells.Copy
.Range("A1").PasteSpecial Paste:=xlPasteValues
Set wSAPBook = Nothing
a dál už si s tím (barvičky) poradíte sám ;)
Příloha: jpg25872_rw.jpg (30kB, staženo 31x)
25872_rw.jpg
citovat
icon #025873
eLCHa
A k tomu druhému - já vyzkoušel poslat do SAP příkaz SHIFT+F7 pomocíSub test()
AppActivate "HV vč IFRS - pl/sk (04_HVTOTAL)"
Application.SendKeys Keys:="+{F7}"
End Sub
a prošlo to, takže by to mohlo stačit ;)))

Ten text za AppActivate je Caption okna SAP, ale to jste asi pochopil ;))

edit:
tak změna - prošlo to, pokud byl výkaz zobrazen standardně v SAP, pokud byl v Excelu:Sub test()
AppActivate "HV vč IFRS - pl/sk (04_HVTOTAL)"
Application.SendKeys Keys:="^{TAB}+{F7}"
End Sub

Ale vypíná mi to Num lock - něco nechám taky na Vás ;))citovat
icon #025874
avatar
Dnes mám dovču, vyskúšam zajtra, ďakujem.citovat
icon #025926
avatar
@ eLCHa
ešte som sa k tomu nedostal, bohužiaľ. Ozvem sa, akonáhle to bude možné 7citovat

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