Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


72669 / 76732 ←次へ | 前へ→

【8545】Re:Excel からwordを開きたいのですが?
回答  ichinose  - 03/10/23(木) 13:38 -

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

 

0 hits

【8537】Excel からwordを開きたいのですが? トクちゃん 03/10/23(木) 9:02 質問
【8538】Re:Excel からwordを開きたいのですが? INA 03/10/23(木) 10:12 回答
【8540】Re:Excel からwordを開きたいのですが? トクちゃん 03/10/23(木) 10:51 お礼
【8544】Re:Excel からwordを開きたいのですが? きむきむ 03/10/23(木) 13:35 発言
【8549】Re:Excel からwordを開きたいのですが? トクちゃん 03/10/23(木) 15:36 お礼
【8545】Re:Excel からwordを開きたいのですが? ichinose 03/10/23(木) 13:38 回答
【8548】Re:Excel からwordを開きたいのですが? トクちゃん 03/10/23(木) 15:32 質問
【8553】Re:Excel からwordを開きたいのですが? ichinose 03/10/23(木) 17:35 発言

72669 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free