Excel VBA質問箱 IV

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

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


12804 / 13644 ツリー ←次へ | 前へ→

【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 発言

【8537】Excel からwordを開きたいのですが?
質問  トクちゃん  - 03/10/23(木) 9:02 -

引用なし
パスワード
   Excel からWordの指定したファイルを開きたいのですがどうしたらよいのでしょうか?
開いたWordに文字を記入(任意の手入力です。この間はマクロを停止したいのです)し、その文字をExcelに戻す作業をしたいのですが、教えてください。

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

引用なし
パスワード
   >Excel からWordの指定したファイルを開きたいのですがどうしたらよいのでしょうか?
関連づけされている拡張子(エクスプローラからダブルクリックで起動する)の
ファイルであれば、ShellExecute関数で実行できます。

<標準モジュール>
Declare Function ShellExecute _
Lib "shell32.dll" _
Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd_ As Long) _
As Long

Sub Sample()
Dim Ret As Long
Dim ファイル名 As String
Dim フォルダ名 As String

ファイル名 = "無題.txt"
フォルダ名 = "C:\My Documents\"

Ret = ShellExecute(0, "open", ファイル名, "", フォルダ名, 1)

End Sub


>開いたWordに文字を記入(任意の手入力です。この間はマクロを停止したいのです)
>し、その文字をExcelに戻す作業をしたいのですが、教えてください。
マクロ停止中に、Wordでの手動操作をEXCELで取得することは無理でしょう。
Word側でVBAを使うとか、上記のマクロとは別に、
Word文書の取込マクロを作った方が簡単なように思えますが・・・
もしくはEXCELに入力した文字をWordに書き込むとか・・

【8540】Re:Excel からwordを開きたいのですが?
お礼  トクちゃん  - 03/10/23(木) 10:51 -

引用なし
パスワード
   ▼INA さん:
>>Excel からWordの指定したファイルを開きたいのですがどうしたらよいのでしょうか?
>関連づけされている拡張子(エクスプローラからダブルクリックで起動する)の
>ファイルであれば、ShellExecute関数で実行できます。
>
><標準モジュール>
>Declare Function ShellExecute _
>Lib "shell32.dll" _
>Alias "ShellExecuteA" _
>(ByVal hwnd As Long, _
>ByVal lpOperation As String, _
>ByVal lpFile As String, _
>ByVal lpParameters As String, _
>ByVal lpDirectory As String, _
>ByVal nShowCmd_ As Long) _
>As Long
>
>Sub Sample()
>Dim Ret As Long
>Dim ファイル名 As String
>Dim フォルダ名 As String
>
>ファイル名 = "無題.txt"
>フォルダ名 = "C:\My Documents\"
>
>Ret = ShellExecute(0, "open", ファイル名, "", フォルダ名, 1)
>
>End Sub
>
>
>>開いたWordに文字を記入(任意の手入力です。この間はマクロを停止したいのです)
>>し、その文字をExcelに戻す作業をしたいのですが、教えてください。
>マクロ停止中に、Wordでの手動操作をEXCELで取得することは無理でしょう。
>Word側でVBAを使うとか、上記のマクロとは別に、
>Word文書の取込マクロを作った方が簡単なように思えますが・・・
>もしくはEXCELに入力した文字をWordに書き込むとか・・

INA さん 早々の回答 ありがとうございます。
マクロ初心者なので解らないことばかりですみません。
このマクロでチャレンジしてみます。

【8544】Re:Excel からwordを開きたいのですが?
発言  きむきむ  - 03/10/23(木) 13:35 -

引用なし
パスワード
   ▼トクちゃん さん:
>Excel からWordの指定したファイルを開きたいのですがどうしたらよいのでしょうか?

CreateObject()関数を使用してもファイルを開く事ができますよ。

【Wordファイルを開く例】
Sub Word_open()
  Dim oApp As Object
  
  Set oApp = CreateObject("Word.Application")
  With oApp
    .Visible = True
    .Documents.Open FileName:="ファイル名"
  End With
  Set oApp = Nothing

  End
'
End Sub

ちなみに、同じ様にPowerPointのファイルも操作する事が可能です。
【PowerPointファイルを開く例】
Sub word_open()
  Dim oApp As Object
  
  Set oApp = CreateObject("PowerPoint.Application")
  With oApp
    .Visible = True
    .Presentations.Open FileName:="ファイル名", ReadOnly:=msoFalse
  End With
  Set oApp = Nothing

  End
End Sub

こちらも試してみては如何でしょうか?

【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は、
同じフォルダに保存してください。

 

【8548】Re:Excel からwordを開きたいのですが?
質問  トクちゃん  - 03/10/23(木) 15:32 -

引用なし
パスワード
   ▼ichinose さん:
 
 大変な力作ありがとうございます。 
 回答に感謝いたします。

 ichinose さんの指示どうり各モジュールに全て格納しましたが

>次にクラスモジュール(クラス名 Class1)に
>'========================================================
>Private wdapp As Word.Application

 この部分でスッタクしてしまいます。
 私の格納のしかたに不備があると思いますが、
 何か解決策がございましたら、アドバイスお願いします。
 

【8549】Re:Excel からwordを開きたいのですが?
お礼  トクちゃん  - 03/10/23(木) 15:36 -

引用なし
パスワード
   ▼きむきむ さん:
 ありがとうございます。
 きむきむ さんのマクロでより多くのアプリケーションを開くことができそうです。
 また何かありましたらよろしくお願いします。

【8553】Re:Excel からwordを開きたいのですが?
発言  ichinose  - 03/10/23(木) 17:35 -

引用なし
パスワード
   ▼トクちゃん さん:
こんにちは。
> 
> 大変な力作ありがとうございます。 
> 回答に感謝いたします。
>
> ichinose さんの指示どうり各モジュールに全て格納しましたが
>
>>次にクラスモジュール(クラス名 Class1)に
>>'========================================================
>>Private wdapp As Word.Application
>
> この部分でスッタクしてしまいます。
> 私の格納のしかたに不備があると思いますが、
> 何か解決策がございましたら、アドバイスお願いします。
この部分でえらーになるとしたら、参照設定がされていない事が考えられます。

>尚、以下に示すマクロの入ったExcelブック(仮にWdcopy.xlsとしましょう)には、
>「Microsoft Word 9.0 Object Library」(Office2000の場合)を参照設定
>してください。

↑の事です。

正しく参照設定されてれば、VBEの「ツール」---「参照設定」で
Microsoft Word 9.0 Object Library にチェックが入っているはずです。

又、正しく参照設定されてれば、
標準モジュールなどで

dim aaa as  
なんて記述した場合(コピーではなく)、普通メンバリストが表示されるのですが、
その中に「Word」というメンバが入っているのですが・・・。
確認してみてください。

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