其要求是使用Excel保护带有密码的工作簿的VBA项目。
这个是可能的吗?
目前,我们有一个Excel外接程序(xlam),它对打开的每个工作簿执行所有操作。我们通过外接程序实现了工作表的锁定.现在,我们还想保护那些打开的工作簿的VBA。下面是我们从各个论坛找到的代码
With Application
'execute the controls to lock the project
.VBE.CommandBars("Menu Bar").Controls("Tools") _
.Controls("VBAProject Pro
我有一个带密码保护(防止未经授权访问宏)的VBA宏,它可以按预期运行。用户单击按钮,宏将运行。内容或多或少如下:
Sub sample()
ActiveSheet.Unprotect Password:="xyz"
...VBA code....etc
ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, Contents:=True, cenarios:=True
End Sub
现在我已经添加了一个函数,因此代码如下所示:
Function
.....
我在一个工作簿上有以下代码。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "Main Page" Then
ws.Visible = xlSheetHidden
End If
Next ws
ThisWorkbook.Save
End Sub
但是,当工作簿下一次打开时,在结束时保持打开状态的页仍然是打开的。我还没有任何其他的宏或vba脚本将页面设置为
我在Excel中使用的工作簿有一些受保护的单元格。我无法解锁它们。我需要将数据从一个被锁定的列传输到另一个也被锁定的列。我可以手动输入数据,但是工作簿将不允许我在受保护的列中复制/粘贴数据(无论是使用VBA还是正常方式)。下面是我尝试过的代码示例,没有任何结果。
如果不打开工作簿,这甚至是可能的吗?
示例1:
Sub Requote()
Dim JDsheet As Worksheet
Set JDsheet = ActiveWorkbook.ActiveSheet
JDsheet.Range("Q26:R41").Copy JDsheet.Range("S26:T
我正在尝试通过VBA打开Excel (xlsm)文件。它可能使用(已知的)密码保护,也可能不使用。我使用的是以下代码:
On Error Resume Next
Workbooks.Open filename, Password:=user_entered_pw
opened = (Err.Number=0)
On Error Goto 0
现在,如果工作簿有密码,则可以很好地工作。但如果它没有保护,就不能打开。显然,如果还有工作簿结构保护处于活动状态,这是XL2007中的一个错误。()。在旧的XL2003上,提供密码将同时打开未保护和密码保护的文件。
我试过了:
Workbooks.Open
我正在使用Excel2016,并在VBA中的ThisWorkbook对象中编写了以下代码:
Private Sub Workbook_Open()
ThisWorkbook.Protect (password = "password")
End Sub
它不起作用。这里的要点是,这应该防止用户接触此工作簿中的Power Query函数。我已经将它保存为启用宏的工作簿,启用了所有宏和事件,这是唯一打开的工作簿。
我还有以下附加代码:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Protect (
我收到关于VBA “运行时错误'1004':对象'_Application‘失败的方法'OnKey’”的报告,至少在Excel2016中,在此代码中是这样的:
Private Sub Workbook_Deactivate()
Application.OnKey "^x"
End Sub
(当启用VBA的工作簿处于活动状态时,代码会重写某些热键,并在用户切换回其他工作簿时恢复默认行为。)
可能是什么原因?
我有一本由同事使用的excel书,当他们打开它时会受到保护,在测试我正在开发的一个新特性时,我遇到了一个我不懂的Excel奇怪的地方:
单击链接到宏的按钮时,VBA代码首先取消对工作簿的保护,如下所示:
Sub ButtonClick()
Dim userrange As Variant
Dim rrow As Range
Dim teeth As Range
' unprotect sheet
ActiveSheet.Unprotect ("password")
Application.EnableEvents = False
然后宏崩溃(我知道为什么,这不是问题所
我对VBA/Excel编程很陌生,我正在使用宏刷新枢轴表。我的一张床单上有下面的VBA代码。
Excel版本: 2013 (将我的文件保存为启用宏的工作簿)
Private Sub Worksheet_Activate()
RefreshPivotTables
End Sub
Private Sub Worksheet_Deactivate()
RefreshPivotTables
End Sub
当我在启用宏后来回切换时,代码可以正常工作,但是当我打开Excel时,会在顶部得到这个“启用宏带”,这会阻止宏运行。我需要切换到另一个选项卡,并返回到我原来的工作表,以激活宏。
在默认情况下,是
我已经设置了一个锁定的工作簿,在那里我已经使用VBA锁定了工作表。如何调整此代码以允许用户更改行/列高度和单元格的格式(例如,将单元格格式更改为百分比而不是货币)。然而,床单应该保持锁住。这是我到目前为止在Workbook_Open中使用的代码:
预先表示感谢:)
Private Sub Workbook_Open()
Dim wSheet As Worksheet
Sheet1.Protect Password:="12345", _
UserInterFaceOnly:=True
Sheet11.Protect Password:="12345
我正在microsoft excel上构建一个工作表,它将处理合理的业务数据。工作表将被放置在USB驱动器上,并且必须不断地从一个地方移动到另一个地方。因此,我在excel VBA中创建了一个功能来启用/禁用密码保护。下面是它的工作原理。
名为xlVeryHidden的页面是在一个单元格中包含用户密码的设置,页面中的另一个单元格包含单词yes或no。密码保护是否激活取决于天气。当用户第一次打开工作簿时,除了包含要继续的按钮之外,所有的工作表都是xlVeryHidden的,他们单击运行宏的按钮来检查设置工作表中的天气。根据so,系统会提示他们登录或取消隐藏所有工作表。
登录代码如下:
If Pa
我是Excel VBA的新用户。我已经检查了这里的所有其他问题,试图解决我的问题。我创建了一个主工作簿,它在我运行宏时从3个模板电子表格中复制信息。在我的电脑上,它工作正常。然而,当我们试图在一位同事的计算机上运行它时,打开了完全相同的4个工作簿,我们遇到了"Subscript out of range“错误。
我使用了本文中的以下代码()来检查所有打开的工作簿的名称。当我在同事的计算机上运行代码时,4个(Master.xlsm)打开的工作簿中只有1个显示。在我的计算机上,当我运行该代码时,它会显示4个打开的工作簿中的4个
dim oBook as workbook
for each
我正在使用Excel 2016。我现在创建了一个宏,它将遍历所有打开的工作簿,并在它们以单词"report“开头时获取其中的数据。我现在要解决的问题是如何启用编辑功能。如果用户在下载要合并的所有报告后启用编辑,则宏没有问题。如果错过了这个按钮,他们就会遇到宏无法获取数据的问题。
虽然他们使用的工作簿不是很多,但我正在努力让他们更轻松。我发布的代码将完成前3个工作簿,然后继续循环其余5个工作簿,但不会“启用编辑”。
Sub EnableEdit()
Dim bk As Workbook
Dim w As Long, wCount As Long
wCount = Applic
我的工作簿有一些非常隐藏的工作表(xlSheetVeryHidden),因为我不希望最终用户看到这个工作表中的信息。
但是,我感到惊讶的是,使用这种方法非常薄弱,因为任何最终用户都可以从另一个工作簿运行下面的代码,并在主文件中看到所有隐藏的工作表。
Sub make_visible()
Dim wb As Workbook: Set wb = Workbooks("Test") ‘name of the main file
Dim sh As Worksheet
For Each sh In wb.Sheets
sh.Visible = xlSheetVisible
我是Excel VBA的初学者,正在工作中使用一个小工具。我们使用一个工具来衡量我们的NPS-score,因此我可以下载我们所有的评论作为CSV文件。我创建了一个VBA,将所有这些注释粘贴到一个工作表中,并将其转换为列并进行计算。
如果我首先打开我的Excel文件,然后下载注释,手动复制注释并运行脚本,它会工作得很好。但是如果我首先下载注释,然后打开我的Excel文件并运行脚本,它会抛出一个1004错误,类工作表的方法粘贴失败。
我在这里尝试了很多答案,但似乎都不起作用。这是脚本开头粘贴注释的部分:
Application.ScreenUpdating = False
Dim wb As Wo
是否有一种方法在工作簿尝试打开之前检查工作簿是否受保护。
这是我的代码,但我不知道方法(如果可能的话)
Sub MySub()
Dim Wb As Workbook
For i = 14 To Cells(Rows.Count, 1).End(xlUp).Row
'I Would like to check if the workbook is Protected here
Set Wb = GetObject(Cells(i, 4).Value)
Wb.Open
End Sub
注意:此代码中的 Cells(i,4).Value将等于工作簿路径。