Q: 打开一个工作簿时需要更新对另一工作簿的引用数据,而另一个工作簿有密码,有什么办法可以自动完成更新,不需要手动输入密码? A: 可以在workbook_open事件中加入带密码打开文件的命令,并完成数据更新工作,附示例文件。
代码如下:Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim str As String
Dim WB
m = 3
For n = 2 To 5
str = ThisWorkbook.Path & "" & n & ".xls"
Set WB = Workbooks.Open(str, , True, , "123") '关键语句,打开带密码工作簿
Worksheets("sheet1").Cells(m, 1) = WB.Worksheets("sheet1").Cells.Find("姓名").Offset(1, 0) '因相应工作簿中内容格式不统一,采用查找的方式定位数据
Worksheets("sheet1").Cells(m, 2) = WB.Worksheets("sheet1").Cells.Find("年龄").Offset(1, 0)
Worksheets("sheet1").Cells(m, 3) = WB.Worksheets("sheet1").Cells.Find("性别").Offset(1, 0) (好像源数据表只有一行数据)
m = m + 1
WB.Close savechanges:=False
Set WB = Nothing
Next n
ThisWorkbook.Activate
Application.ScreenUpdating = True
MsgBox "数据更新完毕"
End Sub
复制代码 附: workbooks.open 用法帮助
打开一个工作簿。 语法 表达式.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad) 表达式 一个代表 Workbooks 对象的变量。 参数
名称 | 必选/可选 | 数据类型 | 描述 | CorruptLoad | 可选 | Variant | String 类型。要打开的工作簿的文件名。 | UpdateLinks | 可选 | Variant | 指定更新文件中链接的方式。如果省略此参数,则提示用户指定链接的更新方式。有关此参数值的详细信息,请参阅“备注”部分。如果 Microsoft Excel 正在打开 WKS、WK1 或 WK3 格式的文件并且 UpdateLinks 参数为 2,则 Microsoft Excel 根据与该文件关联的图形生成图表。如果此参数为 0,则不创建任何图表。 | ReadOnly | 可选 | Variant | 如果为 True,则以只读模式打开工作簿。 | Format | 可选 | Variant | 如果 Microsoft Excel 正在打开文本文件,则由此参数指定分隔符。如果省略此参数,则使用当前的分隔符。有关此参数值的详细信息,请参阅“备注”部分。 | Password | 可选 | Variant | 一个字符串,包含打开受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。 | WriteResPassword | 可选 | Variant | 一个字符串,包含写入受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。 | IgnoreReadOnlyRecommended | 可选 | Variant | 如果为 True,则不让 Microsoft Excel 显示只读的建议消息(如果该工作簿以“建议只读”选项保存)。 | Origin | 可选 | Variant | 如果该文件为文本文件,则此参数用于指示该文件来源于何种操作系统(以便正确映射代码页和回车/换行符 (CR/LF))。可为以下 XlPlatform 常量之一:xlMacintosh、xlWindows 或 xlMSDOS。如果省略此参数,则使用当前操作系统。 | Delimiter | 可选 | Variant | 如果该文件为文本文件并且 Format 参数为 6,则此参数是一个字符串,指定用作分隔符的字符。例如,可使用 Chr(9) 代表制表符,使用“,”代表逗号,使用“;”代表分号,或者使用自定义字符。只使用字符串的第一个字符。 | Editable | 可选 | Variant | 如果文件为 Microsoft Excel 4.0 加载宏,则此参数为 True 时可打开该加载宏以使其在窗口中可见。如果此参数为 False 或被省略,则以隐藏方式打开加载宏,并且无法设为可见。本选项不能应用于由 Microsoft Excel 5.0 或更高版本的 Microsoft Excel 创建的加载宏。如果文件是 Excel 模板,则参数值为 True 时,会打开指定模板进行编辑。参数值为 False 时,可根据指定模板打开新的工作簿。默认值为 False。 | Notify | 可选 | Variant | 当文件不能以可读写模式打开时,如果此参数为 True,则可将该文件添加到文件通知列表。Microsoft Excel 将以只读模式打开该文件并轮询文件通知列表,并在文件可用时向用户发出通知。如果此参数为 False 或被省略,则不请求任何通知,并且不能打开任何不可用的文件。 | Converter | 可选 | Variant | 打开文件时试用的第一个文件转换器的索引。首先试用的是指定的文件转换器;如果该转换器不能识别此文件,则试用所有其他转换器。转换器索引由 FileConverters 属性返回的转换器行号组成。 | AddToMru | 可选 | Variant | 如果为 True,则将该工作簿添加到最近使用的文件列表中。默认值为 False。 | Local | 可选 | Variant | 如果为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果为 False(默认值),则以 Visual Basic for Applications (VBA) (Visual Basic for Applications (VBA):Microsoft Visual Basic 的宏语言版本,用于编写基于 Microsoft Windows 的应用程序,内置于多个 Microsoft 程序中。) 的语言保存文件,其中 Visual Basic for Applications (VBA) 通常为美国英语版本,除非从中运行 Workbooks.Open 的 VBA 项目是旧的已国际化的 XL5/95 VBA 项目。 | CorruptLoad | 可选 | Variant | 可为以下常量之一:xlNormalLoad、xlRepairFile 和 xlExtractData。如果未指定任何值,则默认行为通常为普通加载,但如果 Excel 已尝试打开该文件,则可以是安全加载或数据恢复状态。首先尝试普通加载。如果 Excel 在打开文件时停止操作,则尝试安全加载状态。如果 Excel 再次停止操作,则尝试数据恢复状态。 |
返回值 一个代表打开的工作簿的 Workbook 对象。 说明 默认情况下,以编程方式打开文件时将启用宏。使用 AutomationSecurity 属性可设置以编程方式打开文件时所用的宏安全模式。 您可在 UpdateLinks 参数中指定下面的一个值,以确定文件的分隔字符:
值 | 含义 | 1 | 用户指定链接更新方式 | 2 | 从不在该工作簿打开时更新链接 | 3 | 始终在该工作簿打开时更新链接 |
您可在 Format 参数中指定下面的一个值,以确定文件的分隔字符:
值 | 分隔符 | 1 | 标签 | 2 | 逗号 | 3 | 空格 | 4 | 分号 | 5 | 无 | 6 | 自定义字符(请参阅 Delimiter 参数) |
|