Note: The other languages of the website are Google-translated. Back to English

如何对受保护的工作表中的行进行分组和取消分组?

众所周知,在受保护的工作表中,应用某些操作有很多限制。 例如,我们无法在分组数据和未分组数据之间切换。 有没有一种方法可以对受保护的工作表中的行进行分组或取消分组?

使用VBA代码对受保护的工作表中的行进行分组和取消分组

Office选项卡在Office中启用选项卡式编辑和浏览,并使您的工作更加轻松...
Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%
  • 重用任何东西: 将最常用或最复杂的公式,图表等添加到您的收藏夹中,并在将来快速重用它们。
  • 超过20种文字功能: 从文本字符串中提取数字; 提取或删除部分文字; 将数字和货币转换为英文单词。
  • 合并工具:将多个工作簿和工作表合二为一; 合并多个单元格/行/列,而不会丢失数据; 合并重复的行和总和。
  • 分割工具:根据价值将数据分割成多个工作表; 一本工作簿可转换为多个Excel,PDF或CSV文件; 一列到多列。
  • 跳过粘贴 隐藏/过滤的行; 计数与求和 按背景色; 向多个收件人批量发送个性化电子邮件。
  • 超级过滤器: 创建高级过滤方案并应用于任何工作表; 排序 按星期,日期,频率等 筛选器 用粗体,公式,注释...
  • 超过300种强大的功能; 适用于Office 2007-2019和365; 支持所有语言; 在您的企业或组织中轻松部署。

箭头蓝色右气泡 使用VBA代码对受保护的工作表中的行进行分组和取消分组


也许,没有其他解决该问题的好方法,但是使用VBA代码,请执行以下操作:

1。 激活您要使用的工作表,请确保该工作表尚未受到保护。

2。 然后按住 ALT + F11 键,然后打开 Microsoft Visual Basic for Applications窗口.

3。 点击 插页 > 模块,然后将以下代码粘贴到 模块窗口.

VBA代码:在受保护的工作表中对行进行分组和取消分组

Sub EnableOutlining()
'Update 20140603
Dim xWs As Worksheet
Set xWs = Application.ActiveSheet
Dim xPws As String
xPws = Application.InputBox("Password:", xTitleId, "", Type:=2)
xWs.Protect Password:=xPws, Userinterfaceonly:=True
xWs.EnableOutlining = True
End Sub

4. 然后按 F5 键运行该代码,然后会弹出一个提示框,提醒您输入密码以保护当前工作表。 看截图:

doc-group-in-protected-sheet1

5。 然后点击 OK,您的工作表已受到保护,但是您可以在此受保护的工作表中展开和收缩轮廓符号,请参见屏幕截图:

doc-group-in-protected-sheet1

备注:如果您的工作表已经受到保护,则此代码将不起作用。


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能。 支持Office / Excel 2007-2019和365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能30天免费试用。 60天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (32)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
这似乎工作得很好,但是当我关闭并重新打开工作簿时,我遇到了同样的问题 - 我无法展开折叠的组。
该评论由网站上的主持人最小化
我也有同样的问题,有谁知道怎么解决。 非常感谢
该评论由网站上的主持人最小化
为此,您需要 VBA,最终用户将需要允许宏才能使其正常工作。

按 Alt+F11 激活 Visual Basic 编辑器。

双击左侧项目资源管理器中 Microsoft Excel 对象下的 ThisWorkbook。

将以下代码复制到出现的模块中:



私有子 Workbook_Open()
使用工作表(“Emp 摘要”)
.EnableOutlining = True
.Protect UserInterfaceOnly:=True
结束
END SUB



