|
WinWedge¿Í ExcelÀÇ ¿¬°á-2
ExcelÀÇ ÀÛ¾÷Ç¥ »óÀÇ ¹öư¿¡ ÆíÀÔµÈ ¸ÅÅ©·Î¿¡ ÀÇÇÏ¿©£¬°èÃø ±â±â¸¦ Á¦¾îÇÏ°í µ¥ÀÌÅÍ ÀоîµéÀÌ´Â ¹æ¹ýÀ»
±â¼úÇÕ´Ï´Ù£®
1. WinWedgeÀÇ ¼³Á¤
µ¥ÀÌÅÍ ÀоîµéÀ̱⸦ ÇÑ °èÃø ±â±âÀÇ Åë½Å
»ç¾ç ¹× ÀÔ·Â µ¥ÀÌÅÍ ±¸Á¶¿¡ ÁØÇÏ¿©£¬WinWedgeÀÇ ¼³Á¤ ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù£®ÀÌ »ùÇÃÀ¸·Î ¾Æ·¡¿Í °°Àº µ¥ÀÌÅ͸¦ »óÁ¤Çϰí ÀÛ¾÷À»
ÁøÇàÇÕ´Ï´Ù£®("WinWedge¿Í ExcelÀÇ ¿¬°á-1"ÀÇ ¼³Á¤°ú µ¿ÀÏÇÕ´Ï´Ù)
| Åë½Å »ç¾ç(Serial Port
Settings) |
¼³Á¤Ä¡ |
| Æ÷Æ®(Connector) |
COM1 |
| Åë½Å ¼Óµµ(Baud Rate) |
9600 |
| µ¥ÀÌÅÍ ±æÀÌ(Data Bits) |
8 |
| ½ºÅé ºñÆ®(Stop Bits) |
1 |
| È帧 Á¦¾î(Flow Control) |
None |
|
ÀÔ·Â µ¥ÀÌÅÍ ·¹ÄÚµå ±¸Á¶(Input Data
Record Structure) |
·¹ÄÚµå °³½Ã À̺¥Æ® (Start Of Record Event) |
Any Character Received |
·¹ÄÚµå Á¾·á À̺¥Æ® (End Of Record Event) |
Carriage Return or CrRf Received |
|
ÀÔ·Â
·¹ÄÚµå ±¸Á¶ (Input Record
Structure)
|
Each record contains multiple delimeted data
fields(°¢ ·¹ÄÚµå´Â º¹¼ö°³·Î ±¸ºÐµÈ µ¥ÀÌÅÍ Çʵ带 °®´Â´Ù.) |
±¸ºÐ ±âÈ£ (Delimiter Character) |
ÄÞ¸¶ (Comma) |
| µ¥ÀÌÅÍ ÇʵåÀÇ ÃÖ´ë °¹¼ö(Maximum Number of Data Fields) |
3 |
À§ ³»¿ëÀ¸·Î ¼³Á¤ÇÑ ÆÄÀÏÀ»
¿©±â¿¡¼´Â£¬"MyConfig.SW3"¶ó´Â ¸íĪÀ¸·Î £¬WinWedge°¡ ¼³Ä¡µÇ¾îÀÖ´Â Æú´õ ³»(µðÆúÆ®·Î´Â C:/Program
Files/WinWedge 32)¿¡ º¸Á¸ÇÕ´Ï´Ù£®
2. Excel 2000ÀÇ ¼³Á¤
ExcelÀ» ½Ãµ¿ÇÏ°í£¬Åø ¸Þ´º·ÎºÎÅÍ
¸ÅÅ©·Î:Visual Basic EditorÀ» ½Ãµ¿ÇÕ´Ï´Ù£®»ðÀÔ ¸Þ´º·ÎºÎÅÍ"Ç¥ÁØ ¸ðµâ"À» ¼±ÅÃÇÏ°í£¬Ç¥½ÃµÈ ÄÚµå À©µµ¿ì¿¡ ¾Æ·¡¿Í °°Àº
Äڵ带 Ä«ÇÇÇϰí, ÆäÀ̽ºÆ®ÇÕ´Ï´Ù£®(ÄÚ¸àÆ®¸¦ Âü°íÇÏ¿©£¬ÀÚ½ÅÀÇ È¯°æ¿¡ ¸Âµµ·Ï ¼öÁ¤ÇÏ¿© ÁÖ¼¼¿ä) ¶ÇÇÑ£¬ÀÌ ÆäÀÌÁöÀÇ ¸»¹Ì¿¡¼ Çϱ⠸ÅÅ©·Î¸¦
Æ÷ÇÔÇÑ Excel ÆÄÀÏÀ» ´Ù¿î ·Îµå ¹ÞÀ» ¼ö Àֱ⠶§¹®¿¡£¬ÀÌÂʵµ ÀÌ¿ëÇϽʽÿÀ.
Global RowPtr
As Long, ColPtr As Long Global Const MyPort = "COM1" 'COM Æ÷Æ® ¹øÈ£´Â ÀÌ¿ë ȯ°æ¿¡ ÇÕÃļ º¯°æÇϽʽÿÀ£® Global Const
CmdLine = "C:\Program Files\WinWedge 32\WinWedge.Exe C:\Program
Files\WinWedge 32\MyConfig.SW3" 'WinWedge ¹× ¼³Á¤ ÆÄÀÏÀÇ
Ä¿¸Çµå ¶óÀÎÀº °¢ÀÚ º¸Á¸Çϰí ÀÖ´Â Ç® ÆÐ½º¸¦ ±â¼úÇϽʽÿÀ£®
Sub WedgeStart() On
Error Resume Next '¿¡·¯¸¦ ¹«½ÃÇϰí WinWedge¸¦
½Ãµ¿ÇÕ´Ï´Ù£® RetVal = Shell(CmdLine) 'À§ÀÇ Ä¿¸Çµå ¶óÀÎÀ¸·Î
WinWedge¸¦ ½Ãµ¿ÇÕ´Ï´Ù£® If RetVal = 0 Then 'WinWedge°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ì£¬¿¡·¯¸¦ Ç¥½ÃÇÕ´Ï´Ù£® Beep: MsgBox ("ÆÄÀÏ
À̸§ WinWedge.Exe°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù") '¿¡·¯ ¸Þ½ÃÁö¸¦
Ç¥½Ã Exit Sub '¸ÅÅ©·ÎÀÇ
Á¾·á End If 'WinWedge°¡
¹ß°ßµÇ¸é Application.Wait Now + 0.00002 '½Ãµ¿¿¡ ÇÊ¿ä·Î ÇÑ ½Ã°£À» ÁÝ´Ï´Ù£® AppActivate
Application.Caption '±× ÈÄ£¬Excel¿¡ Æ÷Ä¿½º¸¦
µÇµ¹¸³´Ï´Ù£® End Sub
Sub DataStart() chan =
DDEInitiate("WinWedge", MyPort) 'WinWedge¿Í DDE ¸µÅ©¸¦
È®¸³ÇÕ´Ï´Ù£® DDEExecute chan, "[SENDOUT('S')]" 'µ¥ÀÌÅÍ ¼ÛÃâÀÇ Æ®¸®°Å·Î µÈ ¹®ÀÚ ¿S¸¦ ½Ã¸®¾ó Æ÷Æ®¿¡ ¼ÛÃâÇÏ°í£¬µ¥ÀÌÅÍ ÀоîµéÀ̱⸦
°³½ÃÇÕ´Ï´Ù£® DDETerminate chan 'DDE
¸µÅ©¸¦ ´ÜÀýÇÕ´Ï´Ù£® Application.Wait Now +
0.000012 '°èÃø ±â±â·ÎºÎÅÍ µ¥ÀÌÅÍ Ãâ·ÂµÈ ¿©À¯¸¦
ÁÝ´Ï´Ù£® StartCollecting
'¼ºê·çƾ"StartCollecting"À» ½ÇÇàÇÕ´Ï´Ù£® End Sub
Sub
StartCollecting() RowPtr = 1: ColPtr = 1 'º¯¼ö
RowPtr£¬ColPtrÀ» ÃʱâÈÇÕ´Ï´Ù£®
Worksheets("Sheet1").Activate 'Sheet1À»
¾×ƼºêÈ ÇÕ´Ï´Ù£® Worksheets("Sheet1").Cells(1, 50).Formula =
"=WinWedge|" & MyPort & "!
RecordNumber" 'Sheet1ÀÇ ¼¿(1,50)°ú
WinWedge¿ÍÀÇ ¸µÅ©¸¦ È®¸³ÇÕ´Ï´Ù£®¼¿¹øÁö´Â ÇÊ¿ä ¿¡ µû¶ó¼
º¯°æ °¡´ÉÇÕ´Ï´Ù£®¿©±â¿¡¼´Â ½ÇÁ¦ÀÇ µ¥ÀÌÅ͸¦ ¹Þ¾Æ µéÀÌ´Â °Í¿¡ ¿µÇâÀÌ ¾ø´Â À§Ä¡¿¡ ¼³Á¤ÇÕ´Ï´Ù.
ActiveWorkbook.SetLinkOnData "WinWedge|" & MyPort &
"!RecordNumber", "GetSWData" ' SetLinkData ¹æ¹ý¿¡
ÀÇÇÏ°í£¬¼ºê·çƾ"GetSWData"¸¦ ½ÇÇàÇÕ´Ï´Ù£® End Sub
Sub
Auto_Close() 'Excel ¿¬½À ¹®Á¦ÁýÀ» ´Ý´Â´Ù¸é ÀÚµ¿ÀûÀ¸·Î
½ÇÇàµË´Ï´Ù£® StopCollecting '¼ºê·çƾ"StopCollecting"¸¦ ½ÇÇàÇÕ´Ï´Ù£® On Error
Resume Next '¿¡·¯¸¦ ¹«½ÃÇϰí
°è¼ÓÇÕ´Ï´Ù£® chan = DDEInitiate("WinWedge", MyPort)
'WinWedge¿Í DDE ¸µÅ©¸¦ È®¸³ÇÕ´Ï´Ù£® DDEExecute
chan, "[Appexit]" 'DDE ¸µÅ©¸¦ ´ÜÀýÇÏ°í£¬DDE
Ä¿¸Çµå[Appexit]¿¡ ÀÇÇÏ¿© WinWedge¸¦ Á¾·áÇÕ´Ï´Ù£® End Sub
Sub
StopCollecting() Worksheets("Sheet1").Activate 'Sheet1À» ¾×ƼºêÇÏ°Ô ÇÕ´Ï´Ù£® Worksheets("Sheet1").Cells(1,
50).Formula = "" '¼¿(1,50)ÀÇ DDE ¸µÅ©¸¦
´ÜÀýÇÕ´Ï´Ù£® ActiveWorkbook.SetLinkOnData "WinWedge|" & MyPort
& "!RecordNumber", "" '
ºó ¹®ÀÚ¿(" ")À» ¸ÅÅ©·Î À̸§¿¡
¹è´ç SetLinkOnData ¹æ¹ýÀÇ ±â´ÉÀ» Á¤ÁöÇÕ´Ï´Ù£® End Sub
Sub
GetSWData() chan = DDEInitiate("WinWedge", MyPort)
'WinWedge¿Í DDE ¸µÅ©¸¦ È®¸³ÇÕ´Ï´Ù£®
MyVariantArray = DDERequest(chan, "Field(1)") 'WinWedgeÀÇ Çʵå 1À¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ Ãëµæ MyString$ =
MyVariantArray(1) '¹®ÀÚ¿·Î º¯È¯ Worksheets("Sheet1").Cells(RowPtr, ColPtr).Formula =
MyString$ '½ÃÆ® 1ÀÇ ¼¿ ¾îµå·¹½º(RowPtr,ColPtr)¿¡ µ¥ÀÌÅ͸¦
ÀÔ·ÂÇÕ´Ï´Ù£® 'ExcelÀÇ ÇÔ¼ö DDERequest´Â µ¥ÀÌÅ͸¦ º¯Çü ÇüÅÂÀÇ
¹è¿À¸·Î¼ ÃëµæÇÕ´Ï´Ù£®À̰ÍÀº ¸»ÇÏÀڸ飬'ExcelÀÇ ½À¼ºÀ̶ó°í ÀÌÇØÇϽʽÿÀ£®±×·¯³ª£¬µ¥ÀÌÅ͸¦ ¼¿¿¡ °ÅµÎ¾îµéÀÎ ¶§´Â ¹®ÀÚ¿ÇüÀÌ ¾Æ´Ï¸é
¾ÊµÇ±â ¶§¹®¿¡£¬À§ÀÇ ÇàÀ¸·Î º¯ÇüÇü ¹è¿ÀÇ ¿ä¼Ò¸¦ ¹®ÀÚ¿·Î º¯È¯Çϰí ÀÖ½À´Ï´Ù£®°ÅµÎ¾îµé¿´´ø µ¥ÀÌÅÍ¿¡ ¾î¶°ÇÑ Ã³¸®¸¦ ½ÇÇàÇÑ °æ¿ì¿¡´Â£¬¿©±â¿¡ ÇÁ·Î±×·¥À» ±â¼úÇÕ´Ï´Ù£®
'Çʵå 2 ÀÌÈÄÀÇ µ¥ÀÌÅ͵µ °ÅµÎ¾îµéÀÎ
°æ¿ì¿¡´Â ¾Æ·¡¿Í °°ÀÌ ±â¼úÇÕ´Ï´Ù£®(ÀÌÇÏ´Â Çʵå 3±îÁöÀÇ ¹Þ¾ÆµéÀ̱â)
MyVariantArray = DDERequest(chan, "Field(2)") 'WinWedgeÀÇ Çʵå 2·ÎºÎÅÍ µ¥ÀÌÅ͸¦ Ãëµæ MyString$ =
MyVariantArray(1) '¹®ÀÚ¿·Î
º¯È¯ Worksheets("Sheet1").Cells(RowPtr, ColPtr + 1).Formula
= MyString$ MyVariantArray = DDERequest(chan, "Field(3)")
'WinWedgeÀÇ Çʵå 3À¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ Ãëµæ
MyString$ = MyVariantArray(1) '¹®ÀÚ¿·Î
º¯È¯ Worksheets("Sheet1").Cells(RowPtr, ColPtr + 2).Formula
= MyString$
DDETerminate chan 'DDE
¸µÅ©¸¦ ´ÜÀýÇÕ´Ï´Ù£® RowPtr = RowPtr + 1 'Çà Æ÷ÀÎÅ͸¦ ¾Æ·¡ÀÇ Çà¿¡ À̵¿ÇÕ´Ï´Ù£® End Sub
Sub
StopData() chan = DDEInitiate("WinWedge", MyPort) 'WinWedge¿Í DDE ¸µÅ©¸¦ È®¸³ DDEExecute chan,
"[SENDOUT('E')]" '¹®ÀÚ E¸¦ ½Ã¸®¾ó Æ÷Æ®¿¡ ¼ÛÃâÇÏ°í£¬µ¥ÀÌÅÍ ¼ÛÃâÀ»
Áß´ÜÇÕ´Ï´Ù£®ÀÌ ÀÌ¿ëÀÇ °èÃø ±â±âÀÇ »ç¾ç¿¡ ÇÕÃļ EÀÇ À§Ä¡¿¡ ¹®ÀÚ ¿µîÀ» ÀÔ·ÂÇÕ´Ï´Ù£® DDETerminate
chan 'DDE ¸µÅ©¸¦ ´ÜÀýÇÕ´Ï´Ù£® End
Sub
Sub Restart() chan = DDEInitiate("WinWedge",
MyPort) 'WinWedge¿Í DDE ¸µÅ©¸¦
È®¸³ DDEExecute chan, "[SENDOUT('S')]" '½Ã¸®¾ó Æ÷Æ®¿¡ ¹®ÀÚ S¸¦ ¼ÛÃâÇÏ°í£¬µ¥ÀÌÅÍ ¼ÛÃâÀ» Àç°³ÇÕ´Ï´Ù£®
DDETerminate chan 'DDE ¸µÅ©¸¦
´ÜÀýÇÕ´Ï´Ù£® End Sub
Sub DataClear()
Columns("A:C").Select 'A ¿·ÎºÎÅÍ C ¿À»
¼±Åà Selection.ClearContents '¼±ÅÃÇÑ ¹üÀ§¸¦
¼Ò°Å Worksheets("Sheet1").Range("A1").Select '¼¿ A1À» ¼±ÅÃÇÕ´Ï´Ù£® End Sub
¸¶Áö¸·À¸·Î ExcelÀÇ Ç¥½Ã
¸Þ´º·ÎºÎÅÍ ¡±Åø ¹Ù:Æû¡±¸¦ ¼±ÅÃÇÏ°í£¬Æû ´ÙÀÌ¾î ·Î±× ¹Ú½º·ÎºÎÅÍ "¹öư"À» ¼±ÅÃÇÏ°í£¬ÀÛ¾÷Ç¥ »ó¿¡ ¹öưÀ» ÀÛ¼ºÇÏ°í£¬°¢°¢¿¡ À§
¸ÅÅ©·Î¸¦ µî·ÏÇÕ´Ï´Ù£® »ùÇà Excel ÆÄÀÏÀº ¾Æ·¡¿¡¼ºÎÅÍ ´Ù¿î ·Îµå ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù£®
»ùÇÃ ÆÄÀÏÀÇ
´Ù¿î ·Îµå £¨43.5KB) *Excel97/2000·Î µ¿ÀÛ È®ÀÎÀ» Çß½À´Ï´Ù£® *ÀÚ±â ÇØµ¿ Çü½ÄÀÇ ¾ÐÃà
ÆÄÀÏÀÔ´Ï´Ù£®´õºí Ŭ¸¯Çϰí ÇØµ¿ÇϽʽÿÀ. |