如何在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