プログラム初心者です。
仕事でWordで作ったものをテキストファイルへ変換してほしいと依頼がありました。
自分の勉強になると思いdelphiで組んでみようと思ったのですが、何から手をつけていいのかわかりません。
もし、お時間のある方がいればご指導をお願いします。
質問の回答になってませんけど、Word単体で、テキストファイルに保存するマクロを作った方が効率的じゃないですか?
Novさん早速の回答ありがとうございます。
自分の勉強という名目なので、効率的な方法があるならそちらでもかまいません。方法がたくさんあるのであれば、自分の選択肢も増えて助かります。
どこか参考になるサイトなどあれば教えていただいてもいいですか?
MS-WORDのマクロはVBAなのでここでの問答はちょっと...
ただ、マクロの記録で'テキストに保存'を試せば、方法は分かると思います。
こんにちは,Mr.XRAYです.
.docファイルからテキスト部分を取出すには,
いくつか方法があると思いますが.
(1) .docのファイルのフォーマットから,自力でコーディングする
フォーマットは,例えば以下のサイト等から調べる
http://www.wotsit.org/
(2) ワードのオブジェクトを生成し,ワードの文書を読み込み,テキスト形式で保存する
(3) テキストを抽出するプログラムを,Delphiから制御して取出す
例えば以下のようなものを使用
[434_ワードやエクセルの文書内のテキストを取出す]
http://mrxray.on.coocan.jp/Delphi/plSamples/434_TextFromDocs.htm
今思いついたところではこんなところです.
余計なお世話ですが,タイトルがちょっと長すぎるのでは...
タイトルが本文になっているような.
このあたりかな,以下は参考です.
タイトルの注意まで書いているところは少ないですね.
メールでも掲示板でも,Q and Aに関しては同じです.
http://www.hyuki.com/writing/mailmake.html#subject
Novさん
流れで質問をしてしまいましたが、おっしゃるとおりです。私の質問はこの場に合っていませんでしたね。
また、自力で調べて不明な点は他の場で聞いて見ます。
返答して頂きありがとうございました。
Mr.XRAY
すみません。まず、質問をする前の常識から勉強不足でした。
URLを載せていただきありがとうございます。教えていただいたサイトから勉強させていただきます。また、判らない点が出てきたらお聞きすると思いますが、よろしくお願いします。
自分の勉強ということですので,こんなことも知っておくと便利です.
以下は,VBS (VBSctrip) のコードを実行する例です.
VBS は結構使われています.サンプルもネット上で多く見つかります.
以下のコードを 'ChangeDocToText.vbs' という名前で保存します.
ワードの文書は,'ワード文書.doc' とします.
どちらも,プロジェクトのフォルダにあるものとします.
このVBSのコードも以前,ネットで見つけたものです.
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WD = CreateObject("Word.Application")
For Each n in WScript.Arguments
t = LCase(FSO.GetExtensionName(n))
If (t = "doc") Or (t = "rtf") Then
Set d = WD.Documents.Open(n)
d.SaveAs _
d.Path & "\" & _
Replace(FSO.GetFileName(n), "." & t,".txt"), 2
d.Close
End If
Next
WD.Quit
Set WD = Nothing
Set FSO = Nothing
そして,次のプログラムを実行します.
プロジェクトのフォルダに 'ワード文書.txt' という名前のテキストファイルができます.
implementation
uses ShellAPI;
{$R *.dfm}
//=============================================================================
// .docファイルのテキストを取出すVBSのコードを実行
// usesにShellAPIが必要
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
VBSPath : String;
DocFileName : String;
begin
VBSPath := ExtractFilePath(Application.ExeName) + 'ChangeDocToText.vbs';
DocFileName := ExtractFilePath(Application.ExeName) + 'ワード文書.doc';
ShellExecute(Handle,'open',PChar(VBSPath), PChar(DocFileName), nil, SW_HIDE);
end;
スミマセン,毎度なんですが,間違えました.
VBSctrip ---> VBScript
こんなとこも参考になれば.
[950_Delphi で VBScript を操作]
http://mrxray.on.coocan.jp/Delphi/plSamples/950_VBScript.htm
Mr.XRAYさんの
>(2) ワードのオブジェクトを生成し,ワードの文書を読み込み,テキスト形式で保存する
をすべてDelphiでコーディングした例です。
uses に ComObj を追加してください。
const
//適当なファイル名に変更してください
SourceName = 'z:\Test.doc';
DestName = 'z:\Test.txt';
//***********************************************************
// SourceNameのWordドキュメントファイルを
// DestNameのテキストファイルに保存する
//***********************************************************
procedure ChangeDocToText(SourceName, DestName: string);
const
wdFormatText = 2;
var
WordApp, WordDoc : OleVariant;
begin
WordApp := CreateOleObject('Word.Application');
WordDoc := WordApp.Documents.Open(SourceName);
WordDoc.SaveAs(DestName, wdFormatText);
WordDoc.Close;
WordApp.Quit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ChangeDocToText(SourceName, DestName);
end;
Mr.XRAY
お忙しい中ここまで丁寧にありがとうございます。
思い切って書き込みをして良かったです。
takanaさん
ご協力ありがとうございます。
まだ、始めたばかりのため時間はかかると思いますが、コーディングをしっかり理解して使わせていただきます。
ツイート | ![]() |