VB.NET Word文章をテキストに変換するには?

解決


さんたくん  2004-08-05 22:47:24  No: 115399

VB.NET Word文章(変更履歴付)をテキストに変換したい
誰か、情報くださいお願いします

補足ですが、VB6の環境ではできておりました
現在VB.NETに移行しながら勉強中です
すみませんがよろしくお願いします


マグ  2004-08-06 04:16:50  No: 115400

確か記憶では

Wordでの文章をテキストに変換するときはRichTextBoxを使ったと思います。
後、TextBoxのときの保存や読み込みをする命令語が違いますから、
注意してください。


Dental  2004-08-06 05:54:31  No: 115401

> > 補足ですが、VB6の環境ではできておりました
VB6の時は、どのようにして変換していたのでしょうか?
Wordをオートメーションで操作していた、という事ならば、
VB.NETでも、Wordを利用してみるとか。

> Wordでの文章をテキストに変換するときはRichTextBoxを使ったと思います。
使わないと思います。
RichTextBoxで読めるのは、Word文書(*.doc) ではなく、
テキスト(*.txt) と リッチテキスト(*.rtf) ですし。
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsrichtextboxstreamtypeclasstopic.asp


さんたくん  2004-08-06 18:58:23  No: 115402

マグさん  Dentalさん  ありがとうございます
以下参考になるかはわかりませんが、VB6で作成した
時のベースとなります

よろしくお願いします

'Microsoft word 9.0 Object Library を参照設定する

Private Sub Command1_Click(Index As Integer)

    Dim wdApp           As New Word.Application
    Dim wdDoc           As Word.Document
    Dim strTemplate     As String
    
    Set wdDoc = wdApp.Documents.Open(App.Path & "\TEST.doc")
    
    'テキストファイルを作成
    wdDoc.SaveAs App.Path & "\TEST.txt", wdFormatText

    wdDoc.Close
    Set wdDoc = Nothing
    wdApp.Quit
    Set wdApp = Nothing
    
    MsgBox "ファイルを作成しました"
    
End Sub


マグ  2004-08-06 20:29:12  No: 115403

さんたくんさん  すみませんでした。

リッチテキスト(*.rtf)のことをWord文章(*.Doc)と
今まで、勘違いして覚えていたようです。

確認したら、気がつきました。


マグ  2004-08-06 21:27:51  No: 115404

