2017-01-16 3 views
0

私は、1つのフォルダに約50 Excelシートを持つExcelファイルの名前を変更し、複数で同じExcelのマクロを実行しますそれらすべてで次のマクロ:オープン、私のMacBookに

Sub SmartCopy() 
Dim s1 As Worksheet, s2 As Worksheet 
Dim N As Long, i As Long, j As Long 
Set s1 = Sheets("s1") 
Set s2 = Sheets("s2") 
N = s1.Cells(Rows.Count, "Y").End(xlUp).Row 
j = 1 
For i = 1 To N 
    If s1.Cells(i, "Y").Value = "No" Then 
    Else 
     s1.Cells(i, "Y").EntireRow.Copy s2.Cells(j, 1) 
     j = j + 1 
    End If 
Next i 

End Subの

私はまた、各シートは、このように命名され、ファイルパスが認識されませんほとんどのように、シートが開くことを得るのに苦労しています:

のビジネス上場-002-W-site.csv一つのタブと

ビジネス上場-002-W-site.csv

だから私もどちらか1)シートの名前を変更する必要があります毎回2)マクロにワークブック内の唯一のシートを開きます。

すべてのワークブックのすべてのデータを1つのマスターにコピーしたいとします。私は自分のマクロを追加しようとしましたが、これを適応させましたが、まったく動かすことができません。

link to another post

答えて

0

ブック(ファイル)だけではなく、シート(タブ)を定義する必要があります。

Dim filePath as String 
Dim sheetStart as String 
Dim count as Integer 
Dim sheetEnd as string 
Dim thisSheet as Worksheet 
Dim wb1 as Workbook 
Dim ws1 as Worksheet 


filePath = "/Users/myusername/Desktop/Tidy/folder/" 
sheetStart = "business-listing-" 
sheetEnd = "-w-site" 
Set thisSheet as ThisWorkbook.Worksheets("Sheet1") 


For count = 1 to 44 'the range of sheets you have 
    Set wb1 = Workbooks.Open(filePath & sheetStart & format(count, "000") & sheetEnd & ".csv") 
    Set ws1 = wb1.Worksheets(sheetStart & format(count, "000") & sheetEnd) 

    'move the ranges you want from ws1 to thisSheet 

    wb1.close 
next count 

コードがループするたびに、開いているファイル名と探しているシートが変更されます。

あなたが提供したオリジナルのコードに基づいて、ws1からthisSheetの次の利用可能な行に範囲をコピーする方法を知っているか、見つけることができます。

は、私はまだこれが仕事を得ることができないコメント

+0

に基づいて改善したコードを編集しました。簡単な言葉で言えば、私は名前を知らない多くのワークブックをループする必要があります。また、それぞれのタブの名前もわかりません。次に、列Jを探し、その列の「いいえ」エントリを見つけてこれらの行のみを選択し、それらをすべて1つのマスターシートに配置することによって、データをソートする必要があります。 –

+0

論理的な順序で名前がありますか?すなわち、ビジネスリスティング-002-site-w、ビジネスリスティング-003-site-w、..004 ...など? – MisterO

+0

これは実際にはいですが、フォルダ内のファイルを開く方法があると思いました。もちろん、私はあらゆる解決策をとるでしょう!実際のファイルは、 "business-listing-000-w-site"から "business-listing-041-w-site"までです。 –

関連する問題