|
▼トクちゃん さん:
こんにちは。
>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は、
同じフォルダに保存してください。
|
|