VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 Excel・Word 関係のメニュー
1.VBからExcel及びWordを操作する時の注意事項
2.VBからエクセルを起動・終了する基本操作例
3.上記、基本操作例を使ってのVBからExcel にデータを送りグラフを表示
4.Excel ワンポイントテクニック集
5.Excel 2007 以降のリボンを操作する及びユーザーからの操作を禁止する
6.指定のセル範囲の列幅・行の高さを含めてコピー・アンド・ペーストする
7.
8.
9.
10.
11.VB6.0 からワードを起動・終了する基本操作例
12.Word の既存ファイルを読み込み検索・置き換え後保存する
13.VB6.0からExcel/Wordを起動しExcelの表をWordに貼付印刷する
14.VBから Word の差し込み印刷機能を使って[宛て名ラベル]を印刷する
15.Word の Tasks プロパティを使ってのタスク(プロセス)の一覧を取得・他
16.Word VBA 簡易リファレンス及び使用例
17.
18.
19.
20.


11.VB6.0 からワードを起動・終了する基本的な操作 
1.VB6.0 からワード(Word)を起動する
2.VB6.0 からワード(Word)を終了する
3.上記実行上の留意事項
4. 
5. 
6. 

実行時バインディング(レイトバインディング/参照設定しなくても使用できる方法)での起動方法は、ご自分でコードが書け ないような人が使用するとトラブルの元となり却って時間がかかる事になりかねませんので、私としては理解しないままで使ってほしくないので今回の見直しから紹介をしない事にしました。
 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Word 2007/Word 2010(Word 2000〜Word 2003)
Option :[Option Explicit]
参照設定:Microsoft Word *.* ObjectLibrary / Microsoft Scripting Runtime 参照設定方法参照
使用 API:

その他 :ツール→オプション→全般→エラートラップで[エラー発生時に中断]以外にチェックを入れておいて下さい。
    :
このページのトップへ移動します。 1.VB6.0 からワード(Word)を起動する

Option Explicit

'--------------------- Private 変数の宣言部分 ----------------------------
Private Fso As New FileSystemObject 'ファイルを扱う場合、FileSystemObject を使った方が便利なので
Private WithEvents wdApp As Word.Application
Attribute wdApp.VB_VarHelpID = -1
Private wdDocs      As Word.Documents
Private wdDoc       As Word.Document
Private frgClose     As Boolean      'Word が起動中のフラグ
'-------------------------------------------------------------------------------

'--------------------- Word の起動処理関係 ----------------------------
Private Sub Command1_Click()
'Word を起動
'  Call WordOpen(Fso.BuildPath(App.Path, "test.doc"))  '既存のファイルをオープンして、Word を起動
  Call WordOpen("")  '新規ファイルをオープンして、Word を起動
End Sub

Private Sub WordOpen(ByVal FilePath As String)
'Word のオープン処理用プロシージャ
  If Not wdApp Is Nothing Then Exit Sub  'すでに起動中の場合の処理
  frgClose = False  '起動中は、ユーザーが Word を閉じれないように
  'ファイル名が未指定の場合は、新規ファイルを開く
  If Len(FilePath) = 0 Then
    '新規のファイルを開く場合
    Set wdApp = New Word.Application
    Set wdDocs = wdApp.Documents
    Set wdDoc = wdDocs.Add
  Else
    'ファイル名の指定がある場合はそのファイルの有無を確認
    If Fso.FileExists(FilePath) Then
      '既存のファイルを開く場合
      Set wdApp = New Word.Application
      Set wdDocs = wdApp.Documents
      Set wdDoc = wdDocs.Open(FilePath)
    Else
      MsgBox "ファイルが見つかりません。"
      '指定のファイルが見つからないので新規のファイルを開く
      Set wdApp = New Word.Application
      Set wdDoc = wdDocs.Add
    End If
  End If
  wdApp.Visible = True
End Sub

このページのトップへ移動します。 2.VB6.0 からワード(Word)を終了する

'--------------------- Word の終了処理関係 ----------------------------
Private Sub Command2_Click()
'Word を終了
  '名前をつけて、Doc 形式で保存
  Call WordClose(Fso.BuildPath(App.Path, "Test01.docx"), True)  'False の場合保存しないで終了
End Sub

