This may be a little overkill, but I added a few things to your code for error awareness (if someone doesn't want to save the valued workbook for some reason) and I'm not sure what your [ValueData] code does, but I used two lines to convert the sheets to values, I imagine you can still use your code by replacing those lines:
Sub ValueWorkbooks()
Dim w As Workbook, ws As Worksheet, fName As String
Application.ScreenUpdating = False
For Each w In Application.Workbooks
If w.Windows(1).Visible = False Then GoTo nextw 'fixes the hidden workbook issue
For Each ws In w.Worksheets
ws.Cells.Copy
ws.Cells.PasteSpecial xlPasteValues
Next ws
fName = Application.GetSaveAsFilename("Valued " & w.Name, filefilter:="Excel Files (*.xls), *.xls")
If fName = "False" Then GoTo nextw
w.SaveAs Filename:=fName
nextw:
Next w
Application.ScreenUpdating = True
End Sub
The reason you need the "w.Activate" is that your other code, ValueData, will work on whatever worksheet is currently active unless you pass it a worksheet variable and use that. Anyways, let me know if my code helps.
Bookmarks