Crearea de tabele și diagrame în Excel prin intermediul delphi-stack overflow în rusă

Deoarece această întrebare echivă cu cea anterioară în ceea ce privește aptitudinile software cu aplicațiile MSOffice (și, în general, cu obiectele COM), voi încerca să explic ordinea de compilare a codului meu Delphi bazat pe VBA. În cele din urmă, vom amâna răspunsul imediat la întrebarea însăși.

Mai întâi, trebuie să vă imaginați o ierarhie a obiectelor aplicațiilor MS Office. În Excel, este ceva mai simplu decât în ​​Word.

De fapt, totul. Restul nu este necesar să vă amintiți, deoarece Excel / Word însuși este un asistent puternic, permițându-vă să înregistrați toate acțiunile "manual" ale utilizatorului în macro-uri.

Să începem. Prima etapă este plasarea datelor pe foaia dorită. Aici folosim ierarhia dată anterior:

Este remarcabil faptul că majoritatea proprietăților iau forma variantei, adică aproape orice valoare: șiruri de caractere, integer, dublu etc.

Există mai multe modalități de a seta valoarea unei celule: Formula. FormulaR1C1. Valoare. etc. Trebuie să înțelegem diferențele și să utilizăm corespunzător sarcinile necesare. Cel mai adesea folosit este Formula și FormulaR1C1

De asemenea, este util să înțelegeți că fiecare celulă este de fapt un obiect Range. adică un număr arbitrar de celule și de lucru cu mai multe celule din intervalul nu diferă de lucrul cu o celulă primită prin celule.

Apoi, trebuie să adăugați un grafic pe foaie. Nu știm cum să facem acest lucru, și datorită sarcinii unice de a ne aminti unde este acest grafic în ierarhia obiectelor - este risipă.

Accesați meniul "Vizualizare", dați clic pe "Macrouri - Înregistrați macro" și faceți clic pe "OK". Accesați fila "Inserare" și adăugați o histogramă simplă. Apoi am selectat intervalul de date (am luat B1-B5), am schimbat semnăturile (am ales A1-A5), am confirmat modificările și am oprit înregistrarea macro ("View" - "Macros" - "Stop recording"). Acum este lăsată să intre în interiorul macro ("View" - "Macros" - "Macro" - "Editare"). Ar trebui să arate ceva de genul acestui cod VBA:

Și aici avem nevoie de un certificat. pentru că în continuare nu totul este atât de banal. Să ne uităm la linii:

ActiveSheet.Shapes.AddChart.Select - ultima metodă (Selectare) nu ne interesează, deoarece selectează pur și simplu forma adăugată pe foaie. Pentru programul de lucru, selectarea obiectului nu este necesară. Dar AddChart adaugă un obiect Shape. și avem nevoie de un obiect Chart. VBA urmează calea cea mai mică rezistență - utilizează proprietatea Application.ActiveChart (ActiveChart.ChartType = xlColumnClustered, etc.). Dar acest lucru nu funcționează pentru noi, deoarece (repet) atunci când lucrați cu Excel nu este de dorit să folosiți "elemente active", este necesar să lucrați exact cu ceea ce am adăugat. Aflăm că obiectul Shape are o proprietate Chart. asta este ceea ce avem nevoie. În consecință, vom construi toate lucrările ulterioare în acest sens prin traducerea codului VBA în Delphi:

Trebuie notat aici că evităm să apelam un nume de foaie posibil localizat (poate depinde de limbajul Oficiului, utilizatorul îl poate redenumi etc.). Prin urmare, luăm un nume real din proprietatea Sheet.Name.

Asta e tot. Codul complet rezultat:

Articole similare