Private Sub WordClose(ByVal FilePath As String, Optional ByVal CancelSave As Boolean = True)
'Word の終了処理用プロシージャ(Word 2010 / Windows 7 / VB6.0 の環境で動作確認)
  If wdApp Is Nothing Then Exit Sub  '起動していない場合は処理しない
  'ツール→オプション→全般→エラートラップ でエラー発生時に中断以外にチェックを入れておいて下さい。
  On Error Resume Next        'エラーが発生しても解放処理を実行したいので
  frgClose = True           'True : 閉じる事ができる(プログラムからの終了なので)
  Const wdFormatDocumentDefault = 16 'Word 2007 以下ではエラーがでるので
  wdApp.DisplayAlerts = False     '保存時の問合せのダイアログを非表示に設定
  '保存する場合
  If CancelSave Then
    Dim kts As String
    Dim fm As Variant
    'Word ファイルの拡張子を取得
    kts = Fso.GetExtensionName(FilePath)
    kts = LCase(kts)  '拡張子を小文字で取得

    '拡張子に合せて保存形式を変更(環境や仕様に合わせて変更修正願います。)
    Select Case kts
      Case "txt"             '(3) 改行が保持された Windows テキスト形式
        fm = wdFormatTextLineBreaks
      Case "doc"             '(0) Microsoft Word 97〜2003 形式 97〜2003
        fm = wdFormatDocument
      Case "docx"             '(16) Word の既定の文書形式。Word 2007 以降では、DOCX 形式です。
        If Val(wdApp.Version) >= 12 Then
         fm = wdFormatDocumentDefault
        End If
      Case "rtf"             '(6) リッチテキスト形式 (RTF)
        fm = wdFormatRTF
      Case Else              '必要なものは、追加して下さい。
        If Val(wdApp.Version) >= 12 Then
          fm = wdFormatDocumentDefault
        Else
          fm = wdFormatDocument
        End If
        MsgBox "ファイルの保存形式を確認して下さい。"
    End Select
    If Val(wdApp.Version) >= 14 Then
      '今のところ SaveAs でも使用できるようですが、一応新機能の方を使い分けしています。
      wdDoc.SaveAs2 FileName:=FilePath, FileFormat:=fm '名前を付けてファイルに保存
    Else
      'Word 2010 のVBAのヘルプでは、見当たらないし、インテリセンス機能でも表示されませんが
      '使用できるようです、どうも Word 2010 からは、SaveAs2 に変わったようなので使い分けを
      'しております。
      wdDoc.SaveAs FileName:=FilePath, FileFormat:=fm '名前を付けてファイルに保存
    End If
  End If
  Set wdDoc = Nothing   'wdDoc を解放
  Set wdDocs = Nothing  'wdDocs を解放
  If CancelSave = False Then
    '保留中の変更を保存しません。(問い合わせのダイアログボックスを表示しない)
    wdApp.Quit SaveChanges:=wdDoNotSaveChanges 'wdApp.DisplayAlerts = wdAlertsNone でも表示されるので
  Else
    wdApp.Quit     'Word  を終了します。
  End If
  Set wdApp = Nothing   'wdApp を解放
  If Err.Number <> 0 Then
    MsgBox "終了処理中にエラーNo." & Err.Number & " のエラーが発生しましたので確認下さい。"
    Err.Clear
  End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
'終了時の処理
  'WinWord.EXE が起動していたら閉じる
  If Not wdApp Is Nothing Then
    Call WordClose("", False)
  End If
End Sub

Private Sub wdApp_DocumentBeforeClose(ByVal Doc As Word.Document, Cancel As Boolean)
'VB6.0 から Word の DocumentBeforeClose イベントを監視してユーザーが Word を閉じれないようにする
'(VB6.0 から Word を操作している途中でユーザーが勝手に Word を閉じるとエラーが発生するので)
  If frgClose = False Then
    Cancel = True   'ユーザーが Word を閉じようとしたので、処理をキャンセルする
  Else
    Cancel = False  'キャンセルしない(閉じる)
  End If
End Sub

このページのトップへ移動します。 3.上記実行上の留意事項
 上記、実行図及びコントロール類の配置図(下記のように作っておくとコードを試したりする場合にも便利かと)
 word01_01

1.Excel 同様に間違った操作をすると、プロセスが残る事があります。
  詳しくは、[VBからExcel及びWordを操作する時の注意事項]をご覧下さい。
2.Word 2010 /Windows 7 /VB6.0 の環境で動作確認をしております。又、できる限り下位バージョンでも動作するように
  配慮はしておりますが全ての環境で動作確認をした分けではありませんので、ご使用環境で十分テスト願います。
  (プロセスが残っていないかどうか等)
3.VB6.0 からWord を操作しているコードは、殆ど見かけません、VBA のコードを移植するか、Word 上でやりたい事をマクロに
   記録して、そのマクロをVBのコードに移植して下さい。


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
VB6.0 から Word を起動する VB6.0 から Word を終了する VB6.0 から ワード を起動する VB6.0 から ワード を終了する
Microsoft Word 2000  Word 2002 Word 2003 Word 2007  Word 2010
VBA  Visual Basic for Applications


このページのトップへ移動します。