ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ¦³¨â­Ó¿W¥ßEXCEL¡A¦p¦óª¾¹D¤Á´«¨ì¥t¤@­Ó¿W¥ßEXCEL¡H

¦pªG¤â°Ê·s¼W¤@­Ó¬¡­¶Ã¯®É¡A³o­Ó¬¡­¶Ã¯«o¤£·|³Q­pºâ¨ì¡H

¦U¦ì«e½ú­Ì¤j®a¦n¡A

ºÃ°Ý¬O¡G¡y¦pªG¤â°Ê·s¼W¤@­Ó¬¡­¶Ã¯®É¡A³o­Ó¬¡­¶Ã¯«o¤£·|³Q­pºâ¨ì¡HVBA¸Ó¦p¦ó­×¥¿¤~¯àª¾¹D¥¿½Tªº¬¡­¶Ã¯¼Æ¶q¡H ¡z

ºÃ°Ýµo¥Í¦p¤U¡G
§Ú¦³¤@­ÓÀɮצWºÙ¬°A.xlsm¡A¦b¥N½X¤W¼g¤Wdebug.print workbooks.count¯à­pºâ¥X 1 ¡]¹ê»Ú¤W¥u¦³1­ÓexcelÀÉ®×)¡C
¦pªG³o®É¤â°Ê·s¼W¤@­Óexcel·sÀÉ¡A¦bA.xlsm°õ¦ædebug.print workbooks.countÁÙ¬O¥u¯àÅã¥Ü 1 (¹ê»Ú¤W¦³2­ÓexcelÀÉ¡^

½Ð°Ý¦U¦ì«e½ú­Ì¡A¥N½XÀ³¸Ó¦p¦ó­×¥¿¡H½Ð«ü¾É¡A·PÁ¡ã
  1. debug.print workbooks.count
½Æ»s¥N½X

TOP

¦U¦ì«e½ú­Ì¤j®a¦n¡A

ºÃ°Ý¬O¡G¡y¦pªG¤â°Ê·s¼W¤@­Ó¬¡­¶Ã¯®É¡A³o­Ó¬¡­¶Ã¯«o¤£·|³Q­pºâ¨ì¡HVBA¸Ó¦p¦ó­×¥¿¤~¯à ...
justintoolbox µoªí©ó 2015-7-24 07:25


¦U¦ì«e½ú­Ì¡A¹ï©ó¡y¤â°Ê·s¼W¬¡­¶Ã¯¡z«e­±»¡ªº¤£²M·¡¡A©³¤U¦A¸Ô²Ó»¡©ú¡C

¤â°Ê·s¼W¬¡­¶Ã¯ªº¤è¦¡¬°¡G«ö¦íshiftÁä¡A¨Ã¦ba.xlsmÀɤWÂI¤@¤U¥ªÁä¡]¦p¤U¹Ïa)¡A´N·|¥X²{¤@­Ó¬¡­¶Ã¯¤F(¦p¤U¹Ïb)¡C

¥¼©R¦W_°Æ¥».jpg ----¹Ïa
----¹Ïb
=====================================================
¥u¦³¥H¤W³oºØªº¤â°Ê·s¼W¤è¦¡¡Aworkbooks.count¬° 1
¦ý­Y¬O±Ä¥Î¦b a.xlsmªºÀÉ®×-->·s¼W¬¡­¶Ã¯ªº¤è¦¡¡A³o¥i¥H¥¿½T­pºâ¥X¨Ó¬° 2

¤£ª¾¹D¬°¤°»ò·|³o¼Ë¤l¡H

TOP

³o¤@¼h¨Ã«Dworkbooks³á!
¦]¸Ó¬Oworkbooksªºª¨ª¨ application¤~¹ï¡A©Ò¥H¦]¸Ó¨S¦³¿ìªk¥Îapplication.vba¥h­p ...
Min µoªí©ó 2015-7-25 00:32


