2012-02-01 119 views
2

因此,假設您有兩個單獨的工作簿在單獨的Excel進程中打開,以便如何訪問其他工作簿並通過VBA對其進行更改?有沒有辦法循環遍歷所有的Excel應用程序,看看他們打開了哪些工作簿?非常感謝!Excel vba從不同的Excel應用程序中訪問工作簿實例

+1

您可以使用windows API枚舉所有窗口並查找與excel實例相對應的窗口,但是沒有簡單的方法可以使用窗口的「句柄」並將其轉換爲VBA中的應用程序引用。更新:看到這裏的一種方法可能適合你http://stackoverflow.com/questions/2971473/can-vba-reach-across-instances-of-excel – 2012-02-02 00:38:15

+0

第二個答案在stackoverflow.com/questions/2971473/從* ForEachLoop *是一個使用。 – brettdj 2012-02-02 09:57:11

回答

0

使用AppActivate和SendKeys找到了一個不太好的解決方案。 SendKeys給宏鍵入一個熱鍵,該宏將包含代碼來完成我希望該工作簿執行的任何操作,例如以有序方式關閉本身,以便第一個應用程序可以打開它。

-1

下面顯示打開的工作簿的名稱,其中的工作表名稱和單元格A1的值。這應該足以讓你去。

Dim InxWB As Long 
    Dim InxWS As Long 
    For InxWB = 1 To Workbooks.Count 
    With Workbooks(InxWB) 
     Debug.Print "Workbook """ & .Name & """ contains the following sheets:" 
     For InxWS = 1 To .Sheets.Count 
      Debug.Print " " & .Sheets(InxWS).Name 
      Debug.Print "  Cell A1 contains: " & _ 
               .Sheets(InxWS).Cells(1, 1).Value 
     Next 
    End With 
    Next 
+4

他的工作簿在Excel的不同實例中:這隻適用於同一實例中的工作簿。 – 2012-02-02 00:21:47

+0

是的。錯過了。 – 2012-02-02 00:23:18