如何在windows和VB之间切换?
How to switch between windows with VB?
我想用vba在window之间切换,所以我用了"switch windows"函数,用宏录制。手动点击按钮可以正常工作,但是当我使用录制的 vb 代码时,它根本不起作用。可能是什么问题?
代码如下:
Windows(2).Activate
我已经用尽方法搜索,但搜索结果提供的许多解决方案根本不起作用...
无效的代码:
ActiveDocument.ActiveWindow.Next.Activate
或
Sub AcivateNextDocumentWindow()
On Error GoTo ProcessError
If Windows.Count > 1 Then
Dim objWindow As Window
Set objWindow = ActiveDocument.ActiveWindow.Next
objWindow.Activate
End If
Exit Sub
ProcessError:
Windows(1).Activate
End Sub
我认为您的问题可能是由于文档与 windows 之间的差异造成的。 Windows 可以是多个 "views" 到一个文档中(您会看到像 Document1:1、文档 1:2 等这样的名称)或多个不同的文档。如果您 运行 来自特定文档中的代码的宏,您可能会遇到问题。建议您将代码添加到普通模板中。除了循环 windows 的一些代码之外,我还为您提供了一些调试代码。干杯。
Option Explicit
Public Sub DocumentsAndWindows()
Dim vDocument As Document
Dim vWindow As Window
Debug.Print "Number of Documents.......: " & Application.Documents.Count
For Each vDocument In Application.Documents
Debug.Print " Document...............:" & vDocument.Name
Next
Debug.Print
Debug.Print "Number of Windows.........: " & Application.Windows.Count
For Each vWindow In Application.Windows
Debug.Print " Window.................: " & vWindow.Index & " - " & vWindow.Document.Name
Next
Debug.Print " Current Window.........: " & Application.ActiveWindow.WindowNumber
Debug.Print
End Sub
Public Sub CycleWindows()
If Application.ActiveWindow.Index < Application.Windows.Count Then
Application.Windows(Application.ActiveWindow.Index + 1).Activate
Else
Application.Windows(1).Activate
End If
Debug.Print "Current Window is.........: " & Application.ActiveWindow.Index
End Sub
我想用vba在window之间切换,所以我用了"switch windows"函数,用宏录制。手动点击按钮可以正常工作,但是当我使用录制的 vb 代码时,它根本不起作用。可能是什么问题?
代码如下:
Windows(2).Activate
我已经用尽方法搜索,但搜索结果提供的许多解决方案根本不起作用...
无效的代码:
ActiveDocument.ActiveWindow.Next.Activate
或
Sub AcivateNextDocumentWindow()
On Error GoTo ProcessError
If Windows.Count > 1 Then
Dim objWindow As Window
Set objWindow = ActiveDocument.ActiveWindow.Next
objWindow.Activate
End If
Exit Sub
ProcessError:
Windows(1).Activate
End Sub
我认为您的问题可能是由于文档与 windows 之间的差异造成的。 Windows 可以是多个 "views" 到一个文档中(您会看到像 Document1:1、文档 1:2 等这样的名称)或多个不同的文档。如果您 运行 来自特定文档中的代码的宏,您可能会遇到问题。建议您将代码添加到普通模板中。除了循环 windows 的一些代码之外,我还为您提供了一些调试代码。干杯。
Option Explicit
Public Sub DocumentsAndWindows()
Dim vDocument As Document
Dim vWindow As Window
Debug.Print "Number of Documents.......: " & Application.Documents.Count
For Each vDocument In Application.Documents
Debug.Print " Document...............:" & vDocument.Name
Next
Debug.Print
Debug.Print "Number of Windows.........: " & Application.Windows.Count
For Each vWindow In Application.Windows
Debug.Print " Window.................: " & vWindow.Index & " - " & vWindow.Document.Name
Next
Debug.Print " Current Window.........: " & Application.ActiveWindow.WindowNumber
Debug.Print
End Sub
Public Sub CycleWindows()
If Application.ActiveWindow.Index < Application.Windows.Count Then
Application.Windows(Application.ActiveWindow.Index + 1).Activate
Else
Application.Windows(1).Activate
End If
Debug.Print "Current Window is.........: " & Application.ActiveWindow.Index
End Sub