Generarea rapoartelor de la VFP la Excel. Pat pentru copii.
Valentin Yarychevsky
Acest patut a crescut de la exemple și alte informații din ecouri, plus experiența personală dobândită. Este destul de convenabil pentru mine să lucrez cu ea. Uneori am spălat această foaie ieftină pentru cei care pun întrebări în ecou. și simt că este greu pentru o persoană :-). de la ei vin recunostinta. Așa că m-am gândit: este bine dacă această foaie de înșelător apare pe site-ul dvs., facilitând acumularea de experiență de către toți veniții.
Acțiuni generale.
RELEASE ole1, ole2
Deschidere când creați un document nou
* Modul în care nu dispare după lansare:
ole1 = CreateObject ("Excel.Application")
ole1.WorkBooks.add
ole2 = ole1.Aplicație
* Modul în care foaia de calcul Excel nu mai dispare după ieșirea:
ole1 = GetObject ("", "Excel.Sheet")
ole2 = ole1.Aplicație
Deschidere pentru un document existent (Excel dispare după ce a ieșit)
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.Aplicație
ole2.Visible = .T.
- La începutul lucrării, imediat după crearea obiectului
ole2.WindowState = xlMinimizat minimiza fereastra
ole2.ScreenUpdating = .F. Nu afișați modificări pe ecran - La sfârșitul lucrării, înainte de a fi afișat raportul
ole2.ScreenUpdating = .T.
ole2.WindowState = xlMaximizată
Stocarea rezultatului într-un fișier
ole2.ActiveWorkBook.Save în același fișier
ole2.ActiveWorkBook.SaveAs (fil_excel) la un nou fișier
Dimensiunile ferestrei
#DEFINE xlMinimized -4140
#DEFINE xlMaximizată -4137
#DEFINE xlNormal -4143
ole2.WindowState = xlMinimizat colaps fereastră
ole2.WindowState = xlNormal fereastra normală
ole2.WindowState = xlMaximizată fereastra maximă
miscelaneu
ole2.DisplayAlerts = .F. Eliminați interogarea "Salvați fișierul?" (înainte de a ieși)
ole2.DisplayFormulaBar = .F. Bara de formulă clară
ole2.Version Returnează versiunea Excel
Rularea macro-ului
Ole2.Run ("EXPORT", m.file) "Export" este numele macro-ului, m.file este parametrul
Ștergerea unei macrocomenzi
registrele de lucru ("book1"). VBProject.VBComponents (5) .CodeModule.DeleteLines 2.1
Elimină numărul de linie 2 de la modulul 5
Lucrul cu celule
dimensiuni
.RowHeight = 2 linia înălțime (2 - garnitură îngustă, 15-20 - normală)
.Lățimea coloanei = 5 lățimea coloanei (aproximativ în simbolurile Courier, 9)
Stilul de legătură
Ole2.ReferenceStyle = Valoare
#DEFINE xlA1 1
#DEFINE xlR1C1 -4150
Selectați celule
Ole2.Cells (2,4) .Selectați
Ole2.Range (ole2.Cells (2,4), ole2.Cells (3,6))
Decrementul scribbling-ului cu o singură celulă
Cu Ole2.Cells (2.4)
.selecta
....
ENDWITH
Reducerea scribbling-ului cu un interval
Ole2.Range (ole2.Cells (2,4), ole2.Cells (3,6))
Cu selecție
... ..
ENDWITH
Diverse atunci când lucrați cu celule sau o gamă
.MergeCells = .T. unificarea unei celule
.Valoare = zag3_r Alocarea valorii (posibil fără Valoarea: ole2.Cells (2,3) = "aa")
.WrapText = .T. textul este transferat automat de către cuvintele din interiorul barei
.NumberFormat = "@" nu un format digital (număr sub formă de text)
.NumberFormat = "0.00" numeric, întotdeauna cu 2 zecimale după punctul zecimal
.interior.colorindex = număr culoarea fundalului este diferită (38,42, ...)
Aliniați textul în celule
.Aliniament orizontal = număr orizontal
.VerticalAlignment = număr vertical
#DEFINE xlLeft 1 stânga aliniere (sus)
#DEFINE xlRightg 4 dreapta orizontal
#DEFINE xlCenterg 3 pentru centrarea orizontală
#DEFINE xlCenterv 2 pentru centrul vertical
Alinierea tuturor rândurilor (sau a coloanelor selectate) la cea mai mare (largă) se efectuează printr-o comandă după umplere
Potrivire automată.
Fonturi, Fonturi
.Font.Name = cfg_fntcou Numele fontului
.Font.Size = 8 dimensiunea fontului
.Font.Bold = .T. Caractere îngroșate (.F - nu sunt bold)
.Font.Italic = .T. cursiv
.Font.Underline = număr subliniați întreaga celulă
#DEFINE xlUnderlineStyleDouble -4119
#DEFINE xlUnderlineStyleDoubleAccounting 5
#DEFINE xlUnderlineStyleNone -4142
#DEFINE xlUnderlineStyleSingle 2
#DEFINE xlUnderlineStyleSingleAccounting 4
Notă. Uneori, atunci când un text în limba rusă (mai ales într-un subsol) cu font Times apare un spațiu în interiorul cuvântului. Acest decalaj este eliminat utilizând un alt font (de exemplu, Arial).
Introducerea unei imagini într-o celulă
Interval ("B6") Selectați
ActiveSheet.Pictures.Insert ("C: \ VFP \ EL \ vaz_logo.gif").
Cum se adaugă o pauză de pagină în Excel din VFP
Ole2.Range ("A15") Selectați
Ole1.ActiveWindow.SelectedSheets.HPageBreaks.Add (ole2.ActiveCell)
unde ole2 și ole1 sunt obiectele de pagină și Excel.
Pot fi într-o singură linie și fără a mișca cursorul
Ole2.HPageBreaks.Add (ole2.Range ("A15"))
Cum să găsiți coordonatele unei celule
Selection.Address, Selection.Row, Selection.Column,
Selecție.Rând.Count, Selecție.Column1.Count
- Prima metodă (nu a funcționat):
ole2.ActiveCell.Formula = '= SUM (D7: D20)' - A doua metodă:
.FormulaR1C1 = "=<формула>"
exemplu
ole2.Cells (5,6) .Selectați
r = "= RC [+3]"
PENTRU i = 2 TO tlmmk_r
r = r + "+ RC [" + ALLT (STR (i * 3.6)
ENDFOR
ole2.ActiveCell.FormulaR1C1 = r scrie formula
exemplu
FOR j = 1 până la 5 coloane
PENTRU i = 1 la 3 linii
Ole2. Celule [i, j] .value = I * 10 + j
ENDFOR
Cu celulele ole2 [4, j]
.selecta
.FormulaR1C1 = "= SUM (R [-3] C: R [1] C)"
ENDWITH
ENDFOR
Linii pe limite de celule sau de limite
*
#DEFINE xlNone -4142 (HFFFFEFD2) fără linie
#DEFINE xlAutomatic -4105 (HFFFFEFF7).
#DEFINE xlDouble -4119 (HFFFFEFE9) dublu
#DEFINE xlMedium -4138 mediu
#DEFINE xlContinuous 1 normal
* (i)
#DEFINE xlDiagonalDown 5 înclinați linia în jos (din partea stângă sus)
#DEFINE xlDiagonalUp 6 înclinați linia în sus (din partea de jos din stânga)
#DEFINE xlEdgeLeft 7 partea stângă a celulei
#DEFINE xlEdgeTop 8 partea superioară a celulei
#DEFINE xlEdgeBottom 9 partea de jos a celulei
#DEFINE xlEdgeRight 10 din partea dreaptă a celulei
11 - în cadrul liniilor verticale ale celulelor
12 - În gama de celule, linii orizontale
* .Wight
#DEFINE xlThin 2 subțire linie
#DEFINE xlThick 4 grosime
Procedura de facilitare a muncii cu linii
PROCEDURE frontierele de celule linii celulare
PARAMETRII p1_cb, p2_cb, p3_cb, p4_cb
1 - începe, 2 - i con, 3 - stil, 4 - greutate
PENTRU i_cb = p1_cb TO p2_cb
Cu .comenzi (i_cb)
.LineStyle = p3_cb
DACĂ p3_cb <> xlNone
.Greutate = p4_cb
.ColorIndex = xlAutomatic
ENDIF
ENDWITH
ENDFOR
Apelarea procedurii (exemplu):
DO cu 7,12, xlnone, xlthin
Îndepărtarea rândurilor și a coloanelor în timpul derulării.
ole2.Cells (5,3) .Selectați
ole2.ActiveWindow.FreezePanes = .T.
4 linii vor fi înghețate din partea de sus a celulei selectate și 2 coloane în partea stângă a celulei selectate. Aceasta este, celula selectată este o celulă de colț care nu intră în îngheț.
Print.
Cu ole2.ActiveSheet.PageSetup
.printGridLines = .F. nu imprimați linii de rețea
.Orientare = 2 2 - album, 1 - portret
.PaperSize = 9
.PrintTitleRows = "$ 1: $ 5" c-linii (oricare, dar fără pauză)
.PrintTitleColumns = "$ A: $ F" prin coloane (fără pauză)
.RightHeader = "P" Imprimați numărul foii în subsolul din dreapta
* p. [Page] +1 imprimați din 2 coli (sau din ceea ce doriți
* .RightHeader = "Стр P de la N " Pagina și toate paginile
* .RightHeader = "P" + CHR (10) + "D" pagina și linia de mai jos
.TopMargin = 0,0 câmp de peste 0,5
.BottomMargin = 0,0 câmpul de jos
.HeaderMargin = 0,0 antetul de sus
.FooterMargin = 0,0 subsol de dedesubt
.RightMargin = 0,5 câmpul din dreapta
.LeftMargin = 0.5 câmpul din stânga
.Ordin = 2 ordinea foilor pentru mai multe. benzile: 1 - I, 2 - Z
* .CenterHorizontal = .T. alinierea foii de imprimare pe orizontală
* .CenterVertical = .T. Aliniere verticală
* .FitToPagesWide = 1 Raport de comprimare cu o lățime de până la 1 coli
* .FitToPagesTail = .F. nu comprimați raportul de numărare a paginilor
* .Zoom = .N. acest lucru plus două. linii - pentru compresie pe o coală de lățime
EndWith ActiveSheet.HPageBreaks.Count Număr de pagini tipărite