Generálása jelentések VFP excel, Valentin yarychevsky (Mikhail Drozdov

Generálása jelentések VFP Excel. Kiságy.

Valentin Yarychevsky

Ez kiságy nőtt ki a tanulmányok és egyéb információkat ekhi, valamint a megszerzése személyes tapasztalat. Dolgozom, hogy elég kényelmes. Néha mylyu ezt puskát azok számára, akik kérdéseket feltenni a visszhang. és úgy érzem, hogy egy személy nehezen :-). Jönnek a hála. Ezért úgy gondoltam, jó, ha ezt a puskát fog megjelenni az oldalon, így könnyebben tapasztalatszerzés mindenki számára.

Közös akciók.

RELEASE OLE1, OLE2

Megnyitása, amikor egy új dokumentum létrehozására

* Egy út, amely nem tűnik el a kibocsátás után:
OLE1 = CreateObject ( "Excel.Application")
ole1.WorkBooks.add
OLE2 = ole1.Application
* Módszer, amikor az Excel lap eltűnik után:
OLE1 = GetObject ( "", "Excel.Sheet")
OLE2 = ole1.Application

Nyitva meglévő dokumentum (Excel után eltűnik)
fil_excel = cfg_tgdef + "Rechnung _" + nominv_r + "XLS"
filnam_r = "Rechnung _" + nominv_r + "XLS"
OLE1 = GetObject (fil_excel)
ole1.Application.Windows (filnam_r) .Activate
OLE2 = ole1.Application
ole2.Visible = .T.

Ahhoz, hogy gyorsítsák fel az automatikus működés kell tenni
  • Az elején, közvetlenül létrehozása után a tárgy
    ole2.WindowState = xlMinimized lekicsinyíted
    ole2.ScreenUpdating = .F. nem jeleníti meg a változásokat a képernyőn
  • Végén a munkát, mielőtt az átvilágítási jelentés
    ole2.ScreenUpdating = .T.
    ole2.WindowState = xlMaximized

Tárolása az eredményt fájlba
ole2.ActiveWorkBook.Save ugyanabban a fájlban
ole2.ActiveWorkBook.SaveAs (fil_excel) egy új fájlt

ablakméretek
#define xlMinimized -4140
#define xlMaximized -4137
#define xlNormal -4143
ole2.WindowState = xlMinimized lekicsinyíted
ole2.WindowState = xlNormal normál ablakban
ole2.WindowState = xlMaximized maximális ablakban

vegyes cikkek
ole2.DisplayAlerts = .F. Távolítsuk kérelem „Mentsd a fájlt?” (Mielőtt hozam)
ole2.DisplayFormulaBar = .F. Eltávolítás panel képletek
ole2.Version Visszaadja Excel verzió


Futás a makró
Ole2.Run ( "Export", m.file) „Export” - a makró nevét, m.file- lehetőség

Törlése makró
munkafüzetek ( "Book1"). .CodeModule.DeleteLines 2,1 VBProject.VBComponents (5)
Eltávolítja a sor számát 2 a modul 5-ös szám

A cellák

méretek
.RowHeight = 2 line-height (2 - keskeny, 15-20 - normál)
.ColumnWidth = 5 oszlop szélessége (körülbelül Courier szimbólumok, 9)

stílus linkek
Ole2.ReferenceStyle = érték
#define xlA1 1
#define xlR1C1 -4150

Select sejtek
Ole2.Cells (2,4) lehetőségre.Válassza
Ole2.Range (ole2.Cells (2,4), ole2.Cells (3,6)). Jelölje

Csökkentése firkálással egy cella
AZ Ole2.Cells (2,4)
.választ
....
ENDWITH

Csökkenti irkafirka egy sor
Ole2.Range (ole2.Cells (2,4), ole2.Cells (3,6)). Jelölje
válogató
... ..
ENDWITH

Egyéb dolgozik egy cella vagy tartomány
.MergeCells = .T. egyesítés sejteket
.Value = zag3_r hozzárendel egy értéket (ez lehetséges anélkül .Value: ole2.Cells (2,3) = "AA")
.WrapText = .T. szöveg pakolások megfelelően automatikusan a Cell #
.NumberFormat = "@" nem digitális formátumban (a szám formájában szöveg)
.NumberFormat = "0,00" numerikus, 2 mindig tíz tizedessel
.interior.colorindex = szám A háttér színe a többi (38,42, ...)

Szövegigazítás sejtekben
.HorizontalAligment = szám vízszintesen
.VerticalAligment = szám függőleges
#define xlLeft 1 igazítsa a bal oldali (felső)
#define xlRightg 4 Jobb Vízszintes
#define xlCenterg 3 a vízszintesen középre
#define xlCenterv 2 függőlegesen középre
Összehangolása (vagy kiválasztott) sorok (vagy oszlopok) a magas (széles) tart egy parancsot a töltés után
Automatikus illesztés.

Betűtípusok Betűtípusok
.Font.Name = cfg_fntcou A betűtípus nevét
.Font.Size = 8 betűméret
.Font.Bold = .T. Bold (.F -. Nem zsíros)
.Font.Italic = .T. dőlt betű
.Font.Underline = szám hangsúlyozzák a sejt (szerint) vagy szimbólumok
#define xlUnderlineStyleDouble -4119
#define xlUnderlineStyleDoubleAccounting 5
#define xlUnderlineStyleNone -4142
#define xlUnderlineStyleSingle 2
#define xlUnderlineStyleSingleAccounting 4
Megjegyzés. Előfordul, hogy a szöveg az orosz (különösen a lábléc) a Fonte Times megjelenik egy szóközt egy szón belül. Ez a rés eltávolítjuk más betűtípus (például Arial).

