• ベストアンサー

プログラムについて教えて下さい

例えば、エクセルで1行1問の問題を作っておき、行番号を選ぶだけで、予め書式を決めておいたワードの画面に自動的に転記するようなソフトは可能でしょうか。 もう少し、具体的に例をあげます。例えばまずエクセルで1行から100行まで、100題の問題を作ります。その中から(エクセルのデータを見ながら)5題を選んで、プログラム用の画面に、選択したい問題の行番号を選んで5個入力すると、予め定められたワードの文章に自動的に転記される、といったソフトです。よろしくご教示お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 VBA等を使用して自動化する事は確かに可能ですが、選択した問題のみをコピーする事が出来さえすれば、「定められたワードの文章に転記」という事を手動で行なったところで大した手間ではない様に思えますから、VBAを使ってまで自動化する必要は無いのではないでしょうか?  もし、完全な自動化までしなくとも良いとした場合には、VBAを使わずとも、Excelに一般的に備わっている機能を使用するだけで、選択した行に入力されている問題文のみを(大した手間を必要とする事なく)コピーする事は十分可能です。  今仮に、ExcelのC列において1行目には「問題文」等の項目名が入力されていて、2行目~101行目に100題の問題文が入力されているものとします。  又、A列はコピーする問題を指定するチェックを入れるための欄として使用し、A列のセルにチェックを入れると、チェックが入っている行におけるB列のセルには、「問1」、「問2」、「問3」・・・等の問の番号が、上から順番に表示される様にするものとします。  まず、B1セルに「問題番号」等の何らかの文字列(数値以外のデータであればどの様な文字列であっても構いません)を入力して下さい。  次に、B2セルに次の関数を入力して下さい。 =IF(INDEX($A:$A,ROW())="","","問"&COUNTIF(B$1:INDEX(B:B,ROW()-1),"*?"))  次に、B2セルをコピーして、B3以下に貼り付けて下さい。  次に、A列~C列の列全体をまとめて選択して下さい。  そして選択範囲を変えずに、そのままオートフィルターを設定して下さい。  尚、オートフィルターの設定方法は、ExcelのバージョンがExcel2007以降のものと、Excel2007よりも前のものとでは、設定方法が異なりますので、以下のURLのページを参考にして、質問者様が御使いになられているExcelのバージョンに合った方法で設定を行って下さい。 【参考URL】  よねさんのWordとExcelの小部屋 > Excel2003基本講座 > オートフィルタ(データ抽出) > オートフィルタ   http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter.htm#autofilter  よねさんのWordとExcelの小部屋 > Excel2007基本講座 > フィルター(データの抽出) > オートフィルタの使い方   http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-filter.html  ここまでが準備段階となります。  実際に選択した問題のみをコピーする際には、以下の様な操作方法となります。  まず、コピー元として選択する問題がC列に入力されている行の、A列のセルに、「1」でも「2」でも、「a」でも「b」でも、「あ」で「い」でも何でも構いませんから、何らかの値を入力して下さい。  そして、選択を済ませてから、A1セルの右端に表示されている黒い逆三角マーク(▼)のボタンをクリックして下さい。  するとフィルターのダイアログボックスが現れますから、その中にある「(空白セル)」と記されている箇所をクリックして、その箇所のチェックのみを外して下さい。  すると画面上には選択した行のみが表示されますから、B列~C列における値が表示されている行を全て選択して下さい。  後は通常のコピーと同じ要領で、選択したセル範囲をコピーして、予め書式を決めておいたワードの画面に値のみを貼り付けて下さい。 ※ある程度詳しく書いたために長くなってしまいましたが、実際に行なった場合には、大した手間ではないと思いますので、1度試してみて下さい。

ecohotaru
質問者

お礼

とても丁寧に教えていただきありがとうございました。感謝します。

その他の回答 (1)

回答No.1

VBAなどを使うことで可能だと思います。 VBAならば、WORDやEXCEL内にプログラを書き込むことでできます。