【问题标题】:How to set FreezePanes property of the Windows class?如何设置 Windows 类的 FreezePanes 属性?
【发布时间】:2021-03-21 07:35:15
【问题描述】:

我非常依赖“Microsoft Project”。我的大多数同事都没有“Microsoft Project”,所以我使用 VBA 将项目进度表导出到 Excel。

有时,我会遇到此错误消息

“无法设置windows类的FreezePanes属性”

部分VBA代码如下。

Dim xlSheet As Excel.Worksheet

xlwindow.Split = True
xlwindow.SplitColumn = AbsoluteColumnPos - 1
xlwindow.SplitRow = 3

xlwindow.FreezePanes = True  ' **

我不知道如何解决这个错误,但它总是在某个时候消失。
我可以通过在 Microsoft Word 中使用此 VBA 代码进行测试来检查这是否特定于从 Project 到 Excel 的迁移。

Sub Excel_Test()

Dim xlApp As Object

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.Activesheet.Range("B3") = 5

With xlApp.ActiveWindow
    .Split = True
    .SplitRow = 4
    .SplitColumn = 11
    .FreezePanes = True
End With

End Sub

同样的错误信息

"无法设置 windows 类的 freezepanes 属性"

一直出现。

【问题讨论】:

    标签: excel vba ms-project


    【解决方案1】:

    首先,你不应该需要这一行:

    xlwindow.Split = True
    

    其次,您可能会先尝试解冻,因为我不能 100% 确定您的代码是否完整,因此您在此处发布的内容可能会发生什么情况,以及是否可能已经冻结操作。换句话说,试试:

    xlwindow.FreezePanes = False
    
    xlwindow.SplitColumn = AbsoluteColumnPos - 1
    
    xlwindow.SplitRow = 3
    
    xlwindow.FreezePanes = True
    

    【讨论】:

    • 感谢您的反馈。但是,我总是通过在“FreezePanes = True”之前在 Project 和 Word 中添加“FreezePanes = False”来尝试您的建议,但它不起作用。那么,会不会更像是系统错误?
    • 我负责一个 25,000 行的 Excel“应用程序”,它与 Project 有重要的接口,以及一个对窗口的排列方式非常挑剔的客户,这就是我被画的原因你的问题,但我自己没有遇到过这个问题。 On Error Resume Next(或 GoTo)是否以用户可接受的方式处理它?
    • 如果下次出现错误我会尝试。谢谢!
    • 嗨,我终于(?)遇到了错误。所以我添加了“Does On Error Resume Next”。效果很好!尽管我不得不对提取的 Excel 表格进行一些手动调整,但这是一项微不足道的小任务。非常感谢!
    • 优秀 :) 请随时接受答案 :)
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2013-07-16
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多