【问题标题】:Unhide the same named sheet in multiple closed workbooks在多个关闭的工作簿中取消隐藏同名工作表
【发布时间】:2020-04-16 21:17:55
【问题描述】:

我希望在多个工作簿中取消隐藏完全相同的命名工作表。该工作表称为 ADMIN_Export。所有工作簿都在同一个目录中。

我环顾四周,找不到完全适合这个的东西,一直在尝试用有限的编码背景来解决它,并且已经接近了。这很接近:How can I run one VBA macro on all the (closed) Excel files in a folder?

所以我正在使用这个,但需要实际的

Sub unhide()
   Dim myfiles, wb As Workbook, ws As Worksheet
   myfiles = Dir(Thisworkbook.Path & "\*.xlsx")
   Do While Len(myfiles) <> 0
       Debug.Print myfiles
       '~~> Should this be read-only? Or just regular open?
       Set wb = Workbooks.Open(Thisworkbook.Path & "\" & myfiles, , True)
       '~~> This is where I need help with unhiding
       wb.Close False
       Set wb = Nothing '~~> clean up
       myfiles = Dir
   Loop   
End Sub

提前感谢您的帮助。

【问题讨论】:

  • 您需要打开文件才能执行此操作。这可以在后台在 VBA 中完成,因此用户不会看到很多文件被打开,但您必须打开它们。然后请edit您的问题并显示您尝试过的确切代码以及您在代码中卡住或错误的确切位置。只有当我们看到 您的 代码时,我们才能提供帮助,任何指向类似代码的链接都无法帮助您。另见How to Askminimal reproducible example
  • 谢谢,这就是我想要的。刚刚更新了问题。
  • 您是否研究过如何取消隐藏工作表?应该有数百个例子。然后,您只需在打开工作簿后填写即可。当然,您需要定期打开工作簿(非只读),否则您无法保存更改。此外,在关闭它之前,您应该保存工作簿,否则更改会丢失。你真的应该试一试,这对初学者来说是一件容易的事。如果您有具体问题,请随时提出。
  • 研究提示:Unhide worksheet 您只需将其与问题中的代码结合起来即可。
  • 谢谢,我可以半手动完成,因为无法保存。暂时的。非常感谢。

标签: excel vba


【解决方案1】:

实际上这应该可行:

Sub unhide()
   Dim myfiles, wb As Workbook, ws As Worksheet

   myfiles = Dir(ThisWorkbook.Path & "\*.xlsm")

   Do While Len(myfiles) <> 0
       Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & myfiles)
       wb.Sheets("ADMIN_Export").Visible = xlSheetVisible

       wb.Save
       wb.Close False
       'or instead of save use wb.Close True

       Set wb = Nothing
       myfiles = Dir
   Loop
End Sub

【讨论】:

  • 效果很好。比我的好多了!再次感谢 Peh,感谢您推动我更加努力(说真的,这很有帮助,我已经给了它大约一个小时,并且即将放弃)
【解决方案2】:
Sub unhide()
   Dim myfiles, wb As Workbook, ws As Worksheet
   myfiles = Dir(ThisWorkbook.Path & "\*.xlsm")
   Do While Len(myfiles) <> 0
       Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & myfiles, , True)
       Workbooks.Open myfiles
       Sheets("ADMIN_Export").Visible = True
       wb.Close True
       Set wb = Nothing
       myfiles = Dir
   Loop
End Sub

【讨论】:

  • 请注意Workbooks.Open myfiles 将打开工作簿两次,因为您已经在Set wb = Workbooks.Open(ThisWorkbook.Path &amp; "\" &amp; myfiles, , True) 中打开它,您只需删除那里的True 使其只读。它应该是wb.Sheets("ADMIN_Export").Visible = xlSheetVisible 看我的回答。 • 您收到错误,因为wb 以只读方式打开(因为True 作为 3ʳᵈ 参数)并且wb.Close True 试图保存它,这不能以只读方式工作。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多