提问人:Allen Webster 提问时间:11/17/2023 更新时间:11/17/2023 访问量:58
如何让 excel 工作簿/工作表成为焦点?
How to get an excel Workbook/sheet to be in focus?
问:
好的,所以我正在尝试将条形码扫描仪用于多种目的,并且我遇到了这个问题,如果有人使用此扫描仪等待扫描到工作簿的 PC,则工作簿会失去焦点。我想设置一个计时器,在其中检查或设置工作簿的焦点,以设置时间间隔。问题如下;
从上图中可以看出,工作簿将只在处于第二个图像的状态(图标未重影)时接受输入
我尝试了各种不同的方法将工作簿恢复为非重影形式,例如;
'ThisFile = ActiveWorkbook.Name
'AppActivate (ThisFile)
'Sheets("Sheet1").Activate
'Windows("Book1").Activate
'Sheets("Sheet1").Range("A1") = x
'Application.WindowState = xlNormal
'Application.SendKeys "~", True
'ActiveWorkbook.Worksheets("Sheet1").Range("A1").Activate
'Sheets("Sheet1").Range("A1").Select
'AppActivate ActiveWorkbook.Windows(1).Caption
'Application.OnTime Now + TimeValue("00:0:30"), "ActivateExcel"
'AppActivate Application.Caption
我也尝试过 Chip Pearson 的解决方案之一,但也没有运气。http://www.cpearson.com/excel/ActivateExcelMain.aspx
我没有办法了。(以及描述搜索问题的方法)
我需要的是让工作表变为活动状态,而无需物理单击工作簿,并接受等待输入的单元格的输入。
我意识到我可以通过表格实现这一目标(尽管我也不确定那里的重点),但在实现它之前,我还有其他问题需要解决。
提前致谢。
答:
0赞
Nick Abbot
11/17/2023
#1
冒着被否决的风险......这是对我有用的东西。 无论在 Windows 中单击其他内容,它都会持续激活工作簿。如果 Excel 状态不是您要查找的状态,那么您可能专注于 VBA 或单元格处于编辑模式。
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliSeconds As Long)
Sub test()
Do
AppActivate "Book1 - Excel", 1
DoEvents
Sleep 2000
Loop
End Sub
这不是一个好主意。
评论
0赞
Allen Webster
11/17/2023
尼克,感谢您的回应并尽力提供帮助,我希望您不要被否决。我不明白为什么会这样,你是想帮忙。确切地说,我将您的代码完全复制/粘贴到新的 WB 中。它仍然对我不起作用。我运行宏,然后单击桌面,工作簿永远不会重新获得焦点。这真是莫名其妙。我想要的只是模拟 ALT/TAB,它运行良好,但 VBA 播放效果不佳。是 Windows 问题吗?我只是不知道。我正在使用 W11。
评论
AppActivate
使用 Windows 标题文本,而不仅仅是文件名。所以,试试: .如果在获取标题栏名称时遇到问题,请使用 to 查看所有标题栏名称。AppActivate "<file name>.xls - Excel", 1
ALT-TAB