Vba 循环浏览文件夹中的所有excel工作簿,并将所有公式转换为值

Vba 循环浏览文件夹中的所有excel工作簿,并将所有公式转换为值,vba,excel,Vba,Excel,我正在寻找一个VBA代码,该代码允许我在某个文件夹中循环浏览所有Excel工作簿,并为每个工作簿将每个工作表中的单元格从公式转换为值 使用以下代码在用户指定文件夹中的所有工作簿中循环,并执行以下操作: 它将打开工作簿 它在工作簿中的每个工作表(包括隐藏的工作表)中循环,并将包含公式的每个单元格转换为值 执行转换后,它会保存并关闭工作簿,然后转到文件夹中的下一个工作簿 见下面的代码: Sub LoopAllExcelFilesInFolderCancelFormulas() 'Purpose: T

我正在寻找一个VBA代码,该代码允许我在某个文件夹中循环浏览所有Excel工作簿,并为每个工作簿将每个工作表中的单元格从公式转换为值

使用以下代码在用户指定文件夹中的所有工作簿中循环,并执行以下操作:

  • 它将打开工作簿

  • 它在工作簿中的每个工作表(包括隐藏的工作表)中循环,并将包含公式的每个单元格转换为值

  • 执行转换后,它会保存并关闭工作簿,然后转到文件夹中的下一个工作簿

  • 见下面的代码:

    Sub LoopAllExcelFilesInFolderCancelFormulas()
    'Purpose: To loop through all Excel files in a user specified folder and convert all formulas to values
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim myPath As String
    Dim myFile As String
    Dim myExtension As String
    Dim FldrPicker As FileDialog
    
    'Optimize Macro Speed
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    'Disable Excel Pop-up messages:
    Application.DisplayAlerts = False
    
    'Retrieve Target Folder Path From User
    Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
    
    With FldrPicker
       .Title = "Select A Target Folder"
       .AllowMultiSelect = False
       If .Show <> -1 Then GoTo NextCode
       myPath = .SelectedItems(1) & "\"
    End With
    
    'In Case of Cancel
    NextCode:
    myPath = myPath
    If myPath = "" Then GoTo ResetSettings
    
    'Target File Extension (must include wildcard "*")
    myExtension = "*.xls*"
    
    'Target Path with Ending Extention
    myFile = Dir(myPath & myExtension)
    
    'Loop through each Excel file in folder
    Do While myFile <> ""
       'Set variable equal to opened workbook
       Set wb = Workbooks.Open(Filename:=myPath & myFile)
    
       'Ensure Workbook has opened before moving on to next line of code
       DoEvents
    
       For Each ws In wb.Sheets
           ws.UsedRange.Value = ws.UsedRange.Value
       Next
    
       'Save and Close Workbook
       wb.Close SaveChanges:=True
    
       'Ensure Workbook has closed before moving on to next line of code
       DoEvents
    
       'Get next file name
       myFile = Dir
    Loop
    
    'Message Box when tasks are completed
    MsgBox "Task Complete!"
    
    ResetSettings:
    'Reset Macro Optimization Settings
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
    
    End Sub
    
    Sub-loopalExcelFileSinFolderCancelFormulas()
    '用途:循环浏览用户指定文件夹中的所有Excel文件,并将所有公式转换为值
    将wb设置为工作簿
    将ws设置为工作表
    将myPath设置为字符串
    将myFile设置为字符串
    Dim myExtension作为字符串
    Dim FldrPicker As FILE对话框
    '优化宏速度
    Application.EnableEvents=False
    Application.Calculation=xlCalculationManual
    '禁用Excel弹出消息:
    Application.DisplayAlerts=False
    '从用户检索目标文件夹路径
    Set FldrPicker=Application.FileDialog(msoFileDialogFolderPicker)
    用FldrPicker
    .Title=“选择目标文件夹”
    .AllowMultiSelect=False
    如果.Show-1,则转到下一个代码
    myPath=.SelectedItems(1)和“\”
    以
    "如果取消,
    下一个代码:
    myPath=myPath
    如果myPath=”“,则转到重置设置
    '目标文件扩展名(必须包含通配符“*”)
    myExtension=“*.xls*”
    '具有结束扩展名的目标路径
    myFile=Dir(myPath&myExtension)
    '循环浏览文件夹中的每个Excel文件
    当我的文件“”时执行此操作
    '将变量设置为等于打开的工作簿
    设置wb=Workbooks.Open(文件名:=myPath&myFile)
    '在继续下一行代码之前,确保工作簿已打开
    多芬特
    对于wb.Sheets中的每个ws
    ws.UsedRange.Value=ws.UsedRange.Value
    下一个
    '保存并关闭工作簿
    wb.Close SaveChanges:=真
    '在继续下一行代码之前,确保工作簿已关闭
    多芬特
    '获取下一个文件名
    myFile=Dir
    环
    '任务完成时的消息框
    MsgBox“任务完成!”
    重置设置:
    '重置宏优化设置
    Application.EnableEvents=True
    Application.Calculation=xlCalculationAutomatic
    Application.DisplayAlerts=True
    端接头
    

    循环浏览特定文件夹中所有工作簿的代码基于以下内容。

    这不是查看的地方。我们可以帮助您修复代码,但我们不是来为您编写代码的。