とりあえず、VB6のソースを変更してみました。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim wdApp As New Microsoft.Office.Interop.Word.Application
        Dim wdDoc As Microsoft.Office.Interop.Word.Document
        Dim strTemplate As String  '←この変数って意味ないような気がする・・・
        Dim ram As String
        Dim ggggytugit As Integer
        ram = System.Reflection.Assembly.GetExecutingAssembly().Location
        ggggytugit = ram.LastIndexOf("\")
        ram = ram.Substring(0, ggggytugit + 1)

        wdDoc = wdApp.Documents.Open(ram & "\TEST.doc")

        'テキストファイルを作成
        'wdDoc.SaveAs(ram & "\TEST.txt", wdFormatText)
        wdDoc.SaveAs(ram & "\TEST.txt")  '←ここをなんとかすれば、できるかも?

        wdDoc.Close()
        wdDoc = Nothing
        wdApp.Quit()
        wdApp = Nothing
        MessageBox.Show("ファイルを作成しました", "報告")
    End Sub

できたら、完成したソースを教えてください。


マグ  2004-08-07 20:04:20  No: 115405

もしかして、

wdDoc.SaveAs(ram & "\TEST.txt", wdFormatText)

の記述の

wdFormatTextって変数ですか?


特攻隊長まるるう  2004-08-09 19:29:27  No: 115406

>wdFormatTextって変数ですか?
WdSaveFormat クラスの定数です。ワードのヘルプで
SaveAs メソッドを調べれば分かることですが…。
[VB.NET]でのフルの名前空間は
  Word.WdSaveFormat.wdFormatText
となります。…これも[VB.NET]のオブジェクト
ブラウザで検索すればすぐに引っかかります。

結局、さんたくんさんの[VB6]のコードはワードの
Object Library オブジェクトライブラリを参照する
事によってワードにテキストファイルを作成するように
命令してます。つまり[VB6]側では特別な処理をして
いません。[VB.NET]に移行してもこの手法は有効で、
コードもほぼそのまま利用できます。
[VB.NET]
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim wAppFullPath As String = System.Reflection.Assembly.GetExecutingAssembly.Location
        Dim wAppFolderPath As String = System.IO.Path.GetDirectoryName(wAppFullPath)

        Dim wdApp As New Word.Application
        Dim wdDoc As Word.Document
        Dim strTemplate As String

        wdDoc = wdApp.Documents.Open(wAppFolderPath & "\TEST.doc")

        'テキストファイルを作成
        wdDoc.SaveAs(wAppFolderPath & "\TESTdoc.txt", Word.WdSaveFormat.wdFormatText)

        wdDoc.Close()
        wdDoc = Nothing
        wdApp.Quit()
        wdApp = Nothing

        MsgBox("ファイルを作成しました")

    End Sub


特攻隊長まるるう  2004-08-09 19:32:21  No: 115407

あ、こちらでの動作確認の際、使用したオブジェクト
ライブラリのバージョンは 10.0 です。


マグ  2004-08-09 19:57:32  No: 115408

さんたくんさん

このソースを何に使うのでしょうか・・・?

doc形式の文章をtxt形式に変える意味ってあるのでしょうか?


特攻隊長まるるう  2004-08-09 21:15:13  No: 115409

>マグさん
そんな質問しないでよ…(^^;)

例えばボクは大量の仕様書(Excel ブックでしたが)を
『そろそろ使わなくなってきたから場所を取らない様に
テキストにして保存しておいて?』と言われた事は
あります。共有して使うためにサーバに置くことは多いと
思いますが、そういった場合、量が増えてくると結構な
メモリを使います。doc形式の文章をtxt形式に変える
需要は案外多いと思います。1つ2つならワードを開いて
保存すればいいだけですが、大量にとなるとツールが必要
でしょう?目的は人それぞれです。目的を叶えるための
代替案や改善案ならまだしも、自分の興味を満足するのみの
質問は控えて頂きたいと思います。質問者がそれにも回答を
付けなきゃいけなくなるでしょ?時間が余ってる人ばかり
ではないんです。余計な質問は控えるべきです。
どうしても知りたいなら別スレッドでも立ててください。
…まぁ、板違いな気もしますが(汗)

あなた自身、使う必要が無いならなんで
>できたら、完成したソースを教えてください。
なんて書き込みしたの?色々な事に挑戦する意思は買って
ますが、以前ボクは
>独学ですか?基本的な事は本を1冊最後まで読むなり、
>セミナーに通うなりして実力を付けないと身につきませんよ
といった事を書き込みしたと思います。なんか色々と手を
出しすぎな上に基本的なことを質問しすぎな気がします。
別に基本的な事を聞いてはいけないと言ってる訳ではありま
せん。貴方の『自分で調べる能力』の成長が少なく感じるという
ことです。それでもたまに、ああ、調べてるなあと感じる所は
あるんです(それがどっかの書き込みのコピーであってもです)。

たまにマグさんに対する不満の書き込みもあるようですが…、
あれはあれで子供染みてて…なんだかなぁ(^^;)…って感じですが、
(子供染みてる部分はボクもあるんでそんなに気になりませんがw)
ボクもマグさんに『回答する側に回るならもう少しレベルアップして
欲しい』と思ってます。今回の回答も調べ方さえ分かっていれば
十分な回答ができたと思います。ボクの回答で難しい部分はありま
したか?マグさんにも調べられるレベルでしょ?ちゃんと調べて
いただけませんか?それに質問するだけで回答しなくても回答は
付きますよ?。解答が付かない場合は難しい問題だったり、逆に
自分で調べるべき問題だったり…そんな場合が多いです。特に
マグさんの質問は画像関係が多く、ボクも得意ではありませんし、
経験者の少ない難しい問題も多いです。自分で切り開かないと
いけない分野かもしれません。結構、その分野の回答者が少ないので
個人的にすごく期待してるんです。あせって回答者に回る必要は
ありません。質問ばかりでも構いません。じっくり実力をつけて
頂けませんか?


マグ  2004-08-09 22:54:19  No: 115410

分かりました。
ありがとうございました。


さんたくん  2004-08-10 02:54:16  No: 115411

マグさん  特攻隊長まるるうさん

レスありがとうございましたそして、返信のほう遅くなりました
すみませんでした

特攻隊長まるるうさん  以前にもお世話になりました
早速試してみます

マグさん  特攻隊長まるるうさん  ありがとうございました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加