完全隐藏工作薄.急啊!!!在线等待中

machunfeng 2006-11-08 11:47:59
各位大虾:
现要用EXCEl实现一个数据查询的功能,新建了一个.xla文件,但没有打开这个文件时,都会显示默认的工作薄(包括默认的sheet1,sheet2,sheet3)。现在我想打开这个.xla文件时,不显示这个工作薄入相关的工作表,请位各位大虾指点一下,该怎么做,谢谢,

...全文
291 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
明察秋毫 2006-11-23
  • 打赏
  • 举报
回复
插入一个用户窗体,添加一个文本框作为密码识别,一个命令按钮,当密码正确是执行你的宏命令,
在工作簿打开时添加以下代码
Private Sub Workbook_Open()
Sheet1.Cells.Font.Color = RGB(255, 255, 255)
UserForm1.Show
End Sub
这样,如果密码不正确,你的表的字体就是白色的,哈哈谁也看不到了
drinkcrow 2006-11-14
  • 打赏
  • 举报
回复
alt+f11 打开VBA,在工程资源管理窗口中找到 sheet1,点中它,在属性窗口(若无,F4打开此窗口)中修改Visible属性即可
lyl_98 2006-11-14
  • 打赏
  • 举报
回复
在VBA编辑器中修改sheet的Visible属性可以隐藏,但是好像必须的有一个是显示的。
XYX_YE 2006-11-14
  • 打赏
  • 举报
回复
我调用了五个API函数来实现了这个功能.
把以下的化码装入thisworkbook模快中
并把"隐藏工作薄"替换成你的xla文件名(不包含".xla")

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As

String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String,

ByVal cch As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String,

ByVal nMaxCount As Long) As Long
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Private Sub Workbook_Open()
Dim h As Long
h = FindWindow("XLMAIN", vbNullString)
h = GetBookHandle(h, "隐藏工作薄")
ShowWindow h, 0 '隐藏
'ShowWindow h, 1 ' 显示
MsgBox ThisWorkbook.Name + "成功被隐藏了!"
End Sub
Function GetBookHandle(ph As Long, WinCaption As String) As Long
Dim StarCh As Long
Dim WinText As String * 255
WinText = ""
StarCh = GetWindow(ph, 5)
GetClassName StarCh, WinText, 255
Do
If Left(WinText, 6) = "XLDESK" Then Exit Do
WinText = ""
StarCh = GetWindow(StarCh, 2)
GetClassName StarCh, WinText, 255 + 1
Loop Until StarCh = 0
StarCh = GetWindow(StarCh, 5)
GetWindowText StarCh, WinText, 255
Do
If Left(WinText, Len(WinCaption)) = WinCaption Then
GetBookHandle = StarCh
Exit Do
End If
WinText = "'"
StarCh = GetWindow(StarCh, 2)
GetWindowText StarCh, WinText, 255
Loop Until StarCh = 0
End Function

Windows XP + Office2000 调试通过,祝你好运!
zsj1101 2006-11-11
  • 打赏
  • 举报
回复
根据excel的规则最少都得有一个显示的。

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