2017-03-15 6 views
2

フォルダ内のワークブックのセットに移動し、それぞれの名前に現在の日付のタブを追加しようとしています。フォルダ内のファイルをループして日付を追加するタブ

以下のコードは、最初のファイルを開き、タブを正しく追加しますが、ループして残りのファイルを開きません。

Sub LoopThroughFolder() 

Dim MyFile As String, Str As String, MyDir As String, Wb As Workbook 
Set Wb = ThisWorkbook 

MyDir = "C:\Users\u558683\Desktop\QA VBA Project\LoopTabs\" 
MyFile = Dir(MyDir & "*.xlsx") 
ChDir MyDir 


Do While MyFile <> "" 

Workbooks.Open (MyFile) 
    TabName = Format(Date, "mmm-yyyy") 'Change the format as per your requirement 

On Error GoTo AddNew 
Sheets(TabName).Activate 
Exit Sub 

AddNew: 
Sheets.Add , Worksheets(Worksheets.Count) 
ActiveSheet.Name = TabName 

ActiveSheet.Previous.Range("A1:AJ4").Copy Destination:=Range("A1") 
ActiveSheet.Previous.Range("AL1:AN500").Copy Destination:=Range("AK1") 

Loop 


End Sub 
+0

はSO、コミュニティが答えを受け入れ、投票を使用する(方法をどのように動作するかをSO見るために** [ツアー]を取る**分を取ってくださいへようこそ)。 – R3uK

答えて

0

2問題:

  1. あなたがあなたの次のファイル名を与えるMyFile = Dir()を逃しました。
  2. あなたはExit Subを使用しましたが、これは治療を続けることなくただちにプログラムから抜け出すことになります。

固定コード:

Sub LoopThroughFolder() 
Dim MyFile As String, Str As String, MyDir As String 
Dim Tb As Workbook, wB As Workbook 
Set Tb = ThisWorkbook 

MyDir = "C:\Users\u558683\Desktop\QA VBA Project\LoopTabs\" 
MyFile = Dir(MyDir & "*.xlsx") 

Do While MyFile <> vbNullString 
    Set wB = Workbooks.Open(MyDir & MyFile) 
    TabName = Format(Date, "mmm-yyyy") 'Change the format as per your requirement 

    On Error Resume Next 
    wB.Sheets(TabName).Activate 
    If Err.Number > 0 Then 
     'AddNewSheet 
     wB.Sheets.Add , wB.Sheets(wB.Sheets.Count) 
     ActiveSheet.Name = TabName 
     ActiveSheet.Previous.Range("A1:AJ4").Copy Destination:=Range("A1") 
     ActiveSheet.Previous.Range("AL1:AN500").Copy Destination:=Range("AK1") 
     wB.Save 
    Else 
    End If 
    On Error GoTo 0 
    wB.Close False 
    MyFile = Dir() 
Loop 

End Sub 
+0

それは完全に機能しました。私はvbaの難しい道をここで学んでいます!いくつかの質問。まず、私が開いたファイルをどのように閉じるか?次に、「* .xlsx」以外のファイルを開くための別の方法がありますか?私の懸念は、人々は、日付タブが追加されていないフォルダ内のファイルを追加することです。 – Eric

+0

@エリック:うれしい!まず最初に、私がコメントの中で言ったように、** [ツアー] **をクリックしてください(それをクリックしてください)、あなたはいくつかの質問をして答えを受け入れていないことを知っています。 ! ;) 次に、ブックを新しいシートに保存する部分を追加しました。そしてファイルを除外するために、シートを追加したい人が一般的な形式の名前付けをしていなければ、他のファイルを除外するのは難しいでしょう。もしあれば、 '" * Common_Part_In_Name * .xlsx "' – R3uK

+0

ありがとう、私は間違いなくツアーに参加します。私は自分のコードを更新してこれを試してみるつもりです。 – Eric

関連する問題