小编bre*_*tdj的帖子

Excel的工作表密码保护如何工作

这段代码已经在网上漂浮了很多年 - 它显然能够提供密码来解密你不知道密码的excel电子表格.

http://www.theofficeexperts.com/VBASamples/Excel02.htm

我对它是如何工作感兴趣,但我似乎无法解决这个问题.我假设它是在某个值下加密的,可以通过多种方式获得(网上的一些地方说它会给你原始密码或另一个可以工作的密码)有点像公钥 - 你可以有100个公钥,所有公钥都可以使用一个私钥.

对我来说,似乎它正在创建整数变量并用特定数字填充它们,然后将该数字转换为相关字符.这些总是不一样吗?如果是这样,Excel保护是否有"主密码"?

谢谢大家!

编辑:我注意到我发布的示例代码中的For n = 32 To 126.使用ASCII表进行交叉引用,该表似乎是从空间到波浪号的所有字符.这是某种字典攻击我不理解语法吗?

encryption excel vba excel-vba

15
推荐指数
2
解决办法
2万
查看次数

禁止"另存为"提示

我查看了这个主题并找到了一些帮助,但这些建议似乎没有起作用.

  • 我打开一个CSV文件到EXCEL进行一些更改,然后想要将结果保存回相同的文件名和CSV格式.
  • 我想这样做没有提示我要确保我要保存文件.
  • 我们使用宏启用的excel文件导入数据make更改然后保存.
  • 整个过程由批处理文件启动,该文件将定期打开Excel应用程序和指定文件,这就是为什么我们不希望提示停止该过程.

这是我在VBA中用来完成工作的代码,以及我发现的其他可以帮助我抑制提示的子代码.

此代码位于TheWorkbook文件中,而不是模块.

我错过了什么吗?

Sub fixfile()
    Const strFileName = "W:\Webshare\Documents Acquired in 2017\Jim Excel\snr-room-schedule.csv"
    Dim wbkS As Workbook
    Dim wshS As Worksheet
    Dim wshT As Worksheet
    Set wshT = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    Set wbkS = Workbooks.Open(Filename:=strFileName)
    Set wshS = wbkS.Worksheets(1)
    wshS.UsedRange.Copy Destination:=wshT.Range("A1")
    wbkS.Close SaveChanges:=False

    'This is the area of work that we doing to the data
    'Through here

    Application.DisplayAlerts = False 'IT WORKS TO DISABLE ALERT PROMPT

    ActiveWorkbook.SaveAs Filename:= _
        "W:\Webshare\Documents Acquired in 2017\Jim Excel\snr-room-schedule.csv", …
Run Code Online (Sandbox Code Playgroud)

csv excel vba prompt excel-vba

15
推荐指数
4
解决办法
3283
查看次数

如何在VBA中安全地存储连接字符串详细信息

我有一个Excel模板,在VBA代码中具有硬编码的Ms Access MDB路径,用于连接到Access表并保存,检索数据.

我将MS Access数据库迁移到具有Excel模板用户的集成身份验证的SQL Server.

我的问题是,存储SQL Server数据库连接字符串并在Excel 2007 VBA中检索以保存和检索数据的建议方式/最佳实践是什么?

过去,我做了以下工作.

  1. 使用具有连接字符串的注册表项设置.然后在VBA中,编写一个读取注册表项并返回连接字符串的函数.

  2. 在Excel模板中有一个"设置"隐藏工作表,其中包含连接字符串的命名单元格.通过访问该命名范围来读取VBA中的连接字符串.

  3. 使用与Excel模板一起使用的.INI txt文件.(这不是理想的,我想避免这种情况,因为它构建了对该外部文件的依赖)

我不喜欢#1,因为我想尽可能避免写入/读取注册表.#2感觉还不错,以为我不确定是否有更好的"清洁"方式来做到这一点.

有什么想法吗?

vba connection-string

14
推荐指数
1
解决办法
2万
查看次数

Excel单元格值作为字符串不会存储为字符串

我无法在此处获取此代码以获取单元格内容并将其存储为字符串.我得到一个双倍:
54.6666666667而不是N03:DM:(示例单元格内容).

如果我使用Cstr(Sheet1.Cells(i, 5).Value)我仍然得到相同的结果.

任何帮助,将不胜感激.

