2013-09-30 24 views
0

我正在为excel写入一个加载项。它应该创建一个新的工作表,然后从预先存在的工作表复制数据。我需要代码来取消阻止在excel vba中添加新工作表

现在整个加载项在另一个excel文档上工作。但是我需要它工作的人已经禁用了添加新工作表的功能。

有人可以告诉我什么代码启用这个?

Sub Auto_Open() 

Dim WSheet As Worksheet 
On Error Resume Next 
Set WSheet = Sheets("DispersionList") 
On Error Resume Next 
Dim works As Worksheet 
ActiveWorkbook.Unprotect 

If WSheet Is Nothing Then 
Set works = Worksheets.add(after:=Sheets(Worksheets.Count)).Name = "DispersionList" 
Call makeFormat 

Worksheets(1).Activate 
End If 

DispersionForm.Enabled = True 
DispersionForm.Show 

End Sub 
+0

戏是讲保护?这个工作簿.unprotect(“密码”) –

+1

上述的[reverse](http://stackoverflow.com/questions/3690793/how-to-protect-excel-workbook-using-vba),但有一些完整的代码块。你知道密码吗? – pnuts

+0

@pnuts不幸的是我不知道密码,他们的vba项目也是密码保护,所以我不能看到他们做了什么,我正在尝试寻找解决方法> – MiniMite

回答

0

就像上面提到的pnuts一样,如果你搜索Google/SO,你会发现很多关于窃取密码的帖子。不过,我的答案不是关于窃取密码,而是关于您可以使用的工作簿的替代方法。如果有人保护了Excel文件,那么很明显,你并不打算捣鼓它:)作为个人选择,我不协助黑客攻击。如果你可以从作者那里得到密码,那么就没有这样的东西。

可以有两种保护方式,我可以想象它会阻止您将工作表添加到该工作簿。

  1. 通过代码
  2. 工作簿结构的保护。

如果你想玩工作簿而不是打算盗号它然后你有几个选项。

  1. 如果通过代码进行保护,则该文件可以是支持宏的xls或xlsm文件。在这里,作者可能会做的是写一个代码,在添加工作表的那一刻,它会立即被删除。在这种情况下,只需将文件重新保存为xlsx文件即可。关闭文件并重新打开它,以便您可以添加工作表并在没有黑客的情况下使用它。
  2. 如果工作簿结构保护,那么有没有什么你可以复制,除了做(如果允许的话)从现有的工作簿中的细胞到一个新的工作簿,然后用它
+0

谢谢,我不是试图破解工作簿,我尽量避免这种情况。我只需要将它的一些信息处理成当前宏不支持的另一种格式。最简单的就是创建一个新的工作表,然后将信息复制到它。 – MiniMite

+0

这正是我在上面第2点中提出的建议。 :) –

+0

这是有点偏离主题,但我不认为我需要为此发布一个全新的questiion。我在代码中创建了一个新的工作簿 Dim book As Workbook Set book = Workbooks.add 但现在我想将工作簿保存在原始文件的相同文件夹中。 (使用相对路径)我使用哪些代码? – MiniMite

相关问题