А если много формул в книге, а так же много книг - файлов
А какая разница? Макрос будет открывать книгу за книгой из указанной папки (возможно и в скрытом режиме), прочитывать их, заменять формулы на значения и сохранять книги по указанному адресу. От кол-ва книг зависит только время выполнения макроса.
ЗЫ Если-бы была такая прога, то она работала-бы по такому-же принципу.
Quote (Гость)
А если много формул в книге, а так же много книг - файлов
А какая разница? Макрос будет открывать книгу за книгой из указанной папки (возможно и в скрытом режиме), прочитывать их, заменять формулы на значения и сохранять книги по указанному адресу. От кол-ва книг зависит только время выполнения макроса.
ЗЫ Если-бы была такая прога, то она работала-бы по такому-же принципу.
Макрос заменяет все формулы на значения во всех файлах на всех листах в указанной папке
Sub УдалитьВсеФормулыВПапке() Dim fd As FileDialog Dim iPath As String Dim iFileName As String Dim iSheet As Worksheet
Set fd = Application.FileDialog(msoFileDialogFolderPicker) ChDir "C:\" With fd .ButtonName = "Выбрать" If .Show = -1 Then iPath = .SelectedItems(1) & Application.PathSeparator Else Exit Sub End If End With Set fd = Nothing
If MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены ???", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub
With Application .ScreenUpdating = False .Calculation = xlCalculationManual '.EnableEvents = False iFileName = Dir(iPath & "*.xls") Do While iFileName$ <> "" With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0) For Each iSheet In .Sheets With iSheet.UsedRange .Value = .Value End With Next .Close saveChanges:=True End With iFileName$ = Dir Loop .EnableEvents = True .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец" End Sub
Макрос заменяет все формулы на значения во всех файлах на всех листах в указанной папке
Sub УдалитьВсеФормулыВПапке() Dim fd As FileDialog Dim iPath As String Dim iFileName As String Dim iSheet As Worksheet
Set fd = Application.FileDialog(msoFileDialogFolderPicker) ChDir "C:\" With fd .ButtonName = "Выбрать" If .Show = -1 Then iPath = .SelectedItems(1) & Application.PathSeparator Else Exit Sub End If End With Set fd = Nothing
If MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены ???", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub
With Application .ScreenUpdating = False .Calculation = xlCalculationManual '.EnableEvents = False iFileName = Dir(iPath & "*.xls") Do While iFileName$ <> "" With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0) For Each iSheet In .Sheets With iSheet.UsedRange .Value = .Value End With Next .Close saveChanges:=True End With iFileName$ = Dir Loop .EnableEvents = True .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец" End Sub
То есть, на каждом листе каждой книги Вы хотите предварительно выделить какие-то диапазоны? Я правильно понял? А зачем тогда этот макрос, если все равно Вы собираетесь эти книги/листы открывать (чтобы диапазоны повыделять) - тогда и повставляйте значениями (2 дополнительных клика мышой). Если очень хочется, то замените With iSheet.UsedRange на With iSheet.Selection
или это вопрос, не относящийся к Вашему предпредыдущему посту (с длинным макросом)? если это вопрос не про тот макрос, а вообще, то для ОДНОГО выделенного диапазона я использую такой макрос
Code
Sub tt() Selection = Selection.Value End Sub
То есть, на каждом листе каждой книги Вы хотите предварительно выделить какие-то диапазоны? Я правильно понял? А зачем тогда этот макрос, если все равно Вы собираетесь эти книги/листы открывать (чтобы диапазоны повыделять) - тогда и повставляйте значениями (2 дополнительных клика мышой). Если очень хочется, то замените With iSheet.UsedRange на With iSheet.Selection
или это вопрос, не относящийся к Вашему предпредыдущему посту (с длинным макросом)? если это вопрос не про тот макрос, а вообще, то для ОДНОГО выделенного диапазона я использую такой макрос