Option Explicit
Private Sub GetAddress()

Dim varAdd As String
Dim i As Integer

    For i = 2 To 327
        If varTag = Sheet1.Cells(i, 2).Value Then
           varAdd = Sheet1.Cells(i, 5).Value
           varAdd = Left(varAdd, 7)
           Sheet3.Cells(incR, 2).Value = varAdd
           Exit For
        End If   
    Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

工作表截图 在此输入图像描述

excel vba excel-vba

14
推荐指数
1
解决办法
18万
查看次数

如何在Workbook_BeforeSave之前阻止Excel触发Worksheet_Change?

更新:问题已解决我的 一位同事正在更改单元格Workbook_BeforeSave()而不禁用事件,因此触发Worksheet_Change().是的,愚蠢,但至少这是我们的错,而不是Excel

我注意到每当我在Excel中按Ctrl + S时,都会Worksheet_Change()被触发Workbook_BeforeSave().是否有可能使用VBA代码来抑制此行为,但不会压制所有事件(即没有Application.EnableEvents = false)?

无论我在做什么,都会发生这种情况.我读过有关ComboBoxes有类似问题的人,但我没有编辑ComboBoxes,但Worksheet_Change()在保存之前总会激活.

有任何想法吗?我只是试图弄清楚如何在Worksheet_Change()保存文档时绕过一些代码,因为该代码只应在用户实际更改内容时执行,而不是在保存工作簿时执行.储蓄绝不会改变......

excel events vba

13
推荐指数
1
解决办法
4万
查看次数

动态添加标签到用户窗体=空白用户窗体

我正在尝试向userform动态添加按钮,但userform只是空白.我尽可能地简化了代码的本质,以便进行错误检查(不是它对我有帮助)

Sub addLabel()
UserForm2.Show    
Dim theLabel As Label
Dim labelCounter As Integer

For labelCounter = 1 To 3
    Set Label = UserForm2.Controls.Add("Forms.Label.1", "Test" & labelCounter, True)
    With theLabel
        .Caption = "Test" & labelCounter
        .Left = 10
        .Width = 50
        .Top = 10
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

有没有办法检查按钮是否已添加但是不可见?或者为什么他们没有被添加.任何帮助非常感谢.

excel vba excel-vba

13
推荐指数
1
解决办法
5万
查看次数

使用VBA宏重命名Excel工作表

我想问一下重命名excel表,我想用新名称重命名表:旧名+ _v1.

因此,如果我当前的工作表名称是test,那么我想要新名称test_v1.

我只知道重命名excel表的标准vba,它是由表单内容重命名excel表.

Sub Test()

Dim WS As Worksheet

For Each WS In Sheets
   WS.Name = WS.Range("A5")
Next WS
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

13
推荐指数
3
解决办法
19万
查看次数

在单一陈述中交换三个数字

是否有可能在一个语句中交换三个数字

例如:

  • a = 10
  • b = 20
  • c = 30

我希望根据以下列表更改值

a = 20
b = 30
c = 10
Run Code Online (Sandbox Code Playgroud)

这些值可以在一行中传输吗?

c logic

12
推荐指数
4
解决办法
5515
查看次数

使用具有分隔列的表进行查找

我想使用VLOOKUP()由不相邻的列组成的表输入.

MyCell = VLOOKUP(A1, MyTable, 2, FALSE)
MyTable = B1:B10 and D1:D10
Run Code Online (Sandbox Code Playgroud)

有没有办法使用查找函数或任何其他工作表函数使此操作工作?现在我收到一个错误.

提前致谢.

编辑:这是因为表非常大,如果我使用整个表作为输入,我担心操作会减慢应用程序的速度

excel excel-formula vlookup

12
推荐指数
1
解决办法
2万
查看次数

使用vba读取整个文本文件

我正在尝试使用vba读取文本文件.我尝试了下面的代码

Open "C:\tester.txt" For Input As #1
Worksheets("UI").Range("H12").Value = Input$(LOF(1), 1)
Close #1
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我收到了一个错误.

运行时错误'62'.输入文件的结尾.

文本文件的内容是:

无法打开COM10.确保它是连接
加上其他的东西
和更多的东西
更多的东西

在此先感谢您的帮助.

excel vba

12
推荐指数
4
解决办法
4万
查看次数