我的工作簿有一些非常隐藏的工作表(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
我正在microsoft excel上构建一个工作表,它将处理合理的业务数据。工作表将被放置在USB驱动器上,并且必须不断地从一个地方移动到另一个地方。因此,我在excel VBA中创建了一个功能来启用/禁用密码保护。下面是它的工作原理。
名为xlVeryHidden的页面是在一个单元格中包含用户密码的设置,页面中的另一个单元格包含单词yes或no。密码保护是否激活取决于天气。当用户第一次打开工作簿时,除了包含要继续的按钮之外,所有的工作表都是xlVeryHidden的,他们单击运行宏的按钮来检查设置工作表中的天气。根据so,系统会提示他们登录或取消隐藏所有工作表。
登录代码如下:
If Pa
我在一个工作簿上有以下代码。
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 “运行时错误'1004':对象'_Application‘失败的方法'OnKey’”的报告,至少在Excel2016中,在此代码中是这样的:
Private Sub Workbook_Deactivate()
Application.OnKey "^x"
End Sub
(当启用VBA的工作簿处于活动状态时,代码会重写某些热键,并在用户切换回其他工作簿时恢复默认行为。)
可能是什么原因?
我正在尝试将Access数据库中的%2个查询导出到Excel工作簿的%2个选项卡中。我希望那本工作簿有密码保护。我很难在VBA中对其进行密码保护。到目前为止,这是我的VBA:
Public Function ExportToExcel()
Call DoCmd.TransferSpreadsheet(TransferType:=acExport, _
TableName:="q1_Get_Load_Data", _
FileName
我有一个带密码保护(防止未经授权访问宏)的VBA宏,它可以按预期运行。用户单击按钮,宏将运行。内容或多或少如下:
Sub sample()
ActiveSheet.Unprotect Password:="xyz"
...VBA code....etc
ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, Contents:=True, cenarios:=True
End Sub
现在我已经添加了一个函数,因此代码如下所示:
Function
.....
我有在工作簿打开事件上运行的VBA代码,以便为所有工作表启用工作表保护。每隔一次打开工作簿时,工作表保护都不会打开。我完全不明白是什么导致了这种情况。代码是:
Option Explicit
Private Sub Workbook_Open()
Dim WKS As Worksheet
Dim WBK As Workbook
Set WBK = ThisWorkbook
For Each WKS In WBK.worksheets
WKS.Protect Password:="xyz", UserInterfaceOnly:=True
Next WKS
WBK.Pr
我为用户提供了一个受保护的工作簿A,它不允许用户从另一个工作簿B复制工作表。在工作簿A中,我将工作表1-19 (到目前为止只有13个工作表,为了将来扩展工作簿,我允许有19个工作表)视为“系统工作表”,不能删除或修改。表20-30是“非系统表”,用户可以根据需要进行删除和修改。
我希望有一个导入功能,其中用户可以导入工作簿B,其中包含一个工作簿A工作簿A工作簿A将检查,看看有多少“非系统工作表”,目前存在,并插入一个新的工作表在末尾的页码是20+。例如:
Total sheets in workbook A = 18
Total "system sheets" in A =
其要求是使用Excel保护带有密码的工作簿的VBA项目。
这个是可能的吗?
目前,我们有一个Excel外接程序(xlam),它对打开的每个工作簿执行所有操作。我们通过外接程序实现了工作表的锁定.现在,我们还想保护那些打开的工作簿的VBA。下面是我们从各个论坛找到的代码
With Application
'execute the controls to lock the project
.VBE.CommandBars("Menu Bar").Controls("Tools") _
.Controls("VBAProject Pro
我有一个Excel工作簿,其中包含三个工作表。但是,所有工作表似乎都是隐藏的,但它们的可见性设置为xlSheetVisible (通过查看VBA编辑器中的工作表属性)。
这就是我到目前为止为解决这个问题所做的努力。
搜索谷歌寻求帮助,但所有类似的问题都通过将可见性从xlSheetHidden改为xlSheetVisible解决了。但在我的例子中,该设置已经设置为xlVisible。
- By using VBA I have tried to activate a sheet without any result.
通过阅读这篇文章,您可能已经猜到我能够从VBA编辑器中看到和访
在尝试使用VBA从受保护的工作簿(从csv文件导入数据)中删除外部连接时,我遇到运行时错误'5‘。奇怪的是,如果我取消对工作簿的保护,它就会起作用。
我找到了这个线程:,但是提出的在脚本运行时取消保护工作簿的解决方案是不可能的。
下面是我用来删除外部数据连接的代码:
Sub RemoveExternalDataConnections()
Dim i As Long
For i = ActiveWorkbook.Connections.Count To 1 Step -1
ActiveWorkbook.Connections.Item(i).Dele
我使用一些VBA来切换显示和隐藏列,目前这是对连续列D:H的工作,但是我想有选择地选择它应该处理的列。
我使用的代码是:
Private Sub ShowHide_Click()
Dim xAddress As String
xAddress = "D:H"
If ShowHide.Value Then
Application.ActiveSheet.Columns(xAddress).Hidden = False
ShowHide.Caption = "Hide"
Else
Application.ActiveSheet.Columns
新手在Excel VBA上。我只想问一下如何修复我得到的错误?我正在尝试根据条件复制整个行,并将其粘贴到另一个工作表(同一工作簿)上。下面是我的代码:
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim endRow As Range
Set ws = Sheets("FIELD OFFICE DATABASE")
Set ws1 = Sheets("Transferred Items")
set endRow = Range("B" & Rows.Count).End(xlUp).Offset(
我在Excel中使用的工作簿有一些受保护的单元格。我无法解锁它们。我需要将数据从一个被锁定的列传输到另一个也被锁定的列。我可以手动输入数据,但是工作簿将不允许我在受保护的列中复制/粘贴数据(无论是使用VBA还是正常方式)。下面是我尝试过的代码示例,没有任何结果。
如果不打开工作簿,这甚至是可能的吗?
示例1:
Sub Requote()
Dim JDsheet As Worksheet
Set JDsheet = ActiveWorkbook.ActiveSheet
JDsheet.Range("Q26:R41").Copy JDsheet.Range("S26:T
我有一个excel工作簿,它保护和隐藏所有工作表,但在工作簿关闭之前。在该工作表上,它应该解除对工作表的保护,清除一些单元格值,然后重新保护工作表。
当我关闭工作簿与X在顶部角落,潜艇运行良好。当我尝试使用ThisWorkbook.Close时,子程序实际上并没有解除对工作表的保护,所以当它试图清除单元格值时,我会得到一个运行时错误'1004‘。
我需要.Close方法来处理另一个脚本,它将在x时间之后关闭工作簿。
在关闭脚本之前
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Unprotect Pa