Beillesztés mintát a sejtben
Tartomány ( "B6"). Jelölje
ActiveSheet.Pictures.Insert ( "C: \ VFP \ EL \ vaz_logo.gif") Válassza.

Hogyan adjunk egy oldalt szünetet Excel'e származó VFP
Ole2.Range ( "A15"). Jelölje
Ole1.ActiveWindow.SelectedSheets.HPageBreaks.Add (ole2.ActiveCell)
ahol OLE2 és OLE1 - az oldalak és az Excel tárgyakat.
Ez lehet egy sorban, és a kurzor mozgatása nélkül
Ole2.HPageBreaks.Add (ole2.Range ( "A15"))


Hogyan találom meg a koordinátákat a sejt
Selection.Address, Selection.Row, Selection.Column,
Selection.Rows.Count, Selection.Column1.Count

képlet segítségével
  • 1. út (nem működik):
    ole2.ActiveCell.Formula = '= SUM (D7: D20)'
  • 2. módja:
    .FormulaR1C1 = „=<формула>"
    példa
    ole2.Cells (5,6) lehetőségre.Válassza
    r = "= RC [+3]"
    I = 2-től tlmmk_r
    r = r + "+ RC [" + Allt (STR (i * 3,6)) + "]"
    ENDFOR
    ole2.ActiveCell.FormulaR1C1 = r írja a képlet
    példa
    J = 1-től 5 oszlopok
    I = 1-től 3 vonalak
    Ole2.cells [i, j] .value = I * 10 + j
    ENDFOR
    AZ ole2.cells [4, j]
    .választ
    .FormulaR1C1 = "= SUM (R [-3] C: R [-1] C)"
    ENDWITH
    ENDFOR

A vonalak a határon egy cella vagy tartomány
* .linestyle
#define xlNone -4142 (HFFFFEFD2) nélkül vonal
#define xlAutomatic -4105 (HFFFFEFF7).
#define xlDouble -4119 (HFFFFEFE9) kettős
#define xlMedium -4138 közepes
#define xlContinuous 1 normális

* .borders (i)
#define xlDiagonalDown 5 lefelé irányuló dőlés vonal (a bal felső)
#define xlDiagonalUp 6 Vonal tilt felfelé (a bal alsó)
#define xlEdgeLeft 7 A bal oldalon a cella
#define xlEdgeTop 8 A felső oldalon a cella
#define xlEdgeBottom 9 az alsó a cella
#define xlEdgeRight 10 A jobb oldalon a cella
11 - tartományon belül a függőleges vonalak a sejtek
12 - tartományon belül a vízszintes vonal a sejtek

* .Weight
#define xlThin 2 vékony vonal
#define xlThick 4 vastag vonal

Az eljárás munkájának megkönnyítése, vonalak
ELJÁRÁS cellborders sejtvonalak
PARAMÉTEREK p1_cb, p2_cb, p3_cb, p4_cb
1 - i nach 2 - i con 3 - stílusú, 4 - súlya
A i_cb = p1_cb TO p2_cb
AZ .Borders (i_cb)
.Vonalstílus = p3_cb
IF p3_cb <> xlNone
.Súly = p4_cb
.ColorIndex = xlAutomatic
ENDIF
ENDWITH
ENDFOR
Az eljárás kezdeményezése (példa):
DO cellborders WITH 7,12, xlnone, xlthin

Fagyasztása sorok és oszlopok görgetés esetén.
ole2.Cells (5,3) lehetőségre.Válassza
ole2.ActiveWindow.FreezePanes = .T.
4, a felső sorban a kiválasztott cella 2 és bármely oszlop a bal oldalon a kiválasztott cella lenne fagyasztani. Azaz, a kijelölt cella - szögletes, amely nem szerepel a fagyasztva.

Print.
a ole2.ActiveSheet.PageSetup
.printGridLines = .F. ne nyomtasson a rácsvonalak
.Orientation = 2 2 - album 1 - portré
.PaperSize = 9
.PrintTitleRows = "$ 1: $ 5" ckvoznye vonal (önkényes, de szakadás nélkül)
.PrintTitleColumns = "$ A: $ F" át az oszlopon (törés nélkül)
.RightHeader = "P" Példányszám lap jobb footer
* P. [Oldal] +1 pecsét 2 lap (vagy akar a
* .RightHeader = „Oldal P N " Oldalt, és minden oldalt
* .RightHeader = "P" + CHR (10) + "D" Oldal és a vonal alatti dátum
.TopMargin = 0.0 felső margó 0,5
.BottomMargin = 0.0 az alábbi szövegdobozt
.HeaderMargin = 0.0 Fejes top
.FooterMargin = 0.0 Lábjegyzet alsó
.RightMargin = 0,5 jobb oldali mezőt
.LeftMargin = 0,5 mezőbe balra
.Order = 2 érdekében lap több. sávok: 1 - és 2 - a Z
* .CenterHorizontally = .T. központosító nyomtatott lapot vízszintesen
* .CenterVertically = .T. függőleges igazítás
* .FitToPagesWide = 1 kompressziós jelentés lap szélessége legfeljebb 1
* .FitToPagesTail = .F. nem tömöríti a jelentést az oldalak száma
* .Zoom = .N. Ez plusz két dok. karakterlánc - tömörítése az 1 lemez a szélessége
EndWith ActiveSheet.HPageBreaks.Count A nyomtatási oldalak számát