VFP ·R¥ÎªÌªÀ°Ï ­º­¶ VFP ·R¥ÎªÌªÀ°Ï
¥»°Q½×°Ï¬° Visual Foxpro ·R¥ÎªÌ¸gÅç¥æ¬yªº¦a¤è, ½Ð¦h¦h§Q¥Î"·j´M"ªº¥\¯à, ¥ý¬d¬Ý¬Ý¦³µL«e¨Ò¥i´`, ¦pªGÁÙ¦³¤£À´ªº¦Aµo°Ý. ³¡¥÷¥DÃD¦³ªþ¥[ÀÉ®×, ¶·¥ýµù¥U¦¨¬°ªÀ°Ï©~¥Á¤~¥i¥H¤U¸ü.
 
 ±`¨£°ÝÃD±`¨£°ÝÃD   ·j´M·j´M   ·|­û¦Cªí·|­û¦Cªí   ·|­û¸s²Õ·|­û¸s²Õ   ·|­ûµù¥U·|­ûµù¥U 
 ­Ó¤H¸ê®Æ­Ó¤H¸ê®Æ   µn¤JÀˬd±zªº¨p¤H°T®§µn¤JÀˬd±zªº¨p¤H°T®§   µn¤Jµn¤J

VFP & EXCEL (刦K)
«e©¹­¶­± 1, 2  ¤U¤@­¶
 
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï
¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD  
µoªí¤H ¤º®e
Ruey



µù¥U®É¶¡: 2003-03-12
¤å³¹: 1698
¨Ó¦Û: tunglo

²Ä 1 ¼Ó

µoªíµoªí©ó: ¬P´Á¤é ¤­¤ë 04, 2003 3:17 pm    ¤å³¹¥DÃD: VFP & EXCEL (Âà¶K) ¤Þ¨¥¦^ÂÐ

VFP¤¤§Q¥ÎEXCEL»s§@¸ê®Æ³øªí
¡@¡@µ§ªÌ¦b¤u§@¤¤Á`µ²¥X¤F¦bVFP¹B¦æ¤¤§Q¥ÎExcel¸Õºâªí»s§@¸ê®Æ®w³øªíªº¤èªk¡C½sµ{¤¤¥D­n¨Ï¥Î¤FCreateObject()¨ç¼Æ¡A¥¦¥i±qÃþ©w¸q©Î¤ä´©OLE¦Û°Ê¤ÆªºÀ³¥Îµ{¦¡¤¤³Ð«Øª«¥ó¡A¨Ã±Nª«¥ó¤Þ¥Î½áµ¹ÅܼƩΰ}¦C¤¸¯À¡F­Y¨Ï¥Î¥Î¤á¦Û©w¸qÃþ¡A«h¦b³Ð«Øª«¥ó¤§«e¡A¥Î¤á¦Û©w¸qÃþ¥²¶·¥ý¥Î Define Class ¨Ó³Ð«Ø¡A©ÎªÌ¥Î SET Classlib ¥´¶}ªº .VCX ¥iµøÃþ®w¤¤ªºÃþ¡C
¡@¡@°²©w¦b¤@­ÓVFP±M®×¤¤¦³¸ê®Æªí¡Gtable1.dbf¡]¨ä¤¤Á`¤À¼È¬°0¡^¡G
¡@¡@§Ú­Ì§Æ±æ¦bVFPªº³o­Ó¶µ¥Ø¹B¦æ®É¡A½Õ¥ÎExcel¨Ó³B²z³o­Ó¸ê®Æªí¡A¨Ã±N³B²zµ²ªG¦sÀÉ¡C¤UÄѪºµ{¦¡excel01.prg¹ê²{¤F³o¨Ç­n¨D¡Aµ{¦¡¤¤¥ÎCreateObject()¨ç¼Æ±Ò°ÊExcel¡A¨Ã·s«Ø¤@­ÓExcel¤u§@ï¡AµM«á¥´¶}¸ê®Æªítable1.dbf¡A¨ú±o¸Óªíªº°O¿ý¼Æ¡A¨Ã±Nªítable1.dbfªº°O¿ý¸ê®Æ³v±ø°e¨ì³o­Ó¤u§@諸¤u§@ªíSheet1¤¤¡]¦P®É­pºâ¦U°O¿ýªºÁ`¤À¡^¡Aµy¥[­×§ï¡]¨Ò¦p³]¸m¦rÅé¡B¦r«¬¤j¤p¡Aµeªí®æ½uµ¥¡^§@¥X³o­Ó¸ê®Æªíªº³øªí¡A¨Ã¥Îtemp.xlsÀɮצW¦sÀÉ¡Cexcel01.prg®Ú·½µ{¦¡¦p¤U¡G
¡@¡@SET DEFAULT TO d:\myvfp\kwsjk
¡@¡@Clear
¡@¡@oleApp = CREATEOBJECT(″Excel.Application″)
¡@¡@oleApp.Visible=.T. ¡®¡® Åã¥Ü Excel¡C
¡@¡@oleApp.Workbooks.Add
¡@¡@¡¯¡¯ ³]¸m³æ®æªº­È¡]³øªí¼ÐÃD¡^¡G
¡@¡@oleApp.Cells(1,1).value=″¶Q¦{¤j¾Ç¹q¸£³nÅé»P²z½×¬ã¨s©Ò″
¡@¡@oleApp.Cells(2,1).value=″¾Ç¥Í¦¨ÁZªí″
¡@¡@¡¯¡¯
¡@¡@oleApp.Cells(4,1).value=″©m¦W″
¡@¡@oleApp.Cells(4,2).value=″¼Æ¾Ç″
¡@¡@oleApp.Cells(4,3).value=″ºô¸ô″
¡@¡@oleApp.Cells(4,4).value=″¸ê®Æ®w″
¡@¡@oleApp.Cells(4,5).value=″­^»y″
¡@¡@oleApp.Cells(4,6).value=″¤H¤u´¼¼z″
¡@¡@oleApp.Cells(4,7).value=″Á`¤À″
¡@¡@¡¯¡¯ ¥´¶}¸ê®Æªí¡A¨ú±o¸Óªíªº°O¿ý¼Æ
¡@¡@use table1.dbf
¡@¡@jl=RECCOUNT()¡Ð1
¡@¡@¡¯¡¯ ±N¸ê®Æªí¤¤ªº°O¿ý¸ê®Æ©ñ¤JExcel¤u§@諸³æ®æ¤¤
¡@¡@FOR i=0 TO jl
¡@¡@ go i¡Ï1 ¡®¡® ²Äi¡Ï1±ø°O¿ý
¡@¡@oleApp.Cells(5¡Ïi,1).value=table1.©m¦W
¡@¡@ oleApp.Cells(5¡Ïi,2).value=table1.¼Æ¾Ç
oleApp.Cells(5¡Ïi,3).value=table1.ºô¸ô
¡@¡@ oleApp.Cells(5¡Ïi,4).value=table1.¸ê®Æ®w
oleApp.Cells(5¡Ïi,5).value=table1.­^»y
¡@¡@ oleApp.Cells(5¡Ïi,6).value=table1.¤H¤u´¼¼z
¡¯¡¯ ­pºâÁ`¤À¡G
¡@¡@oleApp.Cells(5¡Ïi,7).value=table1.¼Æ¾Ç¡Ïtable1.ºô¸ô¡Ïtable1.¸ê®Æ®w¡Ï
table1.­^»y¡Ïtable1.¤H¤u´¼¼z
¡@¡@ENDFOR
¡@¡@OleApp.ActiveWorkbook.SaveAs(″D:\myvfp\kwsjk\temp.XLS″)
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
Ruey



µù¥U®É¶¡: 2003-03-12
¤å³¹: 1698
¨Ó¦Û: tunglo

²Ä 2 ¼Ó

µoªíµoªí©ó: ¬P´Á¤é ¤­¤ë 04, 2003 3:17 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

¦bVFP¤¤¥þ­±±±¨îEXCEL
VFP©MExcel³£¥i¥H¥Î¨Ó¶i¦æ³B²z¸ê®Æ®wªí®æ¡A¦pªG¥©§®¦a±N¤GªÌªºÀuÂIµ²¦X°_¨Ó¡A±N·|¤j¤j¤è«K§Ú­Ìªº¤u§@¡C¤ñ¦p§Ú­Ì¥i¥H§Q¥ÎVFP¶i¦æ³B²z¸ê®Æ¡A¦Ó§Q¥ÎExcelªº¹wÄý¦C¦L¥\¯à¶i¦æ³øªí¦C¦L¡C³o´N»Ý­n§Ú­Ì¦bVFP¤¤ª½±µ¨Ó±±¨îExcel¡C¤U­±´N¦b¶}µoVFPÀ³¥Î±M®×®É¹ïExcelªº±±¨î§@¤@¤U¤¶²Ð¡G
¡@¡@1¡D³Ð«ØExcel¹ï¶H
¡@¡@eole=CREATEOBJECT(¡¬Excel.application¡¬)
¡@¡@2¡D²K¥[·s¤u§@ï
¡@¡@eole.Workbooks.add
¡@¡@3¡D³]¸m²Ä3­Ó¤u§@ªí¬°±Ò°Ê¤u§@ªí
¡@¡@eole.Worksheets(″sheet3″).Activate
¡@¡@4¡D¥´¶}«ü©w¤u§@ï
¡@¡@eole.Workbooks.Open(″c:\temp\ll.xls″)
¡@¡@5¡DÅã¥ÜExcelµøµ¡
¡@¡@eole.visible=.t.
¡@¡@6¡D§ó§ïExcel¼ÐÃDÄæ
¡@¡@eole.Caption=″VFPÀ³¥Îµ{¦¡½Õ¥ÎMicrosoft Excel″
¡@¡@7¡Dµ¹³æ®æ½á­È
¡@¡@eole.cells(1,4).value=XM(XM¬°¸ê®Æ®wÄæ¦ì¦W)
¡@¡@8¡D³]¸m«ü©w¦Cªº¼e«×(³æ¦ì¡G¦r¤¸­Ó¼Æ)
¡@¡@eole.ActiveSheet.Columns(1).ColumnWidth=5
¡@¡@9¡D³]¸m«ü©w¦æªº°ª«×(³æ¦ì¡G½S)
¡@¡@eole.ActiveSheet.Rows(1).RowHeight=1/0.035
¡@¡@(³]©w¦æ°ª¬°1Âç¦Ì¡A1½S=0.035Âç¦Ì)
¡@¡@10¡D¦b²Ä18¦æ¤§«e´¡¤J¤À­¶²Å
¡@¡@eole.Worksheets(″Sheet1″).Rows(1Cool.PageBreak=1
¡@¡@11¡D¦b²Ä4¦C¤§«e§R°£¤À­¶²Å
¡@¡@eole.ActiveSheet.Columns(4).PageBreak=0
¡@¡@12¡D«ü©wÃä®Ø½u¼e«×(Borders°Ñ¼Æ¦p¤U)
¡@¡@ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3
¡@¡@13¡D³]¸m¥|­ÓÃä®Ø½u±øªºÃþ«¬
¡@¡@eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1
¡@¡@(¨ä¤¤Borders°Ñ¼Æ¡G1¡Ð¥ª¡B2¡Ð¥k¡B3¡Ð³»¡B4¡Ð©³¡B5¡Ð±×¡B6¡Ð±×/¡FLineStyle­È¡G1»P7¡Ð²Ó¹ê¡B2¡Ð²Óµê¡B4¡ÐÂIµê¡B9¡ÐÂù²Ó¹ê½u)
¡@¡@14¡D³]¸m­¶¬Ü
¡@¡@eole.ActiveSheet.PageSetup.CenterHeader=″³øªí1″
¡@¡@15¡D³]¸m­¶¸}
¡@¡@eole.ActiveSheet.PageSetup.CenterFooter=″²Ä¡®P­¶″
¡@¡@16¡D³]¸m­¶¬Ü¨ì³»ºÝÃä¶Z¬°2Âç¦Ì
¡@¡@eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035
¡@¡@17¡D³]¸m­¶¸}¨ì©³Ãä¶Z¬°3Âç¦Ì
¡@¡@eole.ActiveSheet.PageSetup.FooterMargin=3/0.035
¡@¡@18¡D³]¸m³»Ãä¶Z¬°2Âç¦Ì
¡@¡@eole.ActiveSheet.PageSetup.TopMargin=2/0.035
¡@¡@19¡D³]¸m©³Ãä¶Z¬°4Âç¦Ì
¡@¡@eole.ActiveSheet.PageSetup.BottomMargin=4/0.035
¡@¡@20¡D³]¸m¥ªÃä¶Z¬°2Âç¦Ì
¡@¡@veole.ActiveSheet.PageSetup.LeftMargin=2/0.035
¡@¡@21¡D³]¸m¥kÃä¶Z¬°2Âç¦Ì
¡@¡@eole.ActiveSheet.PageSetup.RightMargin=2/0.035
¡@¡@22¡D³]¸m­¶­±¤ô¥­©~¤¤
¡@¡@eole.ActiveSheet.PageSetup.CenterHorizontally=.t.
¡@¡@23¡D³]¸m­¶­±««ª½©~¤¤
¡@¡@eole.ActiveSheet.PageSetup.CenterVertically=.t.
¡@¡@24¡D³]¸m­¶­±¯È±i¤j¤p(1¡Ð¯¶¦æ8úP5úR11 39¡Ð¼e¦æ14úR11)
¡@¡@eole.ActiveSheet.PageSetup.PaperSize=1
¡@¡@25¡D¦C¦L³æ®æºô½u
¡@¡@eole.ActiveSheet.PageSetup.PrintGridlines=.t.
¡@¡@26¡D«þ¨©¾ã­Ó¤u§@ªí
¡@¡@eole.ActiveSheet.UsedRange.Copy
¡@¡@27¡D«þ¨©«ü©w°Ï°ì
¡@¡@eole.ActiveSheet.Range(″A1:E2″).Copy
¡@¡@28¡DÖ߶K
¡@¡@eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial
¡@¡@29¡D¦b²Ä2¦æ¤§«e´¡¤J¤@¦æ
¡@¡@eole.ActiveSheet.Rows(2).Insert
¡@¡@30¡D¦b²Ä2¦C¤§«e´¡¤J¤@¦C
¡@¡@eole.ActiveSheet.Columns(2).Insert
¡@¡@31¡D³]¸m¦rÅé
¡@¡@eole.ActiveSheet.Cells(2,1).Font.Name=″¶ÂÅé″
¡@¡@32¡D³]¸m¦rÅé¤j¤p
¡@¡@eole.ActiveSheet.Cells(1,1).Font.Size=25
¡@¡@33¡D³]¸m¦rÅ鬰±×Åé
¡@¡@eole.ActiveSheet.Cells(1,1).Font.Italic=.t.
¡@¡@34¡D³]¸m¾ã¦C¦rÅ鬰²ÊÅé
¡@¡@eole.ActiveSheet.Columns(1).Font.Bold=.t.
¡@¡@35¡D²M°£³æ®æ¤½¦¡
¡@¡@eole.ActiveSheet.Cells(1,4).ClearContents
¡@¡@36¡D¦C¦L¹wÄý¤u§@ªí
¡@¡@eole.ActiveSheet.PrintPreview
¡@¡@37¡D¦C¦L¿é¥X¤u§@ªí
¡@¡@eole.ActiveSheet.PrintOut
¡@¡@38¡D¤u§@ªí¥t¬°
¡@¡@eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)
¡@¡@39¡D©ñ±ó¦sÀÉ
¡@¡@eole.ActiveWorkbook.saved=.t.
¡@¡@40¡DÃö³¬¤u§@ï
¡@¡@eole.Workbooks.close
¡@¡@41¡D°h¥XExcel
¡@¡@eole.quit
¡@¡@¥H¤W±±¨î½Õ¥Î»y¥y¦b¤¤¤åVFP5.0¥ø·~ª©¤U¹B¦æ³q¹L¡A¹B¦æÀô¹Ò¬°Excel 97¤Î¤¤¤åWindows 98