每次打开工作簿时都会自动执行此代码。
该评论由网站上的主持人最小化
[quote]这似乎很好用,但是当我关闭并重新打开工作簿时,我遇到了同样的问题 - 我无法展开折叠的组。通过 maich[/quote]这件事解决如下 Private Sub Workbook_Open() Dim wsh As Variant For Each wsh In Worksheets(Array("Sheet1", "Sheet2")) wsh.EnableOutlining = True wsh.Protect Password:="260615" , DrawingObjects:=False, _ contents:=True, _ Scenarios:=True, _ AllowFiltering:=True, _ AllowFormattingCells:=True, _ userinterfaceonly:=True Next wsh End Sub
该评论由网站上的主持人最小化
我遇到了同样的问题,一旦我关闭并重新输入工作表,它就不起作用...请逐步说明在哪里以及如何使用这件事解决了如下 Private Sub Workbook_Open() Dim wsh As工作表中每个 wsh 的变体(数组(“Sheet1”,“Sheet2”)) wsh.EnableOutlining = True wsh.Protect Password:="2606 15", DrawingObjects: =False, _ contents:=True, _ 场景: =True, _ AllowFiltering:=True, _ AllowFormattingCells:=True, _ userinterfaceonly:=True Next wsh End Sub
该评论由网站上的主持人最小化
非常感谢兄弟,这真的很好用。非常感谢
该评论由网站上的主持人最小化
你是怎么让它工作的? 我已经尝试将它添加到上面的 VBA 并制作一个不同的模块,但它仍然不起作用。 我需要更改任何代码吗? 就像我正在使用的密码一样,还是需要更改工作表名称?
该评论由网站上的主持人最小化
当我关闭工作簿时,我遇到了同样的问题。 有什么想法可以解决吗?
该评论由网站上的主持人最小化
Private Sub Workbook_Open() 将 wsh 作为工作表中每个 wsh 的变体(数组(“TD_phase_3”,“RS_Phase_2”)) wsh.EnableOutlining = True wsh.Protect Password:="260615",DrawingObjects:=False,_ 内容: =True, _ Scenarios:=True, _ AllowFiltering:=True, _ AllowFormattingCells:=True, _ userinterfaceonly:=True Next wsh End Sub
该评论由网站上的主持人最小化
仍然不确定这是如何工作的。 我是制作一个新模块还是附加到上面的模块?
该评论由网站上的主持人最小化
你能像他们在原始说明中所做的那样,一步一步地把它放在哪里吗? 谢谢你。
该评论由网站上的主持人最小化
你好! 我成功使用了第一个宏,然后遇到了关闭工作簿和宏不再工作的相同问题。 我看到了上面的解决方案,但根本无法让它发挥作用。 你介意带我过去吗? 我是结合这两个代码还是只使用后者? 如果我的密码是“dog”,我是否要替换代码中的某个值? 我只申请一个工作表(“Sheet1”); 我可以在任何地方使用它吗? 提前谢谢了!!
该评论由网站上的主持人最小化
请帮助我,我想在受保护的 Excel 电子表格中折叠和展开一些卷和列。 我怎样才能使用宏来做到这一点? 我已经尝试过您展示的内容,但它们在我的电子表格上不起作用。 请帮忙。
该评论由网站上的主持人最小化
您好,请帮我在受保护的 excel 电子表格中展开和折叠卷和列。 我尝试使用您在上面显示的那些,但它们不起作用。
该评论由网站上的主持人最小化
有没有被问过/回答过? 您可以在代码中的何处指定/更改个人密码?
该评论由网站上的主持人最小化
如何将密码更改为另一个值?
该评论由网站上的主持人最小化
当我使用该命令时,我看到如下所示的错误消息:
私有子 Workbook_Open()
将 wsh 变暗为变体
对于工作表中的每个 wsh(Array("TD_phase_3", "RS_Phase_2"))
wsh.EnableOutlining = True
wsh.Protect Password:="260615", DrawingObjects:=False, _
内容:=真,_
场景:=真,_
AllowFiltering:=True, _
AllowFormattingCells:=True, _
仅用户界面:=真
下一个 wsh
END SUB
运行时错误“9”:
下标超出范围
该评论由网站上的主持人最小化
这有点作用,一旦你关闭并重新打开,它就会停止:(
该评论由网站上的主持人最小化
即使对我来说,还有其他解决方案吗?
该评论由网站上的主持人最小化
子工作簿_Open()
'更新 20140603
将 xWs 调暗为工作表
设置 xWs = Application.ActiveSheet
将 xPws 调暗为字符串
xPws = "rfc" ''Application.InputBox("密码:", xTitleId, "", 类型:=2)
xWs.Protect 密码:=xPws, Userinterfaceonly:=True
xWs.EnableOutlining = True
END SUB
该评论由网站上的主持人最小化
我已经让这段代码工作了。 但是当我关闭并重新打开时,我必须转到开发人员选项卡,选择宏按钮,选择运行并输入密码。

有没有办法从代码中删除密码或自动运行代码会自动运行这个 marco 并输入密码?
该评论由网站上的主持人最小化
要解决在您关闭并再次打开文件后无法在文件中运行的问题,您必须将 VBA 代码粘贴到 Microsoft Excel 对象下的“ThisWorkbook”中,而不是粘贴新模块。 这将在每次打开文件时自动运行宏。
该评论由网站上的主持人最小化
您是否有关于 6 天前讨论的 VBA 代码的视觉效果,以便在 Microsoft 对象而不是新模块下对 ThisWorkbook 进行桃色清理。 返回工作簿时功能丢失
该评论由网站上的主持人最小化
有人可能需要这个,我想我想出了如何做到这一点。

首先,正如@peachyclean 建议的那样,您的代码需要在 Microsoft Excel 对象下的“ThisWorkbook”中编写。
其次,获取@Sravanthi 编写的代码,并粘贴到上述位置。

子工作簿_Open()
'更新 20140603
将 xWs 调暗为工作表
设置 xWs = Application.ActiveSheet
将 xPws 调暗为字符串
xPws = "rfc" ''Application.InputBox("密码:", xTitleId, "", 类型:=2)
xWs.Protect 密码:=xPws, Userinterfaceonly:=True
xWs.EnableOutlining = True
END SUB

问题是您需要在要保护但允许使用分组的工作表上,并保存工作簿并关闭,而不进行保护。 现在如果你打开它,宏会自动启动,它会用密码“rfc”保护工作表。 现在您可以使用分组,工作表受到保护。

对于我的解决方案,我修改了应用的密码,因此您可以在此处重写任何密码:
xPws = "WRITEANYPASSWORDHERE" ''Application.InputBox("密码:", xTitleId, "", 类型:=2)

此外,我不希望在打开文件时激活要保护的工作表,因此我修改了这部分:
设置 xWs = Application.ActiveSheet ->
设置 xWs = Application.Worksheets("WRITEANYSHEET'SNAMEHERE")

现在它像魅力一样工作,名为“WRITEANYSHEET'SNAMEHERE”的工作表受到保护,但分组适用。 从长远来看,我认为问题在于,如果我想修改此文件并保留解决方案,我需要取消保护此工作表以使其在下一次打开时工作。 我想您可以编写另一个宏以在关闭时自动取消保护:)


我希望它有所帮助。
该评论由网站上的主持人最小化
嗨..这创造了奇迹。 我现在唯一卡住的地方是我需要为工作簿中的多张工作表执行此操作。 你能帮忙吗?
该评论由网站上的主持人最小化
这个字符串看起来正是我需要的,因为我对 VBA 一无所知。 我最初能够让它工作,但正如所指出的,一旦你关闭电子表格并重新打开它,它就不再工作了。 如前所述,我尝试在“ThisWorkbook”中编写代码,但我不知道该怎么做。 我可以看到“ThisWorkbook”,但我不知道怎么写。 我看到创建模块的每一种方式,它都会在“Microsoft Excel Objects”文件夹之外的单独“模块”文件夹中创建一个新模块。 有关如何将此代码放入“ThisWorkbook”的任何建议?
该评论由网站上的主持人最小化
强大
该评论由网站上的主持人最小化
如何在受保护的工作表中对行和列进行分组和取消分组?
该评论由网站上的主持人最小化
f*ck,这后来偷了我的excel并私下更改了密码
该评论由网站上的主持人最小化
有没有办法让它在共享工作簿上工作? - 我需要更改曲目,谢谢
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0  产品特性
建议地点