• 締切済み

ワードファイルの一括置換プログラム

キーワード(80種類程)が含まれたワードファイル(10ページ程度)と、 キーワード(1行目)とそれに対応した文字列(2行目以降)が書かれたエクセルファイル(400行程)があります。 たとえば10行目が指定された場合、10行目に書かれた文字列に置換したワードファイルを作るプログラムを作りたいです。どうやって作ればよいのか、アドバイスお願いします。 1)C言語で、 ワードファイルの文字列置換コマンドができる関数 replace() エクセルファイルのセルの文字列を取得する関数 str() があれば、プログラムは以下のようになりますが、これらの関数が見つかりません。 2)エクセルやワードのマクロで何とかなるのかも知れませんが、エクセルファイルは自分の物ではないので参照するだけで書き込みはしたくありません。 3)C#であれば、今回ほしいreplace() 関数が作れそうな記事は見つかりました。 http://mutatsu.blog.fc2.com/blog-entry-25.html でも、ややこしくてよくわかりません。Cの関数でないのでしょうか? ーーー ワードファイルA エクセルファイルB char str1[BUFSIZE],str2[BUFSIZE]; int x,y,table1; while( (str1 = str(B, table1, x, y0)) != NULL) {  str2 = str(B, table1, x, y);  if(str2 != NULL) {   replace(A, str1, str2);  }  x++; }

みんなの回答

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.3

>それは理解しています。だから、 >  ワードのファイルのテキスト部分を > テキストファイルを扱うように文字列置換を行うだけの、ワードファイル用の関数replace() >がないのか、お聞きしているのです。 少なくともCの標準関数としてはありません。 どこかの誰かが作ってる可能性もありますが少なくとも私は聞いたことありません(.NET使う方が楽だから可能性はかなり低いと思うけど)。

iruiru298
質問者

お礼

>どこかの誰かが作ってる可能性もありますが少なくとも私は聞いたことありません(.NET使う方が楽だから可能性はかなり低いと思うけど)。 やはりそうですか。 どこかの誰かが作ってるかもと思い、質問しましたが、無いようですね。 ありがとうございました。

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.2

>でも、ややこしくてよくわかりません。Cの関数でないのでしょうか? C#というか.NETでややこしいというのでしたら、Cでやるのはもっとややこしいですよ。 ワードのファイルにしろエクセルのファイルにしろ、ただのテキストファイルじゃありませんから。

iruiru298
質問者

お礼

回答ありがとうございます。 >ワードのファイルにしろエクセルのファイルにしろ、ただのテキストファイルじゃありませんから。 それは理解しています。だから、  ワードのファイルのテキスト部分を  テキストファイルを扱うように文字列置換を行うだけの、ワードファイル用の関数replace() がないのか、お聞きしているのです。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

ExcelのVBAで処理するのが賢いと思います。 > エクセルファイルは自分の物ではないので参照するだけで書き込みはしたくありません。 であれば、マクロ実行するための質問者さん用のExcelファイル作っては。 保存するWordのファイル名、対象の行番号とか、何らかの方法で指定する必要はあるんだし。 対象のWordファイルは、作りたいWordファイルの元ネタって事ですから、テンプレート(*.dot, *.dotx)として保存しとくと便利だと思います。 下記のQ&Aやサイトの説明の内容は質問の話に近いと思うので、参考になると思います。 excel VBAを利用し、テンプレートとなるワードファイルの一部分を - オフィス系ソフト - 教えて!goo http://okwave.jp/qa/q5989414.html VBAのお勉強 Excelマクロから、Wordの操作 » simple blog http://www.simple-sys.com/blog/2008/03/29/172/

iruiru298
質問者

お礼

