shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel VBA】ExcelとWordで画面を分割表示するサンプル

ExcelのVBAで、Wordを操作する際に画面内にExcelとWordを並べて表示の基本事例です。

Excelの画面を二つ並べて処理したいときは、【Excel VBA】Excelで画面を分割表示のサンプル  に基本事例を掲載しています。

内容:

必要な背景

ExcelのVBAで、処理状況を確認しながらWordを操作する際に

  • Excelの画面と重ならないように画面を分割したい場合
  • メッセージボックス等の表示がアクティブでないために、マクロが停止しているような誤解を避けたい場合

などに使用します。

VBAサンプル

VBAのサンプルは次のとおりです。

Function ExcelとWordで画面を分割表示のサンプル()

    '===動作確認用でWordの起動==='
    Dim wrdApp As Object
    Dim wrdDoc As Object
    Set wrdApp = CreateObject("Word.Application")

    ' Word文書を開く'
    Set wrdDoc = wrdApp.Documents.Add
    wrdApp.Visible = True
    '====ここまで動作確認用のWord起動==='
    
    ' 画面の幅と高さを取得'
    Dim screenWidth As Long
    Dim screenHeight As Long
    
    Application.WindowState = xlMaximized
    screenWidth = Application.Width
    screenHeight = Application.Height

    ' Wordウィンドウを画面の左半分に配置'
    With wrdApp
        .WindowState = xlNormal
        .Top = 0
        .Left = 0
        .Width = screenWidth / 2
        .Height = screenHeight
    End With
    
    ' Excelウィンドウを画面の右半分に配置'
    With Application
        .WindowState = xlNormal
        .Top = 0
        .Left = screenWidth / 2
        .Width = screenWidth / 2
        .Height = screenHeight
    End With
    
End Function

VBAの補足説明

  • 上記コードで、冒頭のWord起動部分は動作確認用なので、実際の対象に修正します。
  • 次のコード部分については、Excelの画面を最大化してサイズを取得しています。

    Application.WindowState = xlMaximized
    screenWidth = Application.Width
    screenHeight = Application.Height

    この箇所は、

    screenWidth = Application.UsableWidth
    screenHeight = Application.UsableHeight
    とすることも可能ですが、私の動作環境では期待するサイズが取得できなかったので、上述のとおりとしています。

以上、Excel VBAを利用し、ExcelとWordで画面を分割表示するサンプルでした。