­ì¨Ó¬O"¤£¦P¼h"ªºÃö«Y¡ã
«D±`·PÁÂMin¤j¸Ñ´b¡I
¤]´£¨Ñ¤@­Ó¸Ñ¨M°ÝÃDªº¤è¦V¡A«D±`·PÁ¡I

¦ý¬O...¦]¬°¹ï¤W¤@¼hAPI¯uªº¤£ÁA¸Ñ¡C
«e½ú­Ì¯à§_¦A´£¿ô¤@¤U³o³¡¤ÀªºÃöÁä¦rÀ³¸Ó¬d¸ß¤°»ò¡H
Åý§Ú¥i¥H§ó²M·¡ªº¥h§ä´Mµª®×¡C·PÁ¡I

TOP

¦^´_ 4# justintoolbox
¦U¦ì«e½ú­Ì¤j®a¦n¡A
¥Ø«e°ÝÃD¡G¦p¦ó¯à§ì¨ì²Ä¤G­Óexcel¨ÃŪ¨úÀɦW¡H
¥´¶}¤u§@ºÞ²z­û¡Aª¾¹D³o¨â­Óworkbook¬O¤£¦P¤@­Óexcel¡C
¤u§@ºÞ²z­û.jpg

¥Î¥H¤U¤èªk¡A¥u¯àŪ¨ú²Ä¤@­ÓexcelªºÀɦW¡]a.xlsm)¡A¥N½XÀ³¸Ó¦p¦ó­×¥¿¤~¯àŪ¨ú²Ä¤G­ÓEXCELÀɦW¡H
«ô°U¡A¦U¦ì«e½ú­Ì¥X¤â¬Û±Ï¡I
  1. Sub ex()
  2. Dim oXL   As Excel.Application
  3. Dim oWB   As Excel.Workbook

  4. Set oXL = GetObject(, "Excel.Application")
  5. For Each oWB In oXL.Workbooks
  6.         Debug.Print oWB.Name
  7. Next

  8. End Sub
½Æ»s¥N½X

TOP

¦^´_  justintoolbox
¦U¦ì«e½ú­Ì¤j®a¦n¡A
¥Ø«e°ÝÃD¡G¦p¦ó¯à§ì¨ì²Ä¤G­Óexcel¨ÃŪ¨úÀɦW¡H
¥´¶}¤u§@ºÞ²z­û ...
justintoolbox µoªí©ó 2015-7-25 10:02


¦U¦ì«e½ú­Ì¤j®a¦n
¥Ø«e§ä¨ì¤F¤èªk¡]¥N½X¦p¤U)¥i¥Hª¾¹D¦³´X­Ó¿W¥ßEXCEL¡]¤£ª¾¹D¸Ó¦p¦óºÙ©I¡A¼È®É¥ýºÙ¬°¿W¥ßEXCEL)¡A
·QÄ~Äò´M®Ú¨s©³ªºª¾¹D¡A¥N½XÀ³¸Ó¦p¦ó­×¥¿¤~¯àª¾¹D²Ä¤G­Ó¿W¥ßEXCELªºÀɦW¡H
  1. Option Explicit
  2. Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias _
  3. "FindWindowExA" ( _
  4. ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
  5. ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  6. Private Declare PtrSafe Function GetDesktopWindow Lib "user32.dll" () As Long

  7. Sub GetXLhWnds() '¸ê®Æ¡Ghttp://www.pcreview.co.uk/threads/getobject-when-more-than-1-excel-is-running.3575757/
  8. Dim n As Long
  9. Dim hWndXL As Long

  10. Do
  11.         hWndXL = FindWindowEx(GetDesktopWindow, hWndXL, "XLMAIN", vbNullString)
  12.         If hWndXL Then
  13.         n = n + 1
  14.         End If
  15. Loop Until hWndXL = 0
  16. Debug.Print "¿W¥ßEXCEL¦³¡G" & n &"­Ó"
  17. End Sub
½Æ»s¥N½X

TOP

¦^´_  justintoolbox

¤£¦n·N«ä¡A­è­è§Ú¶Kªº¦æ¤£³q
§Ú·Ó§Aªº¤èªk¶}±Òexcel¡A¯uªº¤£¦æ
no3-taco µoªí©ó 2015-7-25 12:17


