2016-08-17 4 views
0

開いているブックを実行し、各ブックの内容に応じて特定の名前で保存するマクロを作成する方法を教えてください。各ブックはワークシート "ブック1"で一意の列見出しを持つため、セルA1のテキストでブックを決定できます。セルA1 = "Interest"の場合、Y:\ risk \ CCY.csvとしてアクティブブックを保存し、アクティブブックをY:\ risk \ IR.csvとして保存します。開いているブックが条件を満たすまで、開いているすべてのブックをループします。開いているブックを特定の条件を満たすすべてのブックを保存するExcelマクロ

+2

は、あなたがこれを行うには、マクロを記述しようとしたことがあり、またはあなたもExcelが何をしているかを確認する(タスクを完了すると)マクロを記録しようとしている:これを試してみてください? – Clauric

答えて

1

VBAでの経験はありますか?私はマクロレコーダーを使って保存方法を見つけました。私は次のコードを作ってそれをテストしたが、うまくいった。私はそれを2回実行しようとしましたが、ファイルを上書きしたいのであれば私にメッセージが表示されました。しかし、他のエラーハンドリングは組み込まれていません。

Sub SaveWorkbooks() 

Dim WB As Workbook 
Dim FileName As String, FolderPath As String 
Dim SaveWorkbook As Boolean 

FolderPath = "Y:\risk" 
ChDir FolderPath 

For Each WB In Workbooks 
    Select Case WB.Sheets(1).Range("A1").Value 
     Case Is = "Currency" 
      FileName = "CCY" 
     Case Is = "Interest" 
      FileName = "IR" 
     Case Else 
      FileName = "" 
    End Select 
    'Make sure it's not saving not applicable workbooks 
    If FileName <> "" Then SaveWorkbook = True Else SaveWorkbook = False 

    If SaveWorkbook = True Then 
     ActiveWorkbook.SaveAs FileName:=FolderPath & "\" & FileName & ".xlsx", _ 
      FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
    End If 

Next WB 

End Sub 
+0

これに時間を費やしていただき、ありがとうございました。お勧めのコードをありがとうございます。これらのフォーラムは私には新しく、明らかに私は何か誤解しています。面白い発言ではなく、面白​​いです。私はVBAの経験はほとんどありませんが、何十年ものExcel機能と標準的なマクロ記録があります。私は100%働くためのコードを手に入れませんでしたが、私はそれに取り組み、解決できるかどうかを見ていきます。 1つの「ケース」を見つけ、それを2つの異なる名前で保存します。 – user6726550

+0

問題ありません。あなたがその答えが最良の解決策であると分かった場合は、先に進んでそれを受け入れたものとしてマークしてください! – SandPiper

1

私は同意します、これは私の目を読むことを傷つけます。今回は例外を作成します。

Sub SaveWorkbooks() 
Dim workbookObj As Workbook 

For Each workbookObj In Excel.Workbooks 
    If workbookObj.Sheets("Book1").Range("A1").Value = "whatever" Then 
     workbookObj.Save 
     workbookObj.Close 
    End If 
Next workbookObj 

'Clean up 
Set workbookObj = Nothing 
End Sub 
関連する問題