回答ありがとうございます。 ExcelのVBAですか。 紹介くださったページ拝見しました。 確かに、エクセルのデータを頼りに、ワードの置換コマンドを出しまくれば希望した処理になりますね。 ありがとうございます。 できたら、エクセルとワードファイルは読み込みだけで行いたいので、  2つのファイルを指定して、  キーワード行と置換文字列行を指定すると  ワードファイルが出力される という独立したプログラムも、引き続き検討したいです。

関連するQ&A

  • ワードファイルの一括置換

    キーワード(80種類程)が含まれたワードファイル(10ページ程度)と、 キーワード(1行目)とそれに対応した文字列(2行目以降)が書かれたエクセルファイル(400行程)があります。 たとえば10行目が指定された場合、10行目に書かれた文字列に置換したワードファイルを簡単に作成できる方法ありませんか?

  • 複数のワードファイルの一括置換について

    フォルダ内にあるワードファイルにある文字列を一括置換したいと考えております。 ワードファイルは10個以上はあり、まったく同じ言葉が含まれております。 使用環境はWindowsXP、Word2003を使用しております。 シェアウェアのソフトは見つけたのですが、フリーソフトは見つけることができませんでした。 置換したい文字列は、ごく一般的な日本語です。 詳しい方どなたかよろしくお願いいたします。

  • EXCEL VBAにて、WORDへ置換

    EXCEL VBAにて、WORD文書への文字列置換を行っております。 文字列の置換自体はできています。 が、 置換文字列に「改行」(vbCRやvbLF)をいれて置換すると、 word側での表示が□になってしまいます。 vbCrだけでもvbLFだけでも、vbCRLFでも□と表示されてしまいました。 chr(13) & chr(10)でも□になりました。 EXCEL VBA にて WORDへ文字列置換する場合に送る、改行コード (たぶん「^p」と予測をつけているのですが)を chr関数等での 表示方法を教えてください。 EXCEL2003 WORD2003 よろしくお願いします。

  • 置換について

    エクセルで、重要な語句に対して部分的に色付けされた文章が記載されたセルがあるとします。 そのセル内の文字列を、ctrl+FやReplace関数を使って置換をかけた場合、色付けした文字列がすべて黒に変わってしまいます。 置換対象文字列以外は、置換前の状態のまましたいのですが、どなたかその方法についてご存知の方いらっしゃらないでしょうか? ぜひ、ご教授願います。

  • PHPソースファイルの文字列置換をしてから、

    PHPソースファイルの文字列置換をしてから、 そのスクリプトを実行する方法を実行しようとしている のですが、うまくいきません。 似たような質問(http://oshiete.nikkeibp.co.jp/qa5496696.html) を参考にして、文字列置換自体はうまくいったのですが、 phpファイル実行時にまったく関係の無いはずの DBアクセスでエラーが発生してしまいました。 変換前前のphpファイルに置換後の文字列を手で入れて、 データベース実行するとうまくいきます。 しかしながら、phpファイルの文字列置換をstr_replaceで実行し、別名保存した後 includeしても、うまくいかないといった状況です。 ちなみに置換後のphpファイル内で $置換後文字列 = "test"; echo $置換前文字列; とすると、置換前文字列が置換後文字列に きちんと変わっているようで、 "test"と出力されます。 もしかすると、原因は違う所に潜んでいるのかもしれませんが、 どこを調べれば良いのか検討がつかず困っております。 どなたか解決手段の分かる方がいらっしゃれば教えて頂けませんでしょうか? -------------------------------------------------------------- 尚、ファイル構成は top |-change (1.php) |-database (2.php) |-search (検索画面[データベース検索の入り口。form action ="./3.php"],3.php) |-base (4.php,5.php[tempファイル]) となっており、 それぞれの中身は 1.文字列置換実行用のphpファイル(1.php):  1-1.file_get_contentsで4のphpファイルを取得  1-2.str_replaceを用いて文字列置換  1-3.文字列置換したファイルをfwriteで4.phpと同じディレクトリに保存(5.php)  1-4.5.phpをincludeする。  1-5.5.phpをunlinkする。 2.データベースアクセス(mysql)用関数を含むphpファイル(2.php):  ↓エラーの原因と思われる関数  function connect() { global $host,$user_id,$passwd,$con; $con = mysql_connect($host,$user_id,$passwd); } 置換前phpファイルを手動で文字列置換した場合には  同ファイル内で設定したglobal変数の値がきちんと格納されており、  データベース実行がうまくいきます。  置換後phpファイルでは$host等に値が格納されていないため、  データベース実行がうまくいきません。  グローバル変数の中身は同ファイル内で定義しています。 3.検索を実行した時に呼び出されるphpファイル(3.php):  3-1.include("../change/1.php"); 3-2.1.phpの関数の実行 4.文字列置換前のphpファイル(4.php): /*呼び出し元のディレクトリ位置でないとincludeに失敗する*/ 4-1.include("../database/2.php");  4-2.2.phpのデータベースアクセス関数を実行する。 5.文字列置換後のphpファイル(5.php): 3-2の1.php関数の実行により、一時的に生成される。

    • ベストアンサー
    • PHP
  • word2003の置換について

    以前、複数のword2003の複数のファイルに共通してある文字列を一括して置換する方法を質問させていただきましたが、ファイルの数が100近くあり、回答を下さった方には申し訳ありませんでしたが、うまくいきませんでした。 そこで、別の方法を考えましたが、知識がなく方法がわかりません。どなたかご教授ください。 word2003のファイルを開いた際に、自動的に特定の文字列を置換するマクロは組めないでしょうか? もしくは、上書き保存やファイルを閉じる際に自動的に文字列を置換するマクロはできないでしょうか? 欲を言えば、どのファイルを開いても、設定等を必要とせずに自動実行したいです。 特定の文字列というのは、すべてのファイルに共通している言葉1種類のみです。 例えば、「親」を「子」に置換できればいいのです。 よろしくお願いいたします。

  • 一括置換をしたい

    ワード2003を使っています。 あるテキストデータの 「ABC」という文字列を「DEF」に置換したいんです。 同様に、 「GHI」を「JKL」に、 「MNO」を「PQR」に置換したいんです。 このように3つの文字列をボタンひとつで置換するにはどのようにすれば良いでしょうか? よろしくお願い致します。

  • ワードで複数の文字を一括・連続置換するマクロ

    ワード(Word)で複数の文字を一括・連続置換するマクロを作りたいのです。 次の回答を参考にしてマクロを作ってみました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=994495 ところが、置換したい単語が100くらいになってきて扱いづらいので、 ワード(又はテキストやエクセルでも可)の置換文字のリストのファイルを参照して、同じように連続置換させたいのですが、どのような方法があるでしょうか? シェアウェアでも同様の機能をもつものがありますが、自由にカスタマイズできないので使えません。 (置換後の文字列に蛍光ペンをかけたいので)

  • 文字列のアスタリスク置換

    PHP4でDBはMySQLを使用しています。 DBから取り出したいろいろな長さの文字列を*に置換したいのですがどのようにしたら良いでしょうか。 str_replaceを用いて置換をしようとしていますが文字列長が一定でないため難しいです。 宜しくお願い致します

    • ベストアンサー
    • PHP
  • PHPでHTMLファイル置換 プログラムについて

    以下のプログラムを書きました。 あるHTMLファイルをテンプレートとし、 中に記述している置換文字列を動的に 表示させるというものです。 しかしなかなか表示されません。 どこがおかしいのでしょうか? --template.html-- <html><head><title>test</title></head> <body> 表題 他いろいろ <!-- data replace --> フッター いろいろ </body></html> --index.php-- $page_lines = File("template.html"); $all_lines=''; foreach( $page_lines as $line ){  $all_lines .= $line; } $str = "<div>出力用データいろいろ</div>"; print preg_replace(/<!-- data replace -->/,$str, $all_lines); 以上です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう