parte Excel faq i cationi
Excel FAQ Partea I: Excel.Application
Cum să încărcați o nouă instanță de Excel, sau conectați la o instanță care rulează Excel.exe? Cum de a deconecta de la Excel și închideți copia?
Pentru a determina noua instanță a Excel.Application dacă rulează sau se alătură, proprietate deja rulează utilizarea TExcelApplication.ConnectKind. În mod implicit, această proprietate este ckRunningOrNew (o constantă definită în unitatea de OleServer). Cu toate acestea, se recomandă, în cazul în care nu cu privire la necesitatea specială, executați întotdeauna o nouă instanță a Excel.Application pentru a evita conflictele cu o instanță de funcționare a Excel.Application devreme. TExcelApplication.AutoQuit în proprietate implicite constructor la False (doar modulul ExcelXP la True) - acest lucru înseamnă că, dacă doriți să vă deconectați atunci când munca Excel complet (aproape), atunci ai nevoie pentru a apela metoda TExcelApplication.Quit sau setați proprietatea TExcelApplication.AutoQuit egală Adevărat.
Așa cum se spune în „Cele mai bune practici pentru crearea Range Properties“. „Codul folosește selecție generat de înregistrare macro Excel, este adesea utilizat pentru a detecta un obiect sau o metodă care va funcționa. Este o idee bună, cu excepția faptului că macro înregistrat nu este optimizat pentru utilizator. De obicei, Excel, atunci când înregistrați un macro folosește selecție și de a schimba selecția obiectului în timpul înregistrării Ce o sarcină. " Ie Utilizați selecția este opțională și nu este recomandat pentru dezvoltator. Citat din același loc: „În practică, apelați Selectați metoda obiectului numai dacă nu utilizați Selectați metoda atunci când determinată pentru a schimba elementul selectat de utilizator, pur și simplu pentru că este convenabil pentru tine, ca un dezvoltator dacă setați proprietățile obiectului Range, aveți întotdeauna .. alternativă. refuzul Select metoda nu numai ca face codul mai rapid. dar utilizatorii vă rugăm de program (l face mai fericit utilizatorii dvs.)“. Acest subiect a atins aici.
De ce să nu folosească Excel.Application.Range, și ar trebui să ExcelWorksheet.Range?
Utilizarea ExcelApplication.Range vă permite să lucrați numai pe foaia registrul de lucru activ activă, dacă deschideți în timp ce lucrați o altă carte sau de a face alte foaie activă în registrul de lucru (de exemplu, adăugați o pagină nouă), datele vor fi făcute la acesta în foaia activă în prezent. Pentru a evita care se încadrează într-o situație ciudată, folosiți întotdeauna obiectul ExcelWorksheet obiect Range. Acest lucru va proteja nu numai codul, introducând „în cazul în care Dumnezeu va“, dar se va scrie date pe mai multe pagini și chiar cărți, fără a schimba ActiveSheet și ActiveCell.
Dacă Excel se execută, iar utilizatorul este în Excel, în același timp, orice acțiuni care încearcă să se conecteze la Excel și să contribuie date la aceasta, determinând eroarea. Cum să-l evite?
Atunci când se lucrează cu aplicații avansate Excel, acesta poate fi ocupat, în cazul în care utilizatorul editează valoarea într-o celulă, sau a deschis sau o casetă de dialog modal (de exemplu, „Open“), în acest moment. Pentru a evita această situație, începe întotdeauna o nouă copie a Excel.Application și a instala proprietate interactivă la False, acesta va interzice utilizatorului să facă ceva în Excel'e sau închide instanța de rulare a Excel.Application: