お世話になります。
ExcelのVBAで、WORD文書に表を作成する方法が分かれば、ご教示ください。
複数パターンの長文の文章を人によって出し分けて、WORDに貼り付けてPDF化して保存する
・・・というPGMを作りたいと思っています。
----<やりたいことの概要>-----
@エクセルで対象者リストと、シートごとに分けた文章を複数種類用意しておく。
※文章には文字色やセルの色の設定などもしています。
※対象者1人につき、複数の文章を上から順に貼り付けていきます。
A対象者が変わるごとにWORD文書を新規作成。
B対象者ごとに、指定したシートから文章を「列」単位でコピー。
WORD文書に1×1の表を作成してそこに貼り付け。ページ区切りをする。
これを繰り返す。
※@の文章をWORDに貼り付ける際、文字色等を引き継ぐため、テキスト貼り付けで
はなく、WORDに1×1の表を作成し、その表の中にエクセルの列をそのまま貼り付ける
という方法を考えました。(苦肉の策です・・・)
Cすべての文章を貼り付け終わったら、対象者の名前を置き換えて、PDFで保存。
-------------------------------
エクセルVBAは、記録マクロを修正したり、コードを見よう見まねでネットで探してきて
つぎはぎしながら四苦八苦して作るレベルです・・・。
現在、上記Bの「WORD文書に1×1の表を作成する」でつまづいております。
(「実行時エラー13:型が一致しません」を解決できないでいます。)
ボロボロで恥ずかしいですが、以下、現在書いているコードです。
Sub メッセージファイル作成()
'変数定義
Dim waitTime As Variant
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
★つまづき箇所★このWordTblの型をTableにしてみたり、Word.Tableにしてみています・・・
Dim WordTbl As Word.Range
Dim l, lRow, lCol, C As Long
Dim PetName, Years, shtname, pdfileName, path, pdfilepath As String
Dim ws1, sht As Worksheet
'wordを起動する
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = T
'起動を待つ間、PGMを3秒止める
waitTime = Now + TimeValue("0:00:03")
Application.Wait waitTimerue
'エクセルシートの設定
Set ws1 = Worksheets("★一覧シート★")
'エクセルシートのデータ数を把握
ws1.Select
lRow = Cells(Rows.Count, "A").End(xlUp).Row
'対象者人数分、WORD⇒PDF作成を繰り返す
For l = 3 To lRow 'A列の最終行分繰り返す。
With WordApp
.Documents.Add 'Word文書を新規作成
Set WordDoc = WordApp.ActiveDocument
End With
'対象者ごとに必要な文章の数分、wordへの貼り付けを繰り返す
lCol = Cells(l, "J").Value +11
For C = 11 To lCol
shtname = ws1.Cells(l, C).Value 'シート名を取得
Set sht = Worksheets(shtname)
sht.Select
sht.Column("A").Copy '文章シートのA列をコピー
★以下、つまづき箇所★ここから先に進めていません。
'WORD文書に表を作成する
With GetObject(Class:="Word.Application")
Set WordTbl = WordDoc.Tables.Add(Range:=Selection, NumRows:=1, NumColumns:=1)
With WordTbl
Selection.PasteAsNestedTable '表の中にエクセル表を貼り付け
ActiveDocument.Bookmarks("EndOfDoc").Select 'Wordの末尾を選択
Selection.InsertBreak Type:=wdPageBreak 'ページ区切りを挿入
End With
End With
Next C
・・・・・・以下省略・・・・・・・