【问题标题】:Apply freeze to excel files using macro for multiple files in folder使用宏对文件夹中的多个文件应用冻结到excel文件
【发布时间】:2020-08-20 10:15:37
【问题描述】:

我有一个文件夹,每天将接收 30 个文件,该文件包含多张工作表,在这些工作表中,一些标题从第 1 行开始,一些从第 5 行开始。我需要根据行标题名称应用冻结,我需要从文件夹外部运行宏。 应用冻结后,我需要自动化将文件发送到客户端的过程。

我尝试了以下但得到错误

“类型不匹配的源VBAProject”

Sub FreezePanes()

Call freeze("*.xlsx", "no")
End Sub

Sub freeze(fileName As String, hide As String)

Dim path As String
Dim srcFile As String

On Error GoTo ErrorHandler
 path = "C:\Users\RadhaRani\Desktop\Excel\"
 srcFile = fileName

Application.ScreenUpdating = False
Dim rng As Range
Dim wks As Workbook
Set wks = Workbooks.Open(path + srcFile)

Set wks = Application.ActiveSheet
For Each ws In Worksheets
    ws.Select
    Set rng = ActiveCell
    Range("A5").Select '<== set Freeze point here
    ActiveWindow.FreezePanes = True
    rng.Select
Next
wks.Select

ActiveWorkbook.Save
    
wks.Close
Set wks = Nothing

【问题讨论】:

  • 如果您在第 5 行有标题,您想使用第 6 行来设置您的 FreezePanes
  • Set wks = Workbooks.Open(path + srcFile) 是有问题的,因为您应该使用&amp; 来连接,而不是+,更重要的是,Workbooks.Open 不适用于通配符。一种选择是使用Dir 来获取文件名。

标签: excel vba


【解决方案1】:

'如果您关闭了 ScreenUpdating,则必须通过将---Application.ScreenUpdating = True---放在代码顶部重新打开它

前 5 行被冻结; 注意:使用标题行下方的行。

Application.Goto Cells(6, 1)
ActiveWindow.FreezePanes = True

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多