none
VBからwordのファイルを開く方法? RRS feed

  • 質問

  • はじめまして,zen73と申します。
    VBからwordファイルを呼び出す方法を教えて頂きたいとおもいます。
    町内会から班長さんに渡す連絡文書を入れる封筒の宛名の差し込み印刷をしていましたがPCの扱いに不慣れな方には相当な苦労を強いています。
    そこでVBのメニューフォームからすべての操作を自動化してみようとしているところです。
    Visual Studio 2019 と word 2013 を使用しています。

    Public Class Form1
        Dim Futou As String
        Dim Meibo As String
        ' wordのファイルを開く
        Dim objWord As Object
        Dim objDoc As Object
        Dim objNewDoc As Object
    
         Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            If RadioButton1.Checked = True Then
                Futou = "小封筒.doc"
            ElseIf RadioButton2.Checked = True Then
                Futou = "中封筒.doc"
            ElseIf RadioButton3.Checked = True Then
                Futou = "大封筒.doc"
            Else
                MessageBox.Show("封筒のサイズを選択してください。")
            End If
            ' word文書を開く
            ' objWord = CreateObject("Word.Application")
            'objWord.Visible = True
            objDoc = objWord.Documents.Open("C:\AtenaPrint\ & Futou") 'ここでエラー
    
        End Sub
    End Class
    

    ハンドルされていない例外
    System.NullReferenceException:
    オブジェクト変数またはWithブロック変数が設定されていません。

    とのエラーが発生しました。このコードはnetで探したものですが対処の方法がわからず困っています。

    2019年6月26日 21:37

回答

  • 直前の二行がコメントアウトされているので、「何もない空箱(変数)に命令している」ため、NullReferenceException となります。なぜ、コメントアウトされているのでしょうか?

    次にファイル名のところの " の位置が間違っていて、& で変数の中身をつなげようとしていた部分が単なる文字列になっています。

    • 回答としてマーク goodwave 2019年6月27日 5:31
    2019年6月26日 23:12
    モデレータ
  • goodwave さま よろしく。

     

    Futou の変数ですが、

           'objDoc = objWord.Documents.Open("C:\AtenaPrint\ & Futou") 'ここでエラー        'objDoc = objWord.Documents.Open("C:\AtenaPrint\" & "Futou") 'Error        objDoc = objWord.Documents.Open("C:\AtenaPrint\" & Futou)

    では如何ですか?。

    折角、変数を使っているのに、その名称で追加されていますよ。

    (Azulean さま の最初のご指摘の最後の部分です。)


    • 編集済み ShiroYuki_Mot 2019年6月27日 5:00 追記
    • 回答としてマーク goodwave 2019年6月27日 5:31
    • 回答としてマークされていない goodwave 2019年6月27日 5:32
    • 回答としてマーク goodwave 2019年6月27日 5:32
    • 回答としてマークされていない goodwave 2019年6月27日 5:32
    • 回答としてマーク goodwave 2019年6月27日 5:34
    2019年6月27日 4:56

すべての返信

  • 直前の二行がコメントアウトされているので、「何もない空箱(変数)に命令している」ため、NullReferenceException となります。なぜ、コメントアウトされているのでしょうか?

    次にファイル名のところの " の位置が間違っていて、& で変数の中身をつなげようとしていた部分が単なる文字列になっています。

    • 回答としてマーク goodwave 2019年6月27日 5:31
    2019年6月26日 23:12
    モデレータ
  • Azuleanさん,返信ありがとうございます。

    ご指摘いただいたように書き直してみました。

     ' word文書を開く
     objWord = CreateObject("Word.Application")
     objWord.Visible = True
     objDoc = objWord.Documents.Open("C:\AtenaPrint\" & "Futou")

    すると,ファイルではなくword本体がたちあがり,ファイルが見つからないとのエラー表示が出ました。

    System.Runtime.InteropServices.COMException
     申し訳ございません。ファイルが見つかりませんでした。
    ファイルが移動されたか、名前が変更されたか、削除された可能性があります。
    (C:\AtenaPrint\Futou)

    word本体は,タイトルバーには「word」と表示され,リボンはすべて灰色で表示されています。

    2019年6月27日 3:37
  • 一般的には、Word用のファイル名には.docxや.docmなどの拡張子が付くものではないでしょうか。

    Explorerで、Shiftキーを押しながらファイルを右クリックすると「パスのコピー」というのができるので確認してみてください。

    ファイルではなくword本体がたちあがり,

    Windows的には、Wordは常に立ち上がるもので、立ち上がったWordがファイルを開く、というイメージになります。この場合だと「Wordは立ち上がるがファイルが開かず」という表現になります。

    2019年6月27日 3:50
  • goodwave さま よろしく。

     

    Futou の変数ですが、

           'objDoc = objWord.Documents.Open("C:\AtenaPrint\ & Futou") 'ここでエラー        'objDoc = objWord.Documents.Open("C:\AtenaPrint\" & "Futou") 'Error        objDoc = objWord.Documents.Open("C:\AtenaPrint\" & Futou)

    では如何ですか?。

    折角、変数を使っているのに、その名称で追加されていますよ。

    (Azulean さま の最初のご指摘の最後の部分です。)


    • 編集済み ShiroYuki_Mot 2019年6月27日 5:00 追記
    • 回答としてマーク goodwave 2019年6月27日 5:31
    • 回答としてマークされていない goodwave 2019年6月27日 5:32
    • 回答としてマーク goodwave 2019年6月27日 5:32
    • 回答としてマークされていない goodwave 2019年6月27日 5:32
    • 回答としてマーク goodwave 2019年6月27日 5:34
    2019年6月27日 4:56
  • Hongliangさんありがとうございます。

    拡張子を.docxとして実行してみましたが,状況は変わりませんでした。

    2019年6月27日 4:59
  • 皆さん,ありがとうございました。

    本当に助かりました。次に差し込み文書の宛先の選択を勉強することになります。
    こうしたことが続けられますことも,皆さんのご助力のお陰です。

    2019年6月27日 5:42