_________________
#############################
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~­ì¨Ó©¯ºÖ¨º»ò²³æ!!

¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
#############################
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
Ruey



µù¥U®É¶¡: 2003-03-12
¤å³¹: 1698
¨Ó¦Û: tunglo

²Ä 3 ¼Ó

µoªíµoªí©ó: ¬P´Á¤é ¤­¤ë 04, 2003 3:18 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

VFP½Õ¥ÎEXCELªº¸É¥R¤èªk
¤U­±¬O§Ú¨Ï¥Î VFP CALL EXCELªº³¡¤À¨Ò¤l¡G
³o¬O¥»¤H±q®Ñ¥»¤W§Ûªº¤ùÂ_©M§Úªº¤p¤p¸gÅç¡A¥i¥HÅý§A«Ü¤è«Kªº¦b VFP ¤¤½Õ¥Î EXCEL¡A©Ò¦³ªº±`¦¡§Ú³£¸ÕÅç¹L¡C
¥ÎVisual Foxpro ³]­p¥ÎExcelªí®æªºµ{¦¡
§Q¥ÎOLE Automation ³]­pExcel À³¥Îµ{¦¡
Excel¤ä´©ªºª«¥ó»¡©ú¡G
(a) VBA ¹ï¶H¡G
ª«¥ó¦WºÙ ·N¸q
Application ExcelÀ³¥Îµ{¦¡ª«¥ó
WorkBooks Excel¬¡­¶Á¡¹ï¶H
(b)©Ò¨Ï¥ÎªºMethod
ª«¥ó¦WºÙ Method °õ¦æ·N¸q
Application Cells ³]©w©Î¶Ç¦^¨Ó¬Y­Óºô®æªº¤º®e
Range ¶Ç¦^©Î³]©w¬Y¤@­Ó½d³òªººô®æ
Charts ¶Ç¦^©Î³]©w¬¡­¶Ã¯ªº³æ¤@²Î­pªí
Quit µ²§ô Excel Application
Save ±Ò°Ê¦sÀxÀɹï¸Ü¤è¶ô
WorkBooks Add ·s¼W¤@­Ó¤u§@ï
Charts Add ·s¼W¤@­Ó²Î­p¹Ï
(c)©Ò¨Ï¥ÎªºProperty
ª«¥ó¦WºÙ Property ³]©w·N¸q
Application Visible ¬O§_²{¹ê¦A SCREEN¤W .T. , .F.
value ¶Ç¦^©ÎªÌ³]©w¦sÀxÀɪº¤º®e
ActiveSheet ¦^À³Excel Application °õ¦æ¤u§@ªíª«¥ó
¹ê¨Ò»¡©ú¡G
±Ò°ÊExcel¡G
MyExcel=CreateObject('Excel.Application') &&«Ø¥ßExcelª«¥ó
MyExcel.Visible=.T. &&ÅýExcelª«¥ó¦A¿Ã¹õ¤WÅã¥Ü¥X¨Ó
¦p¦ó¼W¥[¤u§@ï¡G
MyExcel.WorkBooks.Add &&¦bExcelª«¥ó¤¤¼W¥[¤@¥÷¤u§@ï¡]WorkBook)
¦p¦ó¦b¤u§@襤¼W¥[Sheet(¤u§@ªí¡^
MyExcel.Sheets.Add &&¼W¥[¤u§@ªí¡]¦b·í«e¤u§@襤¡^
¦p¦ó§R°£¤u§@ªí
MyExcel.ActiveWorkBooks.Sheets(1).Delete &&§â¤u§@襤ªºBOOK¡]1¡^ §R°£
¦V«ü©wªº¤u§@襤ªº¤u§@ªí(Sheet)¤¤¦sÀx¸ê®Æ
*Excel.application Object
*Excel.application.ActiveWorkBook Property
*WorkBOoks Object
*WorkBOoks ObjectªºAdd Method.
*Sheets¹ï¶H
*Sheets(Index)ª«¥ó«ü©w¯Á¤Þ¤u§@ªí
*Excel.Applicationª«¥óªºCells Methodµ²¦XvalueÄÝ©Ê
Example:
CLEAR ALL
SET PATH TO SYS(2004)+'SAMPLES\DATE'
USE CUSTOMER
MYEXCEL=CREATEOBJEXT('EXCEL.APPLICATION')
MYEXCEL.VISIBLE=.T.
MYEXCEL.WORKBOOKS.ADD
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).value='«È¤á½s¸¹'
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,2).value='¤½¥q¦æ¸¹'
SELECT CUSTOMER
R=2
C=1
GOTO TOP
FOR I=1 TO 20
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C).value=CUSTOMER.CUST_ID
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C+1).value=CUSTOMER.COMPANY
R=R+1
SKIP
ENDFOR
½Õ¾ã³æ®æ¼e«×¡G
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).columnwidth=30
½Õ¾ã³æ®æ¹ï»ô¤è¦¡¡G
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).horizontalalig=1
1¬°Àq»{¤è¦¡¡A2¬°¥ª¹ï»ô¡A3¬°¤¤¹ï»ô¡A4¬°¥k¹ï»ô¡C
¦p¦ó±N¸ê®Æ¦sÀx¡G
MYEXCEL.SAVE()
ª`:¥i¥H¥ÎSave(FileName)«ü©w¹w¦sÀxÀɮצW, «h¥i¤£¥Î±Ò°ÊSAVE AS µ¡¤f
¦p¦ó¦C¦Lªí®æ¡G
MYEXCEL.ActiveWorkBook.PrintOut &&Àq»{¦C¦L¼W­ÓSheet
¦p¦ó«ü©w¦C¦Lªí®æ¡G
MYEXCEL.ActiveWorkBook.PrintOut(1,1,1,.T.) &&Àq»{¦C¦L¼W­ÓSheet
PrintOut¦³¥|­Ó°Ñ¼Æ
A. ¼Æ­È:,ªí¥Ü«ü©wªº¤u§@襤¶i¦æ¦C¦LªºSheet ªº¶}©l½s¸¹
B. ¼Æ­È:,ªí¥Ü«ü©wªº¤u§@襤¶i¦æ¦C¦LªºSheet ªºµ²§ô½s¸¹
C.¦C¦L¤À¼Æ.
D.¬O§_¶i¦æ Preview, .T.,¹wÄý, .F.¦C¦L
¦p¦ó²£¥Í²Î­p¹Ï
CURROW=MYEXCEL.ACTIVESHEET.ROWS.COUNT
RANGESTRING='A1:'+'B'+ALLTRIM(STR(CURROW))
MYEXCEL.RANGE(RANGESTRING).SELECT
MYEXCEL.CHARTS.ADD
µ²§ôEXCEL
MYEXCEL.QUIT
EXCEL.ActiveWindow.SelectedSheets.PrintPreview &&¹wÄý¦C¦L
EXCEL.ActiveWorkbook.SaveAs("C:\My Documents\Book1.xls") &&¥t¦s¬°
EXCEL.ActiveWorkbook.Close &&Ãö³¬¤@­Ó¤u§@ªí¡A¦pªG¦³­×§ï«h´£¥Ü
EXCEL.ActiveWorkbook.Close(.t.) &&´£¥Ü¥t¦s¬°
EXCEL.ActiveWorkbook.Close(.f.) &&Ãö³¬¤@­Ó¤u§@ªí¤£¥Î´£¥Ü¬O§_¦sÀÉ

_________________
#############################
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~­ì¨Ó©¯ºÖ¨º»ò²³æ!!

¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
#############################
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
Ruey



µù¥U®É¶¡: 2003-03-12
¤å³¹: 1698
¨Ó¦Û: tunglo

²Ä 4 ¼Ó

µoªíµoªí©ó: ¬P´Á¤é ¤­¤ë 04, 2003 3:19 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

VFP¤UªºSQL©MEXCEL§Þ³N
¡@¡@§Ú­Ì³£ª¾¹D¦b EXCEL ¤¤¦³«Ü¦h«Ü¦hªº­pºâ¤½¦¡¡BÆF¬¡¦hÅܪº­pºâ¤è¦¡¡B¤è«K§Ö±¶ªº¹Ïªí³B²z¡B©M¥\¯à±j¤jªº¡@VBA¡@»y¨¥¡A¥i¥H»¡ EXCEL ¥i¯à¬O³Ì¦n¥Îªºªí®æ³B²z³nÅé¡C§Ú´±»¡¡G·L³nªº²£«~¤¤¤j·§´N EXCEL ³Ì¦n¡I
¡@¡@¦ý¬O¡A«ç¼Ë¥Î Foxpro §Ö³t²£¥Í²Î­pªí¡A¨Ã±N¸ê®Æ°e¨ì Excelªí®æ¤¤¡A±q¦Ó¥N´À Foxpro ªº³øªí¤u¨ã©O?
¡@¡@§Ú­Ì¤j®a³£ª¾¹D¡A¦b Visual Foxpro 3.0¤Î¥H«áª©¥»¤¤´£¨Ñ¤F¤@­Ó½Õ¥ÎOle Automation ªº¨ç¼Æ CREATEOBJECT¡A¥Î¸Ó¨ç¼Æ¥i¥HÅý Visual Foxpro «Ü¤è«Kªº©M¨ä¥L¥i¥H´£¨Ñ Ole Automation ªA°Èªºµ{¦¡¶i¦æ³q°T¡C¦Ó Excel §ó¬O¤@­Ó¼Ð·Çªº Ole Automation ¦øªA¾¹µ{¦¡¡A§Ú­Ì¥i¥H¦b«eºÝ±N¸ê®Æ¶Ç°e¨ì«áºÝªº Excel ªA°Èµ{¦¡¡A¥Î«áºÝªA°Èµ{¦¡¶i¦æªí®æ³B²z¡A±q¦ÓÀ±¸É Visual Foxproªº¤£¨¬¡C
¡@¡@¥Ñ©ó¾ú¥v­ì¦]¡A§Ú­Ì§@³øªí³£²ßºD¥Î Total¡BCount¡BSum ©ÎªÌª½±µ¦b³øªí¤¤¤u¨ã¤¤­pºâ¡A³t«×³Ì§Öªº¤j·§¤]´N¬O Total ¤F¡A¦ý¤£ª¾¹DÁÙ¦³¦h¤Ö¤HÁÙ¦b°í«ù¨Ï¥Î Total ©R¥O¶i¦æ­pºâ¡A¦³¨S¦³§ó¦nªº­pºâ¤èªk©O¡H·íµM¦³°Õ¡I§Ú¦b¹ê»Ú¨Ï¥Î¤¤¿n²Ö¦³¤@©wªº¸gÅç¦ýÄ@¯àµ¹¦U¦ì°_¨ì¤p¤pªº±Òµo¡C
°²³]¦³¤@ªí¡GTable1 ¬O¤@­Ó¤H­ûÀɮסAùØ­±ªºªíµ²ºc¦p¤U¡G
¡Ð¡Ð¡Ð¡Ð¡Ð Äæ¦ì¦W ¡Ð¡Ð Ãþ«¬¤Îªø«×¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð
¡@¡@¡@¡@¡@¡@½s¸¹¡@¡@¡@¡@C,2
¡@¡@¡@¡@¡@¡@³¡ªù¡@¡@¡@¡@C,10
¡@¡@¡@¡@¡@¡@©m¦W¡@¡@¡@¡@C,10
¡@¡@¡@¡@¡@¡@©Ê§O¡@¡@¡@¡@C,2
¡@¡@¡@¡@¡@¡@¥X¥Í¤é´Á¡@¡@D
¡@¡@¡@¡@¡@¡@¾°È¡@¡@¡@¡@C,10
¡@¡@¡@¡@¡@¡@¤å¤Æµ{«×¡@¡@C,10
¤º®e¤j·§¦p¤U
TABLE1.DBF
¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð
½s¸¹¡@¡@³¡ªù¡@¡@©m¦W¡@¡@©Ê§O¡@¡@¥X¥Í¤é´Á¡@¡@¾°È¡@¡@¡@¡@¤å¤Æµ{«×¡@
¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð
¡@1¡@¡@¤uµ{³¡¡@¡@±i¤T¡@¡@¨k¡@¡@1971-01-11¡@¤uµ{®v¡@¡@¡@¤j¾Ç¥»¬ì¡@
¡@2¡@¡@¾P°â³¡¡@¡@§õ¥|¡@¡@¨k¡@¡@1967-02-23¡@¸g²z¡@¡@¡@¡@¤j¾Ç¥»¬ì¡@
¡@3¡@¡@¤uµ{³¡¡@¡@¤ýªZ¡@¡@¡@¡@¡@1954-03-14¡@§Þ³N­û¡@¡@¡@¤j¾Ç±M¬ì¡@
¡@4¡@¡@Á`¸g²z«Ç¡@»¯¼ä¶®¡@¤k¡@¡@1975-04-05¡@¯µ®Ñ¡@¡@¡@¡@ºÓ¤h¬ã¨s¥Í
¡@5¡@¡@¾P°â³¡¡@¡@¡D¡D¡@¡@¡@¡@¡@1977-05-09¡@¾P°â¸g²z¡@¡@°ª¤¤¡@¡@¡@
¡@6¡@¡@¤uµ{³¡¡@¡@¤j¤å¡@¡@¡@¡@¡@1969-03-30¡@Á`¤uµ{®v¡@¡@¤j¾Ç±M¬ì¡@
¡@7¡@¡@¾P°â³¡¡@¡@¡D¡D¡@¡@¡@¡@¡@1961-10-10¡@¾P°â¸g²z¡@¡@¤j¾Ç±M¬ì¡@
¡@8¡@¡@Á`¸g²z«Ç¡@²ø½[¡@¡@¡@¡@¡@1961-10-10¡@Á`¸g²z¡@¡@¡@¤j¾Ç±M¬ì¡@
¡@¡@·íµM¹ê»Úªº¸ê®ÆÀ³¸Ó¤ñ³oùئh«Ü¦h¡A­n¤£Á٥βέp·F¶Ü¡A§Ú¤£¹L¬OÁ|¨Ò»¡©ú¦Ó¤w¡C§Ú¤£ª¾¹D§A­Ì¦b¨Ï¥Î SQL »y¥y®É¦³¨S¦³¥Î¨Ï¥Î¨ç¼Æªº²ßºD¡A¤Ï¥¿§Ú¬O¬Û·íÄ@·N¦b SQL ¤¤¨Ï¥Î¨ç¼Æ¡A§Ú»{¬°¨Ï¥Î¨ç¼Æªº SQL »y¥yÁöµM»y¥yªø¤@ÂI¡A¦ý¬O¥i¥HÅý§Aªºµ{¦¡¬Ý°_¨Ó§ó²M´·¡B²¼ä¡C
¡@¡@»¡¹D³oùاڭn·PÁ·íªìµo©ú¥X IIF ¨ç¼Æ¨º¦ì¤¸°ª¤H¡A­n¨S¦³¥L(¦o)§Ú¤]¨S¦³¾÷·|¦b³oùØÅo¶Û³o»ò¤[¡A¦b«á­±´£¨ìªº§Ö³t²£¥Í²Î­pªí¤¤±N¤j¶qªº¹B¥Î IIF ¨ç¼Æ¡C¤]³\§A·|ı±o©_©Ç¡A§A²Î­pªº®É­Ô¥Î¨º»ò¦h IIF ·F¶Ü¡H§O«æ¡A¤U­±´NÅý§ÚºCºCªº§i¶D§A¡C
¡@¡@¬Ý¬Ý§Ú­Ì«e­±´y­zªºªí¡A§Ú­Ì¥i¯à­n²Î­p¦U­Ó³¡ªùªº¡§©Ê§O¡U¾°È¡U¤å¤Æµ{«×¡¨µ¥ªº¤À§G±¡ªp¡A²³æ¤@ÂI§Úµ¹µe¤F¤@­Óªí­Ó¥X¨Ó¡A¥i¯àªí®æ§ó¯à»¡©ú¥Õ¡G

¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¦U³¡ªù¤H­û¤À§G±¡ªpªí
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@³æ¦ì¡G¤H
¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð
³¡ªù¡@¡@¡U¡@¨k¡U¡@¤k¡U¡@¥»¬ì¡@¡U¡@±M¬ì¡U§Þ³N¤H­û¡UºÞ²z¤H­û¡U¯µ®Ñ¡@
¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð
¤uµ{³¡¡@¡U¡@¡@¡U¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@
¾P°â³¡¡@¡U¡@¡@¡U¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@
Á`¸g²z«Ç¡U¡@¡@¡U¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@
¡@¡@¡@¡@¡U¡@¡@¡U¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@
¡@¡@¡@¡@¡U¡@¡@¡U¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@¡@¡U¡@¡@¡@
¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð¡Ð
¡@¡@¤W­±³o±iªí»¡½ÆÂø¤]¤£½ÆÂø¡A¦ý¬O¥Î±`µ¹ªº³B²z¤èªk¥i¯à¤]­n¯Ó±¼§Ú­Ì¤£¤Öªº®É¶¡¡A¦]¬°§A¤£±o¤£°w¹ï¤£¦Pªº¶µ¥Ø¶i¦æ³æ¿W¤Ï´_ªº­pºâ¡A¥i¯àÁÙ­n¥Í¦¨¤@¤j°ïªºÁ{®Éªí¯u·Ð¡I¤U­±ªº­pºâ¤½¥q¥iÅý§A»´ÃP§¹¦¨¤W­±ªºªí®æ¡A·íµMµ{¦¡ÁÙ¬O­n¼gªº¤£¥i¯à¤°»ò¤]¤£°Ê¤£·Q´N¯à¹F¨ìªº¡A¥ß§Y¿é¤J¤U¦Cµ{¦¡¡G
²Ä¤@¨B¡GÂà´«
Select ³¡ªù,;
¡@¡@¡@¡@iif(©Ê§O='¨k',1,0) as ¨k,;
¡@¡@¡@¡@iif(©Ê§O='¤k',1,0) as ¤k,;
¡@¡@¡@¡@iif(¤å¤Æµ{«×='¤j¾Ç¥»¬ì',1,0) as ¤j¾Ç¥»¬ì,;
¡@¡@¡@¡@iif(¤å¤Æµ{«×='¤j¾Ç±M¬ì',1,0) as ¤j¾Ç±M¬ì,;
¡@¡@¡@¡@iif(inlist(¾°È,'¤uµ{®v','§Þ³N­û','Á`¤uµ{®v'),1,0) as §Þ³N¤H­û,;
¡@¡@¡@¡@iif(inlist(¾°È,'Á`¸g²z','¸g²z','¾P°â¸g²z'),1,0) as ºÞ²z¤H­û,;
¡@¡@¡@¡@iif(inlist(¾°È,'Á`¸g²z','¸g²z','¾P°â¸g²z'),1,0) as ºÞ²z¤H­û,;
¡@¡@¡@¡@iif(inlist(¾°È,'¯µ®Ñ'),1,0) as ¯µ®Ñ;
from table into cursor query1
²Ä¤G¨B¡GÂà´«¨Ã­pºâ
Select ³¡ªù¡@¡@¡@¡@¡@ as ³¡ªù,;
¡@¡@¡@¡@sum(¨k)¡@¡@¡@ as ¨k,;
¡@¡@¡@¡@sum(¤k)¡@¡@¡@ as ¤k,;
¡@¡@¡@¡@sum(¤j¾Ç¥»¬ì) as ¤j¾Ç¥»¬ì,;
¡@¡@¡@¡@sum(¤j¾Ç±M¬ì) as ¤j¾Ç±M¬ì,;
¡@¡@¡@¡@sum(§Þ³N¤H­û) as §Þ³N¤H­û,;
¡@¡@¡@¡@sum(ºÞ²z¤H­û) as ºÞ²z¤H­û,;
¡@¡@¡@¡@sum(ºÞ²z¤H­û) as ºÞ²z¤H­û,;
¡@¡@¡@¡@sum(¯µ®Ñ)¡@¡@ as ¯µ®Ñ;
from query1 into cursor query1;
group by ³¡ªù
¡@¡@¤£­n¥H¬°§Ú§â¡§from query1 into cursor query1¡¨¼g¿ù¤F¡A³o¼Ë¼gªº»y¥y½T¹ê¥i¥H¨Ï¥Î¡C
¡@¡@¨ì³o¤@¨B¡A²Î­pªí´N­pºâ¥X¨Ó¤F¡A¤£«H¥Î BROWSE ¬Ý¬Ý¡C©¹¤U­±§Ú­ÌÀ³¸Ó»¡»¡«ç¼Ë§â²{¦b²Î­p¥Xªº¸ê®Æ¿é¥X¨ì EXCEL ¤¤¤F¡]·íµM¤°»ò¼Ë¤lªº¸ê®Æ³£¥i¥H¡^¡C
­º¥ý¥Î CreateObject ¨ç¼Æ«Ø¥ß¤@­Ó Excel automation ª«¥ó¡Aµ{¦¡¦p¤U¡G
local excel,o
define windows WaitWin at 0,0 size 10,60 system ;
font 'times new roman',12 ;
title '´£¥Ü' close float zoom &&¥Î©ó³B²z´£¥Ü¸ê°Tªºµøµ¡
move windows waitWin center
acti windows waitwin
set color to w+/n
clear
excel=createobject('excel.application')
if type('excel')='U' &&¥¼¯à²£¥ÍEXCELª«¥ó
¡@¡@? '±Ò°Ê EXCEL ¥¢±Ñ...'
¡@¡@release windows WaitWin
¡@¡@return
endif
ReportTitle='XXXX¤½¥q¤H­û¤À§G±¡ªp'
ExcelFile="xls1.xls"
excel.caption=ReportTitel
select query1
if not file(ExcelFile)
¡@¡@export to (ExcelFile) type xls
endif
excel.workbooks.open(ExcelFile)
o=excel.activeworkbook.activesheet &&¥Îª«¥ó¥N´À³o»òªøªº¤@¦ê¦r
o.cells(1,1).value=ReportTitle
*
* ²Ä¤@¦æ¬O¼ÐÃD,¬G±q²Ä¤G¦æ¶}©l
*
scan for recno()>1 &&¨C¤@¦æ
¡@¡@?'¥¿¦b±N¸ê®ÆÂà´«¨ì Excel ªí®æ¤¤...',recno()
¡@¡@for i=1 to fcount() &&¨C¤@¦C
¡@¡@¡@¡@fld=field(i)
¡@¡@¡@¡@if type(fld)='C'&&¦pªGÄæ¦ì¤Ó¼e¡AExcel¥i¯à¤£¯à¥¿½T±µ¨ü¸ê®Æ
¡@¡@¡@¡@¡@¡@o.cells(recno()+3,i).value=trim(&fld)
¡@¡@¡@¡@else
¡@¡@¡@¡@¡@¡@o.cells(recno()+3,i).value=&fld
¡@¡@¡@¡@endif
¡@¡@endfor
endscan
o.cells(1,1).select
excel.ActiveWindow.windowstate=2
excel.ActiveWorkbook.save()
excel.visible=.t.
clear
startTime=time()
set cursor off
*
* µ¥«Ý Excel ³B²z§¹²¦«á¦AÄ~Äò
*
do while .t.
¡@¡@@1,4 say '¤w±Ò°Ê«á»O Excel ªí®æ³B²zµ{¦¡,³B²z¤¤...'
¡@¡@@2,4 say 'Ctrl+End Ä~Äò³B²z...'
¡@¡@@4,4 say '¶}©l®É¶¡:'
¡@¡@??starttime
¡@¡@@5,4 say '²{¦b®É¶¡:'
¡@¡@??time()
¡@¡@&&VFP·|¦b¦¹µ¥«Ý¡A°£«D§A±q EXCEL¤¤°h¥X©Î«ö¤U Ctrl+EndÁä
¡@¡@if inkey(0.5)=23 or type('o.name')='U'
¡@¡@¡@¡@exit
¡@¡@endif
enddo
set cursor on
release o,excel
release FindWindow
?'³B²z§¹²¦...'
=inkey(0.5)
release windows WaitWin
end note

_________________
#############################
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~­ì¨Ó©¯ºÖ¨º»ò²³æ!!

¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
#############################
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
garfield
Site Admin


µù¥U®É¶¡: 2003-01-30
¤å³¹: 2157


²Ä 5 ¼Ó

µoªíµoªí©ó: ¬P´Á¤T ¤C¤ë 02, 2003 1:23 am    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

VFP»PEXCELªº´XºØ¥æ¤¬½sµ{¤èªk

¤@¡BEXECLÅX°ÊVFP
EXECL¤º¸mªºVBA»y¨¥¡]Visual Basic For Application¡^爲EXECL¥\¯àªºÂX®i´£¨Ñ¤F«K§Qªº¤â¬q¡A¥Î¤á¥i¨Ï¥Î¸Ó»y¨¥ª½±µÅX°ÊVFP§¹¦¨¸ê®ÆÀ˯Áµ¥¥\¯à¡C
µ{¦¡­º¥ý¥Í¦¨¤@­ÓVFPª«¥ó¡AµM«á¥ÎVFPªºDoCmd¤èªk°õ¦æVFPºN¯Á©R¥O¦ê¡A¨äºN¯Áµ²ªG¦A­É§U©óVFPªºDateToClip¤èªk«þ¨©¦Ü°Å¤ÁªO¡A³Ì«áVBA±N¨äÖ߶K¦Ü¤u§@ªíªº¥¿½T¦ì¸m¡C
Sub FoxTest()

Dim oFox As Object
Dim SLesson As String
Dim SCommand As String

Set oFox = CreateObject("VisualFoxPro.Application") '啓°ÊVFP¡A¥Í¦¨VFPª«¥ó
Sheets("¬d¸ß").Select
SLesson = Range("½Òµ{¦W") '¦b¦W爲¡§½Òµ{¦W¡¨ªº³æ®æ¤¤±o¨ì±ý¬d¸ßªº½Òµ{¦WºÙ
Sheets.Add '産¥Í·sªº¤u§@ªí³æ
ActiveSheet.Name = Slesson '«ü©w¤u§@ªí³æªº¦WºÙ»P½Òµ{¦WºÙ¬Û¦P

SCommand = "SELECT ¾Ç¸¹,»y¤å,¼Æ¾Ç FROM d:\vfp\¾Ç¥Í¦¨ÁZªí WHERE "+ SLesson + "<60 INTO CURSOR TEMP" '§Î¦¨VFP¬d¸ß©R¥O¦ê
oFox.DoCmd Scommand '°õ¦æVFP©R¥O¦ê
oFox.DataToClip "temp", , 3 '±N·j¯Áµ²ªG¥H¤å¥»¤è¦¡«þ¨©¦Ü°Å¤ÁªO
Range("a1:a1").Select '«ü¦V«þ¨©¥Ø¼Ð°Ï°ì¥ª¤W¨¤³æ¤¸
ActiveSheet.Paste 'Ö߶K·j¯Áµ²ªG

End Sub

爲«K©ó¨Ï¥Î¡A§@ªÌ¦bEXECL¤¤¦Û»s¤F¤@¦W爲¡§·j¯Á¡¨ªº¤u¨ãÄæ¤Î¤@¦W爲¡§¶}©l·j¯Á¡¨ªº«ö¶s¡A¨Ã±N¤W­z¥¨¶°µ{¦¡¬q»P¦Û»s«ö¶s¬ÛÃöÁp¡A«ö¤U¦¹«ö¶s§Y¥i¹B¦æµ{¦¡¨Ã¦bEXCEL¤¤±o¨ì­n¨Dªº¸ê®Æ¡C
»s§@¤u¨ãÄæ¤Î«ö¶sªº¤èªk¦p¤U¡G
1. ¿ï¡§¤u¨ã¡¨/¡§¦Û©w¸q¡¨¥\¯àªí¡A¥X²{¦Û©w¸q¹ï¸Ü¤è¶ô¡F
2. ¿ï¾Ü¡§¤u¨ãÄ桨­¶®Ø¡AµM«á«ö¤U¡§·s«Ø¡¨«ö¶s¡F
3. ¦b¤u¨ãÄæ¹ï¸Ü¤è¶ô¤¤¿é¤J¡§·j¯Á¡¨§@爲·s«Ø¤u¨ãÄ檺¦WºÙ¡F
4. ¿ï¾Ü¡§©R¥O¡¨­¶®Ø¡A¦b¡§Ãþ§O¡¨¦Cªí¤¤¿ï¡§§»¡¨¡A¦b¡§©R¥O¡¨¦Cªí¤¤¿ï¡§¦Û©w¸q«ö¶s¡¨¨Ã±N¨ä©ì©ñ¦Ü·s«Øªº¡§·j¯Á¡¨¤u¨ãÄæ¡F
5. «ö¤U¡§§ó·s©Ò¿ï¤º®e¡¨«ö¶s¡A­º¥ý¦b¡§©R¦W¡¨Ä椤¶ñ¤J«ö¶s¦WºÙ¡§¶}©l·j¯Á¡¨¡AµM«á¿ï¾Ü¡§«ü©w§»¡¨¡A¦bÀH«á¥X²{ªº¡§«ü©w§»¡¨¦Cªí¤¤¿ï¾Ü¤W­z¥¨¶°µ{¦¡FoxTest()§Y¥i¹ê²{爲¸Ó¥¨¶°«ü©w¤@­Ó¤u¨ãÄæ«ö¶s¡C

¤G¡BVFP¨Ï¥ÎOLE¥\¯àÅX°ÊEXECL
OLE¡]Object Linking and Embedding¡^ª«¥óÃìµ²»P´O¤J¡A¬OWINDOWSÀ³¥Îµ{¦¡¶¡¬Û¤¬¶Ç»¼©M¦@¥Î¸ê®Æªº¤@ºØ¦³®Ä¤èªk¡CVFP­É§U©óOLE¤£¶È¥i¦@¥Î¨ä¥LÀ³¥Îµ{¦¡ªº¸ê®Æ¡A¦Ó¥BÁÙ¯à¥Hª«¥ó¤è¦¡ª½±µ±±¨î¨ä¥LÀ³¥Îµ{¦¡ªº¹B¦æ¡A±q¦Ó¶i¤@¨BÂX®iVFPªº¥\¯à¡CVFP¤ä´©ª½±µ¦bµ{¦¡¤¤³Ð«Ø¡B¨Ï¥Î©M±±¨îOLEª«¥ó¡A¹ê²{OLE¦Û°Ê¤Æ¡C§@爲OLE«È¤áVFP»P§@爲OLE¦øªA¾¹ªºEXCEL¨ã¦³¨}¦nªº½sµ{¤¶­±¡A¤U­zµ{¦¡¬q¥ÎOLE¤è¦¡¹ê²{©Ò­n¨Dªº¥\¯à¡C
µ{¦¡­º¥ý¥Í¦¨¤@­ÓEXCELªºOLEª«¥óOleApp¥H«K¹ï¨ä¶i¦æ¾Þ§@¡AµM«á§Q¥ÎOLE¥\¯à±qEXCELªí³æ¤¤Àò¨ú±ý¬d¸ßªº½Òµ{¦W¡A¨Ã±±¨îEXCEL¥Í¦¨·sªº¤u§@ªí¡AVFPªº¬d¸ßµ²ªG¤´µM¨Ï¥Î°Å¤ÁªOªº¤è¦¡¶Ç»¼¦ÜEXCEL¤u§@ªí¡C

OleApp=CREATEOBJECT("Excel.Application") && ¥´¶}EXCEL¡A産¥ÍOLEª«¥ó
OleApp.Application.Caption="VFP¥æ¤¬½sµ{" && «ü©w¼ÐÃDÄæ¦WºÙ
OleApp.Application.Visible=.T. && ¸mEXCEL¥i¨£
OleApp.Application.WorkBooks.Open("d:\vfp\VFP¥æ¤¬.xls") && ¥´¶}EXCEL¤u§@ï

DO WHILE .T.
WITH OleApp.Application
nAnswer = MESSAGEBOX("¶}©l·j¯Á¡H", 32+4, "·j¯Á«ü©w¸ê®Æ") &&産¥Í¸ê°T®Ø
IF (.NOT.(nAnswer=6)) && ¦p«ö¤U¡§Yes"«ö¶s¡A«h¶}©l·j¯Á¡A¤Ï¤§°h¥X
EXIT
ENDIF

.Sheets("¬d¸ß").Select && ¿ï¾Ü¡§¬d¸ß¡¨¤u§@ªí³æ
SLesson = OleApp.Application.Range("½Òµ{¦W").value && ±o¨ì±ý¬d¸ßªº½Òµ{¦WºÙ
.Sheets.Add && ·s«Ø¤@¤u§@ªí³æ
.ActiveSheet.Name = Slesson && «ü©w¤u§@ªí³æªº¦WºÙ
SCommand = "SELECT ¾Ç¸¹,»y¤å,¼Æ¾Ç FROM d:\vfp\¾Ç¥Í¦¨ÁZªí WHERE " +ALLTrim(SLesson) + "<60 INTO CURSOR TEMP" && §Î¦¨VFP¬d¸ß©R¥O¦ê
&Scommand && °õ¦æVFP©R¥O¦ê
_VFP.DataToClip("TEMP",,3) && ±N·j¯Áµ²ªG¥H¤å¥»¤è¦¡«þ¨©¦Ü°Å¤ÁªO
.Range("a1:a1").Select && «ü¦V«þ¨©¥Ø¼Ð°Ï°ì¥ª¤W¨¤³æ¤¸
.ActiveSheet.Paste && Ö߶K·j¯Áµ²ªG
ENDWITH
ENDDO

OleApp.Quit && Ãö³¬EXCEL¡A«O¦s§ó·s«áªº¤u§@ï¤å¥ó
¤T¡BVFP¨Ï¥ÎDDE¥\¯àÅX°ÊEXECL
DDE¡]Dynamic Data Exchange¡^°ÊºA¸ê®Æ¥æ´«¡A¬OWINDOWSÀ³¥Îµ{¦¡¶¡¬Û¤¬¶Ç»¼©M¦@¥Î¸ê®Æªº¥t¤@ºØ¦³®Ä¤èªk¡ADDE¥Î¦@¥Î°O¾ÐÅé¦bÀ³¥Îµ{¦¡¶¡¥æ´«¸ê®Æ¡CDDE·|¸Üµo¥Í¦bDDE«È¤á»PDDE¦øªA¾¹À³¥Îµ{¦¡¤§¶¡¡A«È¤áÀ³¥Îµ{¦¡¦V¦øªA¾¹À³¥Îµ{¦¡½Ð¨D¸ê®Æ©MªA°È¡A¦Ó¦øªA¾¹¦^À³«È¤áÀ³¥Îµ{¦¡¹ï¸ê®Æ»PªA°Èªº½Ð¨D¡CDDEªº¸ê®Æ¥æ´«¥i¤À¤TºØ¤è¦¡¡G
* §NÃìµ²¡G«È¤áÀ³¥Îµ{¦¡½Ð¨D¸ê®Æ®É¡A¦øªA¾¹À³¥Îµ{¦¡¤~µo°e¸ê®Æµ¹«È¤áÀ³¥Îµ{¦¡¡F
* ·xÃìµ²¡G¦øªA¾¹À³¥Îµ{¦¡¦b¨C¦¸¸ê®Æ¶µ¥Øªº­ÈÅܤƮɳ£¦V«È¤áÀ³¥Îµ{¦¡µo°e³q§i¡A¦ý¥¦¨Ã¤£ª½±µµo°e­Èµ¹«È¤áÀ³¥Îµ{¦¡¡A¦Ó¥Ñ«È¤áÀ³¥Îµ{¦¡¨M©w¬O§_¨ú±o¸Ó¸ê®Æ¡F
* ¼öÃìµ²¡G¦øªA¾¹À³¥Îµ{¦¡¦b¨C¦¸­ÈÅܤƮɳ£µo°e¸ê®Æ¶µ¥Øªº·s­Èµ¹«È¤áÀ³¥Îµ{¦¡¡C
VFP»PEXCEL§¡¤ä´©DDE«È¤á»P¦øªA¾¹¡C¤U­zµ{¦¡¬q¥Ñ§@爲DDE«È¤áªºVFPÀ³¥Îµ{¦¡»P§@爲DDE¦øªA¾¹ªºEXCEL¥ÎDDE¤è¦¡¹ê²{©Ò­n¨Dªº¥\¯à¡C
µ{¦¡­º¥ý啓°ÊEXCEL¡AµM«á¦bVFPÀ³¥Îµ{¦¡»P¡§¬d¸ß¡¨¤u§@ªí³æªº¡§½Òµ{¦W¡¨³æ®æ¤§¶¡§Î¦¨¡§¼öÃìµ²¡¨¡A·í¡§½Òµ{¦W¡¨³æ®æ¤º®e§ïÅܮɡA±N¦Û°Ê°õ¦æ
¡§GetData¡¨¹Lµ{¡C¦b¸Ó¹Lµ{¤¤­º¥ýª½±µÀò¨úDDE¸ê®Æ¡A¦pªG¸Ó¸ê®Æ爲¡§ªÅ¡¨¡A«hÃö³¬EXCEL¡Aµ{¦¡µ²§ô¡F¤Ï¤§¡A§Q¥ÎDDEPOKE¥\¯à¦VEXCELµo°eÁä½L©R¥O¦ê¡A¥H§Î¦¨·sªº¤u§@ªí¡A³Ì«áVFP±N¬d¸ßµ²ªG³q¹L°Å¤ÁªO°eEXCEL§Î¦¨­n¨Dªº¤u§@ªí¡C

PUBLIC ExcelChan
PUBLIC SheetChan

RUN /N3 C:\Program Files\Microsoft Office\Office\EXCEL.EXE && ¥H¡§¬¡°Ê¡¨»P¡§³Ì¤j¤Æ¤è¦¡啓°ÊEXCEL
ExcelChan = DDEInitiate("Excel",'SYSTEM') && ªì©l¤ÆDDE³q¹DExcelChan
= DDEExecute(ExcelChan,'[Open("d:\vfp\VFP¥æ¤¬.xls")]') && ¥´¶}¡§VFP¥æ¤¬.xls¡¨

SheetChan = DDEInitiate('Excel', '¬d¸ß') && ªì©l¤ÆDDE³q¹DSheetChan
= DDEAdvise(SheetChan, '½Òµ{¦W', 'GetData', 2) && ¦bVFPÀ³¥Îµ{¦¡»P¡§¬d¸ß¡¨¤u§@ªí³æªº¡§½Òµ{¦W¡¨³æ®æ¤§¶¡§Î¦¨¡§¼öÃìµ²¡¨¡I¦pªG¸Ó³æ¤¸¼Æ­È§ïÅÜ¡A«h°õ¦æ¡§GetData¡¨¹Lµ{¡C

PROCEDURE GetData
PARAMETERS Channel, Action, Item, Data, Format, Advise
IF Action = 'ADVISE' .AND. Item = '½Òµ{¦W' && ¦øªA¾¹´£¨ÑªºÃìµ²¦W爲¡§½Òµ{¦W¡¨
SLesson = Data && ª½±µÀò¨úDDE¦øªA¾¹´£¨Ñªº¸ê®Æ
SLesson = LEFT(SLesson,LEN(SLesson)-2) && ¥h±¼­ì©l¸ê®Æ§À³¡ªº®æ¦¡¦r¤¸
IF (LEN(SLesson)=0) && ¦pªG«ü©w³æ®æ¤º®e爲¡§ªÅ¡¨¡A«h°h¥X
= DDETerminate(SheetChan) && ²×¤îDDE³q¹DSheetChan
= DDEExecute(ExcelChan,'[Quit]') && °h¥XEXCEL
= DDETerminate(ExcelChan) && ²×¤îDDE³q¹DExcelChan
ELSE
= DDEExecute(ExcelChan,'[Formula.Goto("½Òµ{¦W")]') && «ü©w¦W爲¡§½Òµ{¦W¡¨
ªº³æ®æ爲¬¡°Ê³æ®æ
= DDEExecute(ExcelChan,'[Copy]') && ±N«ü©w³æ®æ¤º®e«þ¨©¦Ü°Å¤ÁªO
SKey="'%IW%OHR^V{enter}'" && Áä½L©R¥O¦r¦ê¡Aªí¥Ü¡§´¡¤J¡]I¡^|¤u§@ªí(W)¡F®æ¦¡(O)|¤u§@ªí(H)|­«©R¦W(R)¡FÖ߶K¡¨
= DDEExecute(ExcelChan,&SKey) && ³q¹LDDE³q¹D±N©R¥O¦ê°eEXCEL
WAIT WINDOW TIMEOUT 2 && µ¥«Ý2¬íÄÁ¥H¹ê²{¤W­z©R¥O¦ê
SCommand = "SELECT ¾Ç¸¹,»y¤å,¼Æ¾Ç FROM d:\vfp\¾Ç¥Í¦¨ÁZªí WHERE " +ALLTRIM(SLesson) + "<60 INTO CURSOR TEMP" && §Î¦¨VFP¬d¸ß©R¥O¦ê
&Scommand && °õ¦æVFP©R¥O¦ê
_VFP.DataToClip("TEMP",,3) && ±N·j¯Áµ²ªG¥H¤å¥»¤è¦¡«þ¨©¦Ü°Å¤ÁªO

SheetChan1 = DDEInitiate("Excel",'&SLesson') && ªì©l¤ÆDDE³q¹DSheetChan1
«ü¦V·s¥Í¦¨ªº¤u§@ªí
= DDEExecute(SheetChan1,'[Paste]') && Ö߶K·j¯Áµ²ªG
= DDETerminate(SheetChan1) && ²×¤îDDE³q¹DSheetChan1
ENDIF

_________________
§Q¥Î>>·j´M<<ªº¥\¯à·|¤ñ°ÝªºÁÙ­n§Ö±o¨ìµª®×.
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§ µo°e¹q¤l¶l¥ó
Ruey



µù¥U®É¶¡: 2003-03-12
¤å³¹: 1698
¨Ó¦Û: tunglo

²Ä 6 ¼Ó

µoªíµoªí©ó: ¬P´Á¤» ¤K¤ë 09, 2003 8:13 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

Excel Automation
http://www.universalthread.com/Magazine/September2002/Page45.asp

³o½g¤å³¹«D±`¤£¿ù

_________________
#############################
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~­ì¨Ó©¯ºÖ¨º»ò²³æ!!

¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
#############################
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
goto-dream



µù¥U®É¶¡: 2004-05-11
¤å³¹: 909


²Ä 7 ¼Ó

µoªíµoªí©ó: ¬P´Á¥| ¤E¤ë 23, 2004 5:01 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

¸É¥R

«Ø¥ß¥¨¶°½d¨Ò
http://www.cc.ncku.edu.tw/course/vba_course/


§Ö³t²£¥Í¤ÀªR³øªí- Excel 2000¼Ï¯Ã¤ÀªRªí
http://edu.uuu.com.tw/article/010129a.htm

_________________
ºÖ¶©©÷²b¤ô¦³­­¤½¥q--²b¤ô¾¹ªº±M®a,²b¤ô¾¹,¶¼¤ô¾÷,Âo¤ß!!

·Q¤F¸Ñ§ó¦h¡A±z¥i¤W©¯ºÖÂû´ö²Õ.§ä´M!!¤BæXÞ±.¦Ñ®v.

¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@·R§@¹Ú
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§ µo°e¹q¤l¶l¥ó
cityhe4520



µù¥U®É¶¡: 2004-09-15
¤å³¹: 28


²Ä 8 ¼Ó

µoªíµoªí©ó: ¬P´Á¤­ ¤E¤ë 24, 2004 12:28 am    ¤å³¹¥DÃD: ¶WÁ !! ¤Þ¨¥¦^ÂÐ

¯uªº¤Ó¦n¤H, À°§U§Ú­Ì·s¤â, ¶W¦hÁ§A­Ì°ª¤âªººB´n !!
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
KKKLYNN



µù¥U®É¶¡: 2004-09-17
¤å³¹: 357


²Ä 9 ¼Ó

µoªíµoªí©ó: ¬P´Á¤» ¤E¤ë 25, 2004 9:47 am    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

°¸µM¶i¤J
¬Ý¨ì¼ö¤ß¤SµL¨pªº¤H
¯u¬O¤Ó¦n¤F Razz
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
symis



µù¥U®É¶¡: 2006-11-03
¤å³¹: 39


²Ä 10 ¼Ó

µoªíµoªí©ó: ¬P´Á¤­ ¤@¤ë 19, 2007 10:35 am    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

Excel Automation
http://www.universalthread.com/Magazine/September2002/Page45.asp

«Ø¥ß¥¨¶°½d¨Ò
http://www.cc.ncku.edu.tw/course/vba_course/

³o2½g¤w³sµ²¤£¨ì...¶ã...½Ö¦³«O¯dªº? ¥i§_PO¤W¨Ó?
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
oldvbman



µù¥U®É¶¡: 2007-10-19
¤å³¹: 13


²Ä 11 ¼Ó

µoªíµoªí©ó: ¬P´Á¤­ ¤Q¤ë 19, 2007 6:04 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

«æ»Ý¤F¸ÑVFP,·PÁ¤À¨É
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
ufochen



µù¥U®É¶¡: 2003-09-17
¤å³¹: 165


²Ä 12 ¼Ó

µoªíµoªí©ó: ¬P´Á¤é ¤Q¤G¤ë 16, 2007 11:30 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

½Ð°Ý¤@¤U??
¦³¤Hª¾¹D¦p¦ó±qVFP¤¤³]©w¤w¦s¦b¤§ EXECL ¤u§@ªí
¸Ì­±¤§Àx¦s®æ®æ¦¡-->¼Æ­È--->¨Ï¥Î¤d¦ìªí¥Ü(,)--->¦rÅ鬰¬õ¦â,¦¡¼Ë¬°-1234
ÁÂÁÂ!
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
LiuRambo



µù¥U®É¶¡: 2007-11-27
¤å³¹: 481


²Ä 13 ¼Ó

µoªíµoªí©ó: ¬P´Á¤@ ¤­¤ë 19, 2008 2:58 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

¨ü¯q­ê²L
·P¿E¤£ºÉ°Ú ^o^


¸É¥R¤@¤U
VFP6¸Ì­±­nÃö³¬WORD»PEXCEL¤å¥ó®É
­n§ï¦¨eole.quit()


LiuRambo ¦b ¬P´Á¥| ¤­¤ë 29, 2008 4:34 pm §@¤F²Ä 1 ¦¸­×§ï
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§ MSN Messenger
¤p®á¡EµL²ª



µù¥U®É¶¡: 2003-07-08
¤å³¹: 304
¨Ó¦Û: Tainan, Taiwan

²Ä 14 ¼Ó

µoªíµoªí©ó: ¬P´Á¤­ ¤­¤ë 23, 2008 2:36 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

ufochen ¼g¨ì:
½Ð°Ý¤@¤U??
¦³¤Hª¾¹D¦p¦ó±qVFP¤¤³]©w¤w¦s¦b¤§ EXECL ¤u§@ªí
¸Ì­±¤§Àx¦s®æ®æ¦¡-->¼Æ­È--->¨Ï¥Î¤d¦ìªí¥Ü(,)--->¦rÅ鬰¬õ¦â,¦¡¼Ë¬°-1234
ÁÂÁÂ!


(...).NumberFormatLocal = "#,##0_ ;[¬õ¦â]-#,##0 "

_________________
¥Î¤O Try ¤@¤U...¥i¥Hµo²{«Ü¦h¦nª±ªº¨Æ....
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§ µo°e¹q¤l¶l¥ó ¶®ªê°T®§³q MSN Messenger
IORI71721



µù¥U®É¶¡: 2009-06-09
¤å³¹: 15


²Ä 15 ¼Ó

µoªíµoªí©ó: ¬P´Á¥| ¤K¤ë 20, 2009 8:40 am    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

·PÁ¼ӥDµL¨pªº¤À¨É ¯uªºÀ°¤F¤£¤Ö¦£
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
±q¤§«eªº¤å³¹¶}©lÅã¥Ü:   
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï ©Ò¦³ªº®É¶¡§¡¬° ¥x¥_®É¶¡ (GMT + 8 ¤p®É)
«e©¹­¶­± 1, 2  ¤U¤@­¶
²Ä1­¶(¦@2­¶)

 
«e©¹:  
±z µLªk ¦b³o­Óª©­±µoªí¤å³¹
±z µLªk ¦b³o­Óª©­±¦^ÂФ峹
±z µLªk ¦b³o­Óª©­±½s¿è¤å³¹
±z µLªk ¦b³o­Óª©­±§R°£¤å³¹
±z µLªk ¦b³o­Óª©­±¶i¦æ§ë²¼
±z µLªk ¦b³o­Óª©­±ªþ¥[ÀÉ®×
±z µLªk ¦b³o­Óª©­±¤U¸üÀÉ®×


Powered by phpBB © 2001, 2005 phpBB Group
¥¿Å餤¤å»y¨t¥Ñ phpbb-tw ºûÅ@»s§@