注意事項

  • 自分の環境で動くことは確認したものの、誰の環境でも動くことを保証しない
  • Visibleの記述位置、Pasteの記述位置によって、動作結果が異なる現象を確認した。調査中

機能

Excelファイルに記述された表をクリップボードにコピーし、ついでWordファイルにクリップボードから表を貼り付ける。表の位置は中央揃えとする。

エクセルファイルの準備

名前付きセルを定義しておく。スクリプトの都合上名前はTableとする。名前付きセルの定義方法に関する詳細を知りたい場合は、参考記事を参照する

サンプルスクリプト

Option Explicit

Dim objExcel

'エクセルオブジェクトを作成します
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Open "X:\My Projects\Excel表をWordに貼り付け(WSH)\Book1.xls"

objExcel.Sheets(1).Range("Table").Select

Dim objWord
Dim objDoc
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("X:\My Projects\Excel表をWordに貼り付け(WSH)\Doc1.doc")

'全アプリ起動後にコピーをしないとうまく表示できなかった。理由は不明
objExcel.Selection.Copy
objWord.Selection.Paste		'オプションなしで貼り付け
Dim objTable
Set objTable = objDoc.Tables(objDoc.Tables.Count)		'CountをTablesの引数とすれば最後のテーブルが指定可能
objTable.Rows.Alignment = 1		'1 => wdAlignRowCenter

'各オブジェクトの破棄
'→起動したアプリケーションの終了ではなく、操作インターフェイスとなるオブジェクトを破棄するだけのようだ
Set objTable = Nothing
Set objDoc = Nothing
Set objExcel = Nothing
Set objWord = Nothing

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます