エクセルVBAを用いた
「塑性と加工」参考文献欄作成方法



日本塑性加工学会 プロセス・トライボロジ分科会 
情報データベース部会 担当:池 浩 (理化学研究所)

 

E-mail: hike@postman.riken.go.jp
Fax: 048-462-4657 Tel: 048-467-9318

 



目的: 構築中のトライボロジー文献データベースを用いて「塑性と加工」の参考文献欄の書式に近いものを効率良く作成する.
環境: ソフトウエア Microsoft EXCEL97(あるいは95,98)
             参考文献欄を書くためのワープロソフトあるいはテキストエディターソフト.
(作成・確認作業はWindows95/EXCEL97/MicrosoftWORD V6でおこなっています.)
概略: 
(A)エクセル上で文献データベースから該当する文献を引用順に並べたファイル(ワークシート)を作る.
(B)エクセルにRefE,RefJ,RefE-JSTP, RefJ-JSTPと名づけたマクロ(Excel VBA application)を移植する.
(C)ワークシート上の文献リストに対してRefE,RefJ,RefE-JSTP, RefJ-JSTPのどれかを動作させて「塑性と加工」の参考文献欄標記に近いものをつくる.
(D)それを目的の文書(例題ではMicrosoftWord)内にペーストする.最後は細かい手修正を必要とするが,何もないところから始めた場合,あるいはいちいちデータベースがらCut & Pasteで写した場合にくらべて圧倒的に楽である.

なおRefE,RefJ,RefE-JSTP, RefJ-JSTPの違いは仕上げの標記の違いで,その時の目的とする表記法に一番近いものを選べばよい.
マクロの表記法の違い
マクロ名文献番号・表題著者の分離記号
RefEあり
RefJあり
RefE-JSTPなし
RefJ-JSTPなし

Jは「塑性と加工」で和文文献に適用されている著者名の区切り法,Eは欧文文献に適用されている著者名の区切り法である.また「塑性と加工」では文献の表題は記載しないが,RefEとRefJでは他の雑誌の参考文献欄を構築するために使う可能性も考え,文献表題は生かしてある.RefE-JSTP, RefJ-JSTPはできるだけ「塑性と加工」の参考文献標記に近づけてある.

以下プロセス・トライボロジ分科会 文献データベース BK98SPとRefJを用いて説明する.


A 予備作業 参考文献ファイルをエクセル上でつくること.


例では表題に「熱間鍛造」という語句を含む文献を検索して,それを参考文献一覧としてワークシートに形成する作業を想定する.

A1.文献データベースのCSVファイルをエクセルで読み込み,ファイルメニューから「名前をつけて保存」を選び,ファイルの種類の窓で一番上のMicrosoft Excel ブック (*.xls)を選び,保存する.



A2.メニューからデータ>>フィルター>>オートフィルターを選び必要な文献を選ぶ.




A3. 1行目の表題の欄の逆三角形のマークをマウスクリックし,開いたプルダウンメニューから(オートフィルターの)オプションを選ぶ.



A4.オートフィルターオプションのダイアローグで表題の検索キーワード欄に「熱間鍛造」という語句入力し,右側の検索方法は「を含む」を選び(下の方に隠れてます),OKをクリックして文献を検索する.



A5. 39件検索される.



A6. 一番上の文献の行番号をマウスクリック,一番下の文献の行番号をShiftキーを押しながらクリックして39件全部選択する.画面が黒く反転するはず.

A7. 挿入メニューから「ワークシートの挿入」を選び,新しいワークシートを造る.そのワークシートに移り,ポインターがA1のセルにあることを確認して貼りつけ(ペースト)する.これで参考文献リストがエクセル上で完成した.左側の行番号が1から39までに文献があることに注意.検索に洩れた文献はここにはコピーされてない.





B. ここからマクロの準備の部分です.


まず予備知識として知っていただきたいことを述べます.

エクセルのブックにはちょっと気づきませんがマクロというものが付随しています.そして現在エクセルで開いているブックのどれかにあるマクロをVBAによって呼び出すと,開いているあらゆるブック(あるいはその中のワークシート)に対してマクロを作用させることができます.ということでエクセル97では常用するマクロをPersonal.XLSという名前のブックに記録し,EXCELのフォルダーのすぐ下にあるXLStartというフォルダーの中に格納してあり,これが常用マクロの格納所みたいになっています.

エクセルを立ち上げるとまずそのPersonal.XLSが開く仕掛けになっています.ブック名でご確認ください.(別のブックでもこのフォルダーに放りこんでおけばエクセルを立ち上げる時同様にブックが開きます.)

Personal.XLSのワークシートは普通真っ白なので中身が何もないように見えますが,エクセルのメニューからツール>>マクロ>>マクロを選択すると中にあるマクロが見えます.

このエクセルのマクロはウイルスを感染するとかで問題になってますのでマクロを含んだブックを配布することは憚られます.そこで今回はマクロを書いたテキストを配布しますので,それをうまくマクロのエディターの画面に貼りこんでいただく必要があります. この説明書ではBK98sp.xlsとPersonal.xlsにマクロとして取り込むことを想定致します. 次がその具体的作業です.

B1.添付の4macros.txtのファイルの文書をエディターなどで開きすべて一括して選択しcopyする.(クリップボードに仮にコピーされた状態となる.)





B2. エクセルを立ち上げ,BK98sp.xlsを開く.

B3. エクセルのメニューからツール>>マクロ>>マクロを選択・実行する.

B4. マクロ名の欄に 仮にaaa と入力し,「作成」を実行する. このとき「マクロの保存先」に「開いているすべてのブック」が選択されているので MicrosoftVisualBasicでマクロを保存するとPersonal.xlsにも保存されることになる.



B5 現れた画面でSub aaa()のSの前にカーソルを持っていき,マクロのプログラムをPasteする.その後ファイルの末端にまわったSub aaa() とEnd Subのペアは不要なので消去する.最後にそのBookを保存してマクロをsaveする.



VBAのコードはSub XXXX で始まり End Subで終わり,それが一つのモジュールの中に続いて格納される.この場合4つのサブプログラムが一度にコピー,保存されたことになる.



C.マクロの実行まで



C1.まずこのマクロの説明をします.

参考文献として引用する順に文献が並んだワークシートで, 一番最後の文献の文献番号のセルを選択します.これによって第1行からその行までを処理すれば良いという情報をExcelVBAに与えます.参考文献欄に転記する情報はRefE, RefJでは文献番号,著者名,表題,出典です.RefE-JSTP, RefJ-JSTPでは著者名,出典だけです.

マクロの中でやっていることは一つの行の中で必要なセルを選んで情報を連結(セルをmerge)すること,書式を修正することです.作業領域としては最下行の文献の1行下からした側を使ってます.最後にMergeしたセルをすべてクリップボードにコピーした状態になり終了します.

したがって文献番号の列から左側に何列あるか,出典の列から右側の列の情報がどうなっているかは結果に関係しません.文献番号から出典までの列がもとのデータベースと同じ形式で存在していれば問題ないはずです.

C2. 具体的にはまずワークシートで一番最後の文献の文献番号のセルを選択します.



C3. 次にツール>>マクロ>>マクロから必要なマクロを選択して実行します..



C4. その結果は一番下の文献から下に貼りつけられ,クリップボードにコピーされたところでマクロは終了します.このマクロは文献が多いと数十秒程度はかかります.





D.ワードに貼りつけ修正

(注) MicrosoftWordはMicrosoftExcelと連携しているせいか,エクセルのセルを認識してしまいます.したがって下のように「テキスト形式で貼りつける」という指示をださなければなりませんが,他のエディターとかワープロソフトなら単純に「貼りつけ」でよいのだろうと思います.

D1. 編集メニューから「形式を選択して貼りつけ」を選び



D2. 「テキスト」を選択して貼りつける.



D3. 最後は文献を確認しながら手修正を加えてください.

以下はどのマクロを使うとどういう表記になるかさきほどの例で示します.

まず RefJ です.著者の区切りが「・」,文献番号と表題つきです.




次はRefJ_JSTPです.著者の区切りが「・」,文献番号と表題なしです.




3番目はRefEです.著者の区切りが「, 」,文献番号と表題つきです.




4番目はRefE_JSTPです.著者の区切りが「, 」,文献番号と表題なしです.





以上 (1999年2月21日 v1.0)