no3-taco«e½ú¡AÁÂÁ§AªºÀ°¦£¡C

§Ú¦³¬d¨ìºô¸ô¤WªºÃþ¦üªº°ÝÃD¡C§Ú§â¥N½X©ñ¦b©³¤U¡]¤W¤@«Êªº¥N½X¬O§Ú¨Ì·Ó¤U­±ªº¥N½X­×¥¿¦Ó¨Ó¡A¥iÅã¥Ü¦h¤Ö­Ó¿W¥ßEXCEL)¡C

´ú¸Õµ²ªG¡G
§Ú¦ba.xlsm°õ¦æ¹L©³¤U¥N½Xªºtestµ{§Ç¡Aµ²ªGdebug.print¥X¨Ó¬O¤@¦êªø¾ã¼Æ¡C
¦pªG³o®É­Ô¡G¡y«ö¤UshitÁä¨Ã¦ba.xlsm«ö¤U¥ªÁä¡z¡A«h·|·s¼W¥X¤@­Ó¿W¥ßªºexcelÀÉ¡C
³o®É­Ô¦ba.xlsm°õ¦ætestµ{§Ç¡A·|¥X²{¨â¦êªø¾ã¼Æ¡C

·P·Q¡G
¥uª¾¹D³o¨â¦ê¦U¥NªíµÛ¨â­Ó¿W¥ßEXCEL¡A¦ý«o¤£ª¾¹D¦p¦ó§Q¥Î¡H
§Ú¦³«ä¦Ò¡G­Yª¾¹D³o¨â¦ê¼Æ¦r¡A´N»¡¤£©w¥i¥H¾Þ±±­Ó§O¿W¥ßEXCEL¤F¡]¤]´N¥i¥Hª¾¹D¥t¤@­Ó¿W¥ßEXCELÀɦW¤F¡^

Àµ½Ð¦U¦ì«e½ú©Î°ª¤â­Ì¡A¥X¤â¬Û±Ï¡ã ·PÁ¡I¡ã
  1. Option Explicit
  2. Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias _
  3. "FindWindowExA" ( _
  4. ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
  5. ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  6. Private Declare PtrSafe Function GetDesktopWindow Lib "user32.dll" () As Long

  7. Sub test()
  8. Dim i As Long
  9. Dim arrXLhWnd() As Long

  10. If GetXLhWnds(arrXLhWnd) Then
  11. For i = LBound(arrXLhWnd) To UBound(arrXLhWnd)
  12. Debug.Print arrXLhWnd(i)
  13. Next
  14. End If

  15. End Sub

  16. Function GetXLhWnds(arrXLhWnd() As Long) As Long
  17. Dim n As Long
  18. Dim hWndXL As Long, hWndDT As Long

  19. ReDim arrXLhWnd(1 To 100) ' cater for 100 potential Excelinstances
  20. hWndDT = GetDesktopWindow

  21. Do
  22. hWndXL = FindWindowEx(hWndDT, hWndXL, "XLMAIN", vbNullString)
  23. If hWndXL Then
  24. n = n + 1
  25. arrXLhWnd(n) = hWndXL
  26. End If
  27. Loop Until hWndXL = 0
½Æ»s¥N½X

TOP

¸Õ¸Õ¬Ý(´ú¸ÕÀô¹Ò : Win7 + Office2013)
azrael19 µoªí©ó 2015-7-25 18:22


«z¡I«z¡I«z¡I¯uªº¤Ó....¤Ó´Î¤F¡I
«D±`·PÁÂazrael19¤j¡A¥X¤â¬Û±Ï¡I¡]³sÀɮ׸ô®|³£À°¦£Â^¨ú¥X¨Ó¤F¡A¤Ó·P°Ê¤F¡I¡^
­ì¨Ó»Ý­n³o»ò¦hªº¥N½X¤~¯àª¾¹DÀɦW(¦½ÃC¤¤...)¡A
¬Ý¨Ó³o»Ý­nªá¤@¨Ç®É¶¡¥h²z¸Ñ»P§l¦¬¡A¦A¦¸·PÁÂazrael19¤j¡I

TOP

³sªþ¤W­ì³ÐªÌµª®×ªº³sµ²³£·|²ö¦W¨ä§®³Q¬å.... µL¨¥
bobomi µoªí©ó 2015-7-26 06:36


¤]«D±`·PÁÂbobomi¤j©n¡I
¬Q¤Ñ§Ú¤]¦³¬Ý¨ì§A¶K¶W³sµ²¡A¥u¬O¤µ¦­´N¨S¬Ý¨£¤F¡A¥i¯à¬O¨t²Îªº°ÝÃD§a¡C

¯à§_¦A´£¨Ñ§A¬Q¤Ñªººô¯¸³sµ²©O¡H
Åý§Ú¤]¤@¨Ö§l¦¬¡A¦A¦¸·PÁ±z¡I

