2016-11-03 9 views
0

範囲(Workbooks)内で指定されたファイルを開き、そのファイルを更新し、別の範囲(SavedNames)で指定された名前の新しいファイルとして保存してから移動するマクロを作成しようとしています(Workbooks)内の次のセルに移動し、そのセルをリフレッシュして、2番目の範囲(SavedNames)に次のセルの名前を付けて保存します。誰もがそれを中心にソリューションや仕事を持っている場合、私は1つのリストから多数のファイルを別のリストの新しい名前で保存するにはどうすればよいですか?

Public Sub Refresh_All() 

Dim filepathstr As String 
Dim filename As String 
Dim wbk As Workbook 
Dim name As String 

filepathstr = Sheet1.Range("filepath").Value 

For Each cell In Sheet1.Range("workbooks") 

If Not cell.Value = "" Then 

    filename = cell.Value 

    Set wbk = Workbooks.Open(filepathstr & filename, False) 


    ''''**REFRESH**'''''' 
    SAPBexrefresh (True) 

    Application.DisplayAlerts = False 

     For Each cell In Sheet1.Range("SavedNames") 
     If Not cell.Value = "" Then 
     name = cell.Value 

     wbk.SaveAs (name) 
     wbk.Close False 
     End If 
     Next cell 

    Application.DisplayAlerts = True 

End If 

Next cell 

MsgBox "The Macro has finished; BW Reports are refreshed" 


End Sub 

しかしそれは既に使用中の制御変数のために」というエラーメッセージを思い付く私はSavedNamesのために再び「は、それぞれのセルに対して」メソッドを使用することができます範囲と思いました大変感謝しています!

+0

SavedNamesをどこにでも宣言していませんか? – Niclas

+0

また、ループ内で 'cell'を2回使用することはできません。おそらく、cell2 = cellのようなことをしてから、2番目のループでcell2を使いたいと思うでしょう。 'Option Explicit'を使います。 – Niclas

+0

oops申し訳ありません。SavedNamesはカンマで区切ってください。今編集してください。大丈夫です。 –

答えて

0

Forループを別のForループで使用するには、2番目のループに別の変数を使用する必要があります。以下のような何か:

Dim rngOpen As Range 
Dim rngSave As Range 

For Each rngOpen In Sheet1.Range("workbooks") 
    ... 

    For Each rngSave In Sheet1.Range(SavedNames) 
     ... 
    Next rngSave 
Next rngOpen 

しかし...

これは、物事のはかなり面倒な方法のように思えます。 「オープン」名を保存するセルと「保存」名前との間には関係はありませんか?それらは、互いに隣り合っているか、または類似している2つの列にありますか?このような何か:

Open | Save 
Wbk1 | New1 
Wbk2 | New2 
Wbk3 | New3 

もしそうなら、あなたはそれを簡単に時間を持って次の列以上のセルを参照するためにcell.offset(0,1)を使用することができます。

Dim rngOpen As Range 
Dim rngSave As Range 

For Each rngOpen In Sheet1.Range("workbooks") 
    ... 
    wbk.SaveAs filename:=rngOpen.offset(0,1).value   
Next rngOpen 

2番目のループを実行することは逆効果であり、リストの最初のエントリが見つかるだけです。保存名を削除する必要があります。保存名は、別の方法で使用するために使用します。

+0

回答をお寄せいただきありがとうございました。私のファイルがどのように設定されているのか、あなたの代替ソリューションを参考にしてください。私はファイルが新しいファイルのない新しい名前の下に保存されていることを確認するときにうまくいくように見えるコードを実装しましたか? –

+0

ファイル名を含むファイルパス文字列を含めるようにしてください - 'wbk.SaveAs filename:= filepathstr&rngopen.offset(0,1).value' – Werrf

+0

これは完璧です! –

関連する問題