| 
    
     |  | ▼トクちゃん さん: こんにちは。
 >Excel からWordの指定したファイルを開きたいのですがどうしたらよいのでしょうか?
 >開いたWordに文字を記入(任意の手入力です。この間はマクロを停止したいのです)し、その文字をExcelに戻す作業をしたいのですが、教えてください。
 
 例として、ワード文書には、何も書いてない罫線で囲った枠だけがひとつある
 文書1.docを指定ファイルとします(と限定するのは、Wordのオブジェクトの使い方を
 私がほとんど知らないので・・・)。
 
 1 Excel/VBAのmainプロシジャーを実行すると、Word及び、文書1.docが表示され、
 作成されている罫線での囲い込みが選択されます。
 この時、Excelは非表示になります。
 
 2 囲い込み罫線内に適当な文字を入力したら、Word又は,文書1.docを閉じてください。
 
 3 入力した内容がSheet1シートのセルA1にセットされ、Excelが表示される
 
 という仕様です。
 
 尚、以下に示すマクロの入ったExcelブック(仮にWdcopy.xlsとしましょう)には、
 「Microsoft Word 9.0 Object Library」(Office2000の場合)を参照設定
 してください。
 まず、標準モジュールに
 '=======================================================
 public cls As Class1
 Sub main()
 Set cls = New Class1
 With cls
 If .doc_open(ThisWorkbook.Path & "\文書1.doc") = 0 Then
 Application.Visible = False
 .初期動作 Worksheets("Sheet1").Range("a1")
 End If
 End With
 End Sub
 
 次にクラスモジュール(クラス名 Class1)に
 '========================================================
 Private wdapp As Word.Application
 Private WithEvents wdoc As Word.Document
 Private svrg As Range
 '===============================================
 Function doc_open(docpath As String) As Long
 On Error Resume Next
 Set wdapp = New Word.Application
 With wdapp
 .Visible = True
 End With
 Set wdoc = wdapp.Documents.Open(docpath)
 doc_open = Err.Number
 On Error GoTo 0
 End Function
 '===============================================
 Sub 初期動作(rng As Range)
 Dim ttl As Word.Table
 Dim cs As Word.Cell
 wdapp.Activate
 Set ttl = wdoc.Tables(1)
 ttl.Cell(1, 1).Select
 Set svrg = rng
 End Sub
 '===============================================
 Private Sub wdoc_Close()
 Dim ttl As Word.Table
 Set ttl = wdoc.Tables(1)
 svrg.Value = Replace$(ttl.Cell(1, 1).Range.Text, Chr(13), "")
 svrg.Value = Replace$(svrg.Value, Chr(7), "")
 wdoc.Saved = True
 End Sub
 
 最後にSheet1のシートモジュールに
 '======================================================
 Private Sub Worksheet_Change(ByVal Target As Range)
 With Application
 If Target.Address = Range("a1").Address Then
 Application.Visible = True
 Set cls = Nothing
 End If
 End With
 End Sub
 
 尚、マクロの入ったExcelブックとWord文書である文書1.docは、
 同じフォルダに保存してください。
 
 
 
 |  |