还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
工与电子表格V i sual LS PExcel在当今世界上的电子表格应用软件产品中占有绝对的统治地位我们经Mi Crosoft Excel常可以看到财会部门或人事部门利用它来处理日常的一些数据虽然说在数据处理方Acces s面会比好些,但它在一些简单的日常事务中象执行一些快速输入或排序时却不那么方便Ex c el简单它是一个常用的事务处理工具这年来,有许多程序是用于将提取数据并将10AutoCAD其输出为报告不论什么原因,它是很必要的近年来所见到的除了极少部分外如10T e r r的输出的机制均为输出为文本文件,或有些yDotso nhttp://www dots oft c om/,ASCI Io是带格式文件这是因为年来,我们没有或使程序与其它应用软件相连10V isualL ISPVBA通并在相互之间传递信息现在可以了.如果你还一直在使用逗号或分界符的文本来区分TAB你的数据,你应该好好地看看这篇文章了也可以提供了必要的函数来接Vi sual LISPVBA触和与任何提供了类型库内部暴露[应用程序接口程序]的应用程序相联系通常它是API或这一类应用程序包括还有象VB VBAMi crosoftOffi c e Access,Excel,Wo rd,Outlook和以及象、等产品.在你的代码中的第一件事就是必Po werPoi nt,MathCAD,Vis i o Act ii x需在中加载它是通过函数来完成的第一件事V isualLISP ActiveX/COM vl-load—com尝试与连接上就是搜索的类型库文件这里使用了作为例Ex c el ExcelEx c el
20009.0子,示例演示了怎样通过不同版本来取得与其类型库相关1Excel联注意用的是可执行文件来身来代替在以往版本中所使用的分离的或Excel2002TL BOLB文件力载类型库F igure1:n Excel97A v1-load-com defun DSX—Type Lib—E xce1/sysdrv tlbsetq sysdrvge t en vs ystemd rive”z,co ndAsetq tlb fi ndfil e st rca t sysdrv\\Pro gramF i Ie s\\Mic r oso ft〃Office\\Office\\E xce
18.olb11b,zs etqtlb findfi Ie str c at sy s d r v\\Program F i les\\Mic r osof tO ffice\\Of fice\\Excel
9.o lbtlb******************************************d efun D S X—E xcel—Ran g e AutoF ita c t iv e—sheet av la x-i nvoke—methodzvlax-get—pr opertya vl a x-get—pr oper tya vl a x—get-p rop erty ac t ive—sh e et UsedRange ACellsC o1umn szA AutoFit A示例将它们合在一起让我们将以上代码片段合在一起看看它们是怎样在中发挥9Au t oCAD作用的该函数将提示你选择一个文件打开并获取指定范围的行和列它将通过Ex celXLS列表形式返回数据,每一行为一个列表,而主列表是将每行列表合在一起就象这样的表达式行列表行列表行列表.八GETXLREGION/defun CA xI a p pxl fi1e ready tlbfileash rangex lis t c o ndDSX—Load—Typ eL ib—Ex ce1Ac oncUsetq xlfile电子表格文?;〃〃〃get filed“Excel quot A ifG$XFI LEG$XFILE”XLS8s etqG$XFILE xlfile*cond》s etq x1a ppDSX—Open—E xcel-E xi st xlf i I eHIDE”setq ashms x l-Get-A ctiveS heetxla p p setqr ang em sx1—Get-Activ eCe1I xlappA;;;从行列开始取行列的数据出来21686se t qx1is t DSX-Exc e1-GetRa n ge Va I u es-B yRows21686a a;;;将每一子列表显示出来看看你拿到了什么样的数据a fo reach mbrxlis tprinc mbrterpr is e tq xlist niI;在关闭后把所有的资源回收!DSX-E xcel-Quit x lapp gc Ex cel开始应用程序进程失败AT princ”\nA初始化类型库失败.T a1ertE xce197p r in cA——---------------------------------------------------------——―----------------------------------44・・**********************************模块.***************************************a,,,D S X—;描述退出并关闭进程;;;参数进程对象;示Excel-Quit;;Ex celapp例D SX—E xcel—Quit xlap p・・.*************************************************************************d efun DSX—Ex ce1—Quit appse s siona con dnotvlax—o bje ct—re leased—p appse s sionAv lax-invoke—m et hodapp s ess◎i onQU IT vlax—release-obj e ct app s e s s i onA A A A■••********************************************************火**大***********大•;;;描D SX—Exce l-Ki11述强迫任何打开的进程关闭;;;参数;;;示例一E xcel none DSX—Excel;;;Kill************************************************************************抬A defun DSX—Exce1—K i1I/e oA whilese t q eovl a x—g et—ob j ec tExc eI.Ap p1i cationDSX-E xce1—Quit eov1ax—r elea se-obj ecteo se t qe onil这样做有时还是不能完全杀除!gc gc;;4set qtlb findfi1estrc a t sysdrv\\Pr ogra mFile s\\Micr osoft Office\\Office\\Excell0oHolb tlbA Aset q11b findfile strc a tsysd rv\\P rogram Files\\M icrosoft Office\\Offic e\\Exce|exetlb onsetq t lb findfilestrcatsysdrv\\Pr og ramFi1es\\Mi crosoft0ffic e\\Office10\\Excelo ex e A11b4下一步是加载类型库并定义内部接口的属性、方法和恒量这些都可以使用任意名称的前缀,A该前缀只是用于对外部应用程序的快速及合理地调用以下的文章内容将把类型库的前缀均置为斜体以方便区分示例演示了一个简单的函数来加载类型库并判断是否成功返回2或T niI:定义类型库接口aFigu re2defu nDSX-Lo ad—TypeLib—Ex cel/11b file tlb veroutc ondnullm sx1—x124HourC locka ifsetq tlbfi1eD SX—T ypeL ib—Excel APr ogns e tq11b vers ubs t rvl—filen ame—b as etlbfi1e6〃cond-A=11bver”9H初始化初始化p rinc\n MicrosoftExc e
12000..a=11bver8prin c”\n Microsoft Excela=vl—filenam e—bz,A初始化ase11bf i Ie ExceLe xepr i nc”\n MicrosoftExce IXP...av lax-import-type-lib rarytlb—filename11bfilea:method s-p r efix msxl-”prop er tie s—prefix msxl—:const an ts—pre fix“msxl-4if msx1-x124H o u rClocksetq outTTs etqo utTOUtA现在你已经在敲的门并且得到“我在家!哪位,有什么事?“这样的回答.你必须温和地Ex cel回答,象“你好!我这里有一个新的文件想存些数据进来!”示例给出了一个简单的函数来3打开并利用缺省的工作簿一般为个工作表来创建一个新的空白工作簿.工作表将Excel31作为缺省的活动工作表该函数返回指向新的进程对象打开vl a—ob ject Ex cel.Figure3带有新的工作簿的;注意可以设为显示或隐藏,Excel;;vdm d eSHOW”HIDE它取决于你希望;;;进程是否可以让用户直接操作访问.Exceldefun DSX-Op en-Excel-New dmo de/app s es s i on创建一个新的电子表格文件叩p ri nc”\n Exce1conchsetq psess ionv I ax-c reat「e—o bjectEx celo App cationvlax—invo ke—m et hodvlax-g et—pro perty appsess ionWork Books Add a〃SH0W if=strcase dmodeAv la—pu t-v isib1e app s ession1via—p ut—visibl ea pp session0A Aappsessio nAa经常用到的除了新建文件外还有打开现有的工作簿,示例演示了怎样作为函数来调用实现该4功能注意文件名参数必须在调用该函数前检查过是存在的你可能也同时注意到了在这个示例中使用了来代替在示例中使用的v1ax—get-or—create—object3vlax-create-objecto这是一个历史学家独特的函数,在程序中可能会经常不太注意到它它会尝试获Vis ualLISP取现有的进程对象,如果找不到或失败,则会尝试新建一个它虽然价值不高,但它却能节省你键入好多的代码如果你只想新建一个进程或只想取得现有的进程,你可以只将其替换为v或打开并在其中打开现Iax—g et—ob jectv1ax-create-ob ject.Figure4E xceI有的文档文件;;;注意〈〉xfile必须为全路径文件名产;;;可以设为显示或隐藏,它取决于dmode SHOWHIDE你希望;;;进程是否可以让用户直接操作访问Ex cel打开d ef unD SX-0p en-E xce1-E xist xfiled mode/a pp sessionprinc\n Excel电子表格文件Jco nd^setq fn findfiIex fileconcUsetq appsess ionv lax—g et—o r—creat e-objec t“E xcel Applica〃tion Av1ax-i nvok e-meth od AV1ax—get—prop erty appsess ionWo rk BooksOpen fnZ,if=strcase dmodeSH0W via—p ut—visible appses sion1^v1a—put—visible appses sion0A不能找到指定的文件AT alertStr cat“\n”xfile一现在你已经打开了工作簿并进入活动的工作表中,你肯定还想进一步取a appsessioaX在表中取点数据,示例在活动的工作表中的单个单元格中获取数据;;;获取行〈〉5relrow和列〈范围内的单元格对象ar e lcoldef u nD SX-E xce1—Get-Cell rng relrowr e1c o1A viax—v a rian t-v aI u eAms Xl-g et—i temms xI—get—c ells rngA vlax—make—varian t r e1roW A;;;返回单元格内容的值vlax-mak e-v a ri ant relcoD^AAAA ow,COlra def unDSX—E xcel-Ge t—C ellV aluer owcol v1ax—v ariant—valuer msxl-get-value-^DSX—Ex ce1—Get—Ce1Imsx1-get—Activ eSheet x1a pprow colaa尽管获取单个单元格的值有时是足够的,但经常情况下你会要求一次性获取一个指定行列范围内的值这里有一些函数用于从多行、多列或单元格数组获取值在活动的工作表中获取一定行列范围中的数据;;;4Figure6-*************************************************************************;;;模块描述返回给定行的单元格值列表;;;DSX—Excel—G et—RowVa1ues;;;参数行号整数,起始列,单元格数量;;;样例DSX—Excel-Ge t-RowValues3120************************************************取得行的前个单元格的值320*************************defunDSX—Excel—Get—Row Value sr ow s tartc o In u mcel1s/ne xtou tsetq next s t art c o I Ar epeat n u mcellssetqout;i fo utAapp endout li s tDSX-Exc e1—Ge t—Cel1Va1ue rownex trow xcoB;list DSX—Exc el-G et—C eII Vaiuero wnext rowxcol A;;产*************************A next1+n e xt a;r epeato u tAA***********************************************;;;模块;;描述返回给定列的单元格值列表;;;D SX—Excel-Get—ColumnValu es;参数列号整数,起始行,单元格数量;;;样例DSX-E xcel-Get-ColumnVa1ues2取得列的前个单元格的值1202“B”20A******************************************************夫****************defun D SX—Excel—Ge t-C o lumnV aluesc ols t artr o w numcel1s ne x tou set qn extstartro wrepeat numcel®setqout ifo utapp en dout listDSX—E xcel-Get—C el1Value next collistDSX—Excel—G et—Cell Value next c oI next1+nex tA;r epeatOU tAA・**********************火***火********************・DSX—E xcel—GetRangeVa**************************A--模块.描述按行顺序获得某一区域的值并返回嵌套的列表;;;参数:起始行,1ues-ByRows;;;起始列,行数,列数;;;样例DSX-Exce1—GetRa ngeValues—ByRo ws11510获取从到区域的值,每一子列表为一行1A5J・・***************************************************夫*********************defun DSX—E xce1—Get RangeVa1ues-B yRowsstartr ow st a rtcolnumrow snu mcols/n extrow r owl s to ut1s tA setq nex trow sta rtro wArepeat num rowssetq row1s tDSX—E xceI—Get-RowV aIues nex t row start co I numc oIsou t1sti foutl s t append out1st lis t rowlst lis trow1s tne xtrow1+next rowA outlst***********************************************************大**************;;;模块;;;描述按列顺序获DSX—Exce1-GetR ang eValu es—ByCol s得某一区域的值并返回嵌套的列表;参数:起始行,起始列,行数,列数;;;样例D获取从到区域的值,SX-Exc eI—GetRangeValu es-ByCol s115101A5J・・*************************************每一子列表为一列A************************************d ef unDSX-E xcel—GetRan geV alues—ByCols star trows tartc oI numrows numco Is/nextrow next col col1s toutlsts etqnextcol sta rtcolrepe at numcolss etq collstDSX—Excel—Ge t—C olumnValuesn extcolstartro wnumr ows outl s tif》outlstappen doutls t listco11stlistco11st nextco11+nextco1Aout1StA好了!现在可以从中攫取数据了,但既然可以取数据,也应该可以写入数据才对,下面Excel就介绍怎样将值填入到单元格中示例演示了怎样将列表值输入到一行或一列的单元格中7这可以很方便地让你将图形中的数据转到中这样可让你轻松地将图形中的内容输出到E xcel报告中让你的老板感受你惊人的天才示例将数据输入到工作表中7・4A**********************************************;;;模块;描述将列***************************a DSX—Exc e1—P ut-Column List;;表写到工作表指定列中的指定起始行;;参数Star tcolstartrow;I ist,st artrow,star样例“将数据分别输出到单元tco1;;;DSX—Exc el-Put—ColumnLis t‘A B”C12格1,B中2,B3,B・*************************************************************************•A defunDSX-Exc eI—Put-Co1um nL ist1st Startrowsta rtcol fo rea chitm1s tmsxl-pu t—v a1ue-A DSX—Excel—Ge t—C el1ran gestar trow startc oli tmAA setq sta rtrow1+start row;re peat;模块;;描述将列表写到工作表指定行中的指;;DSX-Excel-Put-RowLis t;startrow定起始列;;;参数;;示例start col list,startrow,sta rtco1;:DSX-Excel-P ut-RowLi将数据分别输出到单元格中stCA B“”C211,B1,C1,D・・・*************************************************************************ade fun DSX—E xcel-P ut-R ow Lis t1st star trowsta rtcolfor eachi tm1s tms xl—pu t—va1u eDSX—Ex cel—Get-Cell rangestart rows tartcolitma总setq startco11+s tartcola;re peaU单独的数据将不会给你留下多深的印象就是你输入“一个老板”也是一样的•你必须增加一些颜色给它,还有就是加些格式让它漂亮起来!示例给出了一些怎样一次性添加颜色8给单元格或整行或整列,注意的颜色调色板和是不一样的你必须无EXCEL Aut oCAD能为力钻研的在线帮助并找到你需要的颜色索引.示例更改单元格的Excel8:Ex cel属性颜色・A*************************************************************************;;;模块;;;描述A DSX—Excel—P ut-CellCol or为指定单元格填入颜色;;;参数;;;示例row,column,co lorintege rDSX—Exce1将颜色#填入到单元格—Pu t-CellC1or111414・・・1,A*************************************************************************de fun DSX—Excel-Put—Cel1Color row col intcol/rngsetq rngDS X—Ex ce1-Get—Cell msxl—ge t—ActiveS heetxlapprowco1msx l-put-coIo rindexmsxl-get—inte rior rngi ntcoI4■■*************************************************************************模块:颜色;;;参数:s tartrow,startco1,num-cols,colo ri nteger;;;示;;描述为一行单元格填入DSX-Exce l-Pu t—Row CellsColor;例DSX-Exc el-Put—R owCellsColo r11514)从行=
1、列=i开始连接列使用颜色5#14・・・火表****************************************************a adefun DSX-E xce1-Put—Ro wCellsColor startrowst arteo1co1s intcoI/next setqnextsta rt colX-Erepeat colsADSXC e1—Put—Cel1Color startrownext intcolsetq next1+next・・・***************************************A**********************************总.--模块.DSX—E xce1描述为一列单元格填入颜色;;;参数—Put—ColumnC eIIsC olor;;;start示例row,startcoI,num—r ows,co1orin teger DSX-Excel从行=、列连接行使用颜色#—Put-Col umnCellsColor115141=
1514.…************************************************************************AAde fun DSX—Exc el-Put—C oumnCe HsCo1or startrowstartco1rowsint col/n extsetqne xtstartro w repeatrowsDSX—Excel-Put-Cel1Color nextstartcol xtintc oI Asetqnext1+ne・・・******************************************************火**************丈***模块;;描述为选中的DSX-Excel-RangeAutoFit;范围的实行自动调整宽度;;;参数;;;示例a ctive—sheet object;;;DSX-Excel-Ran geAutoF it myxlWS A*******************************。
个人认证
优秀文档
获得点赞 0