我在一个带有密码的受保护的工作表中有一个ActiveX按钮。当我想触发一个动作时,它确实需要解除保护表。
所发生的情况是,相同的密码是通过右键单击工作表name>>Protect表手动插入的.如果我使用VBA不起作用。
反过来也是如此:如果我使用VBA保护工作表,那么我就无法通过右键单击工作表name>>Protect表来手动解除它的保护。
这是我的代码:
Private Sub ToggleButton1_Click()
On Error GoTo Error_handler
psw = InputBox("please enter the password
我当前使用的VBA代码是:
Sub PasswordPointage()
Dim Password As String
Do Until Password = "123"
Password = InputBox("plz enter password","Password","")
If Password = "" Then
Exit Sub
End If
Loop
我有一个用password(1)保护的VBProject。我试图添加一个工作表并在运行时更改它的代号,但我得到了一个error 50289
该代码是通过单击一个按钮从sheet1调用的。
Public Sub AddSheet()
Dim sh As Worksheet
With ThisWorkbook
.Worksheets.Add
Set sh = .ActiveSheet
.VBProject.VBComponents(sh.CodeName).Name = "sh" & VBA.Minute(VB
我有一个带密码保护(防止未经授权访问宏)的VBA宏,它可以按预期运行。用户单击按钮,宏将运行。内容或多或少如下:
Sub sample()
ActiveSheet.Unprotect Password:="xyz"
...VBA code....etc
ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, Contents:=True, cenarios:=True
End Sub
现在我已经添加了一个函数,因此代码如下所示:
Function
.....
我的宏出了问题,在尝试UnfreezePanes时失败了。文档具有结构保护:视图>保护工作簿>结构和窗口保护(2013年版本)
在2013年之前的excel版本中,我对宏没有问题:
Sub Unfreeze()
ActiveWorkbook.Unprotect
ActiveWindow.FreezePanes = False
End Sub
但在2013年版本中,我遇到了一个问题:执行“ActiveWorkbook.Unprotect”时没有出现错误,但不取消文档中的结构更改限制,因为纽特行ActiveWindow.FreezePanes = False抛出:
错
当前有一个问题,即一组文本框中的文本框继续允许用户移动和更改文本,尽管该文本框的属性被设置为“锁定”(包括锁定文本按钮),这是在工作表设置为受保护的时候。由于这些组是通过VBA代码设置的,因此只能显示特定的单元格值,这是否是文本框继续允许用户同时移动它们和更改文本的原因?如果是这样的话,是否需要输入特定的VBA代码来独立锁定组中的特定文本框?
显示或隐藏文本框的VBA代码片段如下(其中"RightTop1等“)。指组名);
If ActiveSheet.Range("D20") = "Dbl-Bev" Or ActiveSheet.Range("
案例:,我有一个用C#编写的应用程序。这个应用程序打开VBA项目(Word)。一些VBA项目受到密码保护。我使用这两个库:
using Microsoft.Office.Interop.Word;
using Microsoft.Vbe.Interop;
问题:如何以编程方式打开受密码保护的密码?我正在考虑用“输入密码”或类似的东西来弹出一个窗口给用户。
我有一张带过滤器的桌子。我编写了简单的VBA,以便当用户选择不同的选项时,VBA将选择过滤器并自动对表进行排序。它工作得很完美。然后,我隐藏、锁定和保护工作表,使其保持简单,并防止用户更改公式。但是,一旦工作表受到保护(我勾选并授予了所有操作的权限),VBA仍然无法运行。如果我换回“不受保护”,一切都会恢复正常。我被困住了,希望各位专家能给我建议。非常感谢!
简单的VBA如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("BF1").Value = "Highest $" Th
我正在microsoft excel上构建一个工作表,它将处理合理的业务数据。工作表将被放置在USB驱动器上,并且必须不断地从一个地方移动到另一个地方。因此,我在excel VBA中创建了一个功能来启用/禁用密码保护。下面是它的工作原理。
名为xlVeryHidden的页面是在一个单元格中包含用户密码的设置,页面中的另一个单元格包含单词yes或no。密码保护是否激活取决于天气。当用户第一次打开工作簿时,除了包含要继续的按钮之外,所有的工作表都是xlVeryHidden的,他们单击运行宏的按钮来检查设置工作表中的天气。根据so,系统会提示他们登录或取消隐藏所有工作表。
登录代码如下:
If Pa
首先,我使用VBA编辑器在“非常隐藏”模式下隐藏所有工作表,并使用密码保护我的VBA工程。但问题是,我可以轻松地取消隐藏所有工作表,只需在即时窗口中输入vba代码,这是:
for each sh in worksheets:sh.visible=true:next sh
那么,哪种有效的方法可以让任何人都不能隐藏我的工作表呢?
我想要一个功能,将取消保护和重新保护我的工作表。
我目前拥有的功能如下:
Public Function RunProtect(fun As Function, sheet As Worksheet)
Dim protected As Boolean: protected = False
If sheet.ProtectContents = True Then
protected = True
sheet.Unprotect
End If
'Code to run fun
If protected = Tru
我有一个共享的、受保护的工作簿,它有一个按钮来打开搜索表单。这个表单上有两个字段,txtYear和cbxRegion,我需要启用它们。每当我试图打开这些字段时,它都会工作到退出Excel为止。
我尝试过取消对工作簿的保护,取消共享它,并注释掉VBA中的任何引用来重新保护表单。不过,即使是编辑后的VBA也会恢复到原来的状态。
这是指我需要启用的表单的代码部分。如能提供任何协助,将不胜感激。我正在使用Excel 2010。
Private Sub UserForm_Initialize()
Dim strDb As String
Dim rs As ADODB.Recordset
Dim cn
我试图保护允许插入图像的WorkSheet。然后,我学习了如何用VBA代码保护WorkSheet,但是WorkSheet不允许插入图像。
当我手动保护WorkSheet时,我发现如果我检查选项"Modify “,WorkSheet允许插入图像。
现在,我正在搜索Protect方法的参数,然后我有以下代码:
With Sheets("Sheet1")
.Protect Password:="password", DrawingObjects:=True, Contents:=False, Scenarios:=False
End With
我收到关于VBA “运行时错误'1004':对象'_Application‘失败的方法'OnKey’”的报告,至少在Excel2016中,在此代码中是这样的:
Private Sub Workbook_Deactivate()
Application.OnKey "^x"
End Sub
(当启用VBA的工作簿处于活动状态时,代码会重写某些热键,并在用户切换回其他工作簿时恢复默认行为。)
可能是什么原因?
我是Excel VBA的初学者,正在工作中使用一个小工具。我们使用一个工具来衡量我们的NPS-score,因此我可以下载我们所有的评论作为CSV文件。我创建了一个VBA,将所有这些注释粘贴到一个工作表中,并将其转换为列并进行计算。
如果我首先打开我的Excel文件,然后下载注释,手动复制注释并运行脚本,它会工作得很好。但是如果我首先下载注释,然后打开我的Excel文件并运行脚本,它会抛出一个1004错误,类工作表的方法粘贴失败。
我在这里尝试了很多答案,但似乎都不起作用。这是脚本开头粘贴注释的部分:
Application.ScreenUpdating = False
Dim wb As Wo
因此,我有一个要根据用户输入格式化的电子表格,但单元格需要保持锁定,直到格式确定它们将是用户输入单元格。我的代码将查找用户界面的单元格,但允许VBA编辑它们。
> 'protects all sheets upon opening work book
> Me.Worksheets("Sheet1").Protect "Password", UserInterfaceOnly:=True
> Me.Worksheets("Sheet2").Protect "Password", UserI
我在一个工作簿上有以下代码。
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脚本将页面设置为
我有两本练习册。其中一个向另一个发送数据,一切都很正常。但是,现在我希望接收工作簿的工作表受到保护,并且在数据传输期间,VBA应该取消保护,然后将所有需要的数据复制到其中,最后再次保护接收工作表。这里我漏掉了什么?我使用Worksheet.Unprotect并复制数据,最后使用Worksheet.Protect来保护接收到的工作表。我得到了错误400。下面是我的代码,我用一个按钮(表单控件)来执行: Sub Datatransfer()
Dim myPath As String 'this workbook path
Dim RecPath As String 'recei
我正在尝试使用VBA更改单元格的字体颜色。我不能在excel中直接更改它的原因是因为工作表是受保护的,而我没有密码。我想要更改的单元格未被阻止(我可以在其中键入)。
在工作表代码中,我尝试使用更改颜色,但当它要激活代码时,总是弹出错误1004。
Private Sub Worksheet_Change(ByVal Target as Range)
Range("B25").Font.Color = vbWhite
End Sub
我想让代码正常工作,这样无论键入什么内容,单元格字体都是白色的
我正在尝试将Access数据库中的%2个查询导出到Excel工作簿的%2个选项卡中。我希望那本工作簿有密码保护。我很难在VBA中对其进行密码保护。到目前为止,这是我的VBA:
Public Function ExportToExcel()
Call DoCmd.TransferSpreadsheet(TransferType:=acExport, _
TableName:="q1_Get_Load_Data", _
FileName
我想通过VBA从Excel执行邮件合并。
我在取消保护和保护Word文档时遇到了一些困难。如何取消对Word文档的保护,执行邮件合并,然后再次保护文档?
Sub RunMerge()
Dim wd As Object
Dim wdocSource As Object
Dim strWorkbookName As String
Validate_Form
If Left(Sheet1.Range("B48").Text, 7) = "Missing" Then
Exit Sub
Else
On Error Resume Next
使用VBA处理数据的输入文件,以创建受Excel(2003)保护的电子表格(发票)。然后将电子表格分发给其他办事处,在那里修改一些指定的单元格。如何创建工作表以允许在整个工作表受到保护时修改这些单元格?我已经尝试使用下面的代码,以及其他类似的变体,但似乎不起作用。你能帮上忙吗?
Private Sub CellLock1()
Cells.Select
' unlock all the cells
Selection.Locked = False
' lock only these cells
Range("J49:K49").Select
我正在使用一些表格,这些表格是为方便用户输入数据而设计的。其中一些列是公式。我希望保护使用公式的列,但仍然允许用户从表中添加新行和删除现有行。 这里有一些非常有用的代码:https://answers.microsoft.com/en-us/msoffice/forum/all/inserting-deleting-rows-or-columns-in-a-protected/17303e19-dabe-4f38-9250-2ef213f1e13d Private Sub Worksheet_Change(ByVal Target As Range)
Dim lstObj A
我有一个包装Excel.Shape的类。
在我的一个函数(允许将形状从一个工作表移动到另一个工作表)中,我有以下代码:
Private Property ThisShape As Excel.Shape
Public Property Sheet As Excel.Worksheet Implements IShapeWrapper.Sheet
Get
If Not Me.HasShape Then Return Nothing
Return Me._Sheet
End Get
Set(value As Excel.Worksheet)