2016-06-21 24 views
1

以下のコードは、ファイル名が命名規則に近いものであれば、開いているExcelファイルをループし、if文でコードを実行して、後で保存しますVBA Excel - .Windowは開いているExcelのウィンドウを認識しません

このコードはExcel 2003で動作しますが、Excelの各部ではなく、myWindow.Captionは5つではなく1つのファイル名しか表示されません。私は2010年のすべてのファイルをループするのに何が欠けていますか?

FYI - Forループの複数のインスタンスがありますが、すべて同じコードなので、ここに貼り付けられません。あなたがそれを望むなら、私を知ってみましょうが、それは十分に同じ

複数のExcelインスタンスの場合
Sub File_Saver() 
    Dim iFileCount As Integer 
    Dim myWindow As Window 
    Dim r As Integer 

    With Application 
     .DisplayAlerts = False 
     .ScreenUpdating = False 
    End With 

    For Each myWindow In Application.Windows 
     If LCase(myWindow.Caption) Like LCase("CHL?ISS*") Then 

      iFileCount = 1 
      r = 21 

      myWindow.Activate 
      'Set Column 
      c = B 

      GoTo Continue 
      Exit For 
     End If 
    Next myWindow 
+1

を正しく動作させるには、アプリケーションの複数のインスタンスを実行する必要があります...すべてのファイルを開くと、実際にアクティブなブックのキャプション付きで1つのウィンドウに "マージ"されます...各アイテムブックを開いて(開いているブック名をすべて取得する) –

答えて

3

の近くにあるこの答えを見てみましょう: Can VBA Reach Across Instances of Excel?

これは、Excelの1つのインスタンスのために働く:

Dim workBooks as Workbooks  
Dim book As Workbook 
Set workBooks = Application.Workbooks 
For Each book In workbooks 
    If LCase(book.Name) Like LCase("CHL?ISS*") Then 
     iFileCount = 1 
     r = 21 
     book.Activate 
     c = B 
     ' Not sure where the Continue: statement is 
     GoTo Continue 
Exit For 
    End If 
Next 
+0

パンチに私を打つ!これは私がやることです。 – BGeorge

+0

@ ghg565あなたはそれを持っていたと思っていましたが、それは以前と同じことをします、それは1つのファイル名を取得し、ループの次の繰り返しに移動します。 'For'ループのdosntループでも、それはちょうどそれを通り過ぎて実行されます –

+0

If文の中でコードを実行していますか? – ghg565

関連する問題