TOP

[µo°Ý] ¦³¨â­Ó¿W¥ßEXCEL¡A¦p¦óª¾¹D¤Á´«¨ì¥t¤@­Ó¿W¥ßEXCEL¡H

¦U¦ì«e½ú­Ì¤j®a¦n¡A

¥H A.xlsm ¬°¤¤¤ß¡]½Ð·f°t¤U¹Ï)¡A­Y¤Á´«¨ì C.xlsx¡]ÄݦP¤@­Ó¿W¥ßEXCEL 1)¡A«h·|IJµo Private Sub Workbook_Deactivate() µ{§Ç¡C
­Y±q A.xlsm ¤Á´«¨ì A2.xlsx¡]ÄÝ©ó¥t¤@­Ó¿W¥ßEXCEL 2)¡A«o¤£·|IJµo Private Sub Workbook_Deactivate() µ{§Ç¡C



¤ß±o¡G
IJµoPrivate Sub Workbook_Deactivate() ¥u¯à¦b¦P¤@­Ó¿W¥ßEXCEL¤ºªº¬¡­¶Ã¯¶¡¤Á´«¡A¤~´N·|°õ¦æ¸Óµ{§Ç¡C
¦ý¡A­Y¬O¤Á´«¥t¤@­Ó¿W¥ßEXCEL®É¡A¹ïA.xlsm¦Ó¨¥¬O¨S¦³Åܤƪº¡C

°ÝÃD¡G
¥N½X¸Ó¦p¦ó­×¥¿¡H¤~¯àª¾¹D¦³¤Á´«¨ì¥t¤@­Ó¿W¥ßEXCEL¡C
½Ð¦U¦ì«e½ú­Ì¥X¤â¬Û±Ï¡I·P®¦¡I
  1. Private Sub Workbook_Deactivate()
  2. msgbox "¦³¤Á´«"  
  3. End Sub
½Æ»s¥N½X

¦U¦ì«e½ú­Ì¤j®a¦n¡A

¥H A.xlsm ¬°¤¤¤ß¡]½Ð·f°t¤U¹Ï)¡A­Y¤Á´«¨ì C.xlsx¡]ÄݦP¤@­Ó¿W¥ßEXCEL 1)¡A«h·|IJµo ...
justintoolbox µoªí©ó 2015-7-26 07:05


¦U¦ì«e½ú­Ì¡A¤£ª¾¹D¯à§_°µ¨ì ¤Á´«¨ì¥t¤@­Ó¿W¥ßEXCEL®ÉIJµoµ{§Ç¡H
«ô°U¦U¦ì°ª¤â«e½ú­Ì¸Ñ´b¡I

TOP

        ÀR«ä¦Û¦b : ¤@¥y·Å·xªº¸Ü¡A´N¹³©¹§O¤H¨­¤WÅx­»¤ô¡A¦Û¤v·|ªg¨ì¨â¤Tºw¡C
ªð¦^¦Cªí ¤W¤@¥DÃD