找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1228|回复: 4

[VBA程序]:请问三个问题:判断某一工作表是否打开;监测键盘是否有按键按下;图块能

[复制链接]
发表于 2006-9-26 17:23:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. 请问,在VBA中如何判断当前是否有同名Excel工作表打开,若有就关闭?我使用VBA每次把AutoCAD数据写到一个已存在Excel工作表中,但当之前如果此工作表已打开则在写数据时就会出现对话框,提示是否替换此文件。希望不出现此提示,因此想通过在程序开始时判断当前是否有同名Excel工作表打开,若有就关闭的方法解决,但总是未能实现,请问使用VBA如何解决?

2. 我想在VBA程序中加入一段程序,用以监测键盘是否有方向键等按键的按下,如果有,则处理一段程序,如果没有则继续原来的程序。请问此段监测代码如何编写?

3. 在VBA程序中插入的图块必须使用绝对路径吗?当把图块与VBA程序放在同一文件下后,在VBA程序中插入的图块能否使用相对路径(这样做的目的是因为VBA程序无法做成可执行文件,为方便在不同的电脑中使用VBA程序及其调用的图块,而把相关文件放在同一文件下,但要求使用相对路径)?另外请问各位老师是如何在不同的电脑中方便的使用VBA程序及其调用的图块的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-9-27 15:06:50 | 显示全部楼层
一、你的第一个问题,我试了一下。内容见下:

Sub ctoe()
Dim ExcelAPP As Excel.Application
Dim ExcelWorkbook As Object
'是否打开的标记
Dim Find As Boolean

'你所要打开的文件名,请用全名
Dim file As String
file = "d:\12345.xls"
'===================================================
' 连接至 EXCEL 应用程序
On Error Resume Next
Set ExcelAPP = GetObject(, "EXCEL.Application.10")
If Err Then
        Err.Clear
        Set ExcelAPP = CreateObject("EXCEL.Application.10")
        If Err Then
                MsgBox Err.Description
                Exit Sub
        End If
End If
ExcelAPP.Visible = True
'MsgBox "已连接至EXCEL"
'===================================================
'检查目标文件是否打开
Find = False
If ExcelAPP.Workbooks.count > 0 Then
        For i = 1 To ExcelAPP.Workbooks.count
                If StrComp(ExcelAPP.Workbooks(i).FullName, file, 1) = 0 Then
                        ExcelAPP.Workbooks(i).Activate
                        ExcelWorkbook = ExcelAPP.ActiveWorkbook
                        Find = True
                        Exit For
                End If
        Next i
End If
If Find = False Then   '如果文件尚未打开
        ExcelWorkbook = ExcelAPP.Workbooks.Open(file)
End If
'===================================================
'运行到此,ExcelWorkbook中即是你所要求打开的工作薄对象。
'请在此处添加要完成动作的代码!!
'......
'......
'===================================================
'最后退出
Set ExcelWorkbook = Nothing
Set ExcelAPP = Nothing
End Sub

二、你的2、3问题,正在思考中......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-9-27 18:26:31 | 显示全部楼层
郑立楷老大的代码;判断Esc是否按下
public const vk_escape=&h1b
declare function getasynckeystate lib "user32"  (byval  vkey as long) as integer
public function checkkey(lngkey as long) as boolean
   if getansynckey state(lngkey) then
      checkkey= true
   else
      checkkey=false
   endif

end function
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-9-27 19:03:09 | 显示全部楼层
关于1楼的第二个问题,我的方法是:
1、首先定义一个函数,用以响应键盘事件。当方向键被按下或弹起,改变标记变量的值以区分;
2、在主程序执行过程中,循环判断标记变量的值。当标记显示按下时,跳转主程序来"处理一段程序"。

需要说明技巧的是,跳转的目标可以是主程序本身,这样就可以实现连续执行的目的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-12 22:05:08 | 显示全部楼层
感谢几位老师的解答!
我将按上述方法试验。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-28 15:26 , Processed in 0.176202 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表