情報資源組織演習A
(書誌の作成)
2013年度 跡見学園女子大学文学部准教授 福田 博同第13回
書誌 データ管理・検索システムの構築
第14回 ネットワーク情報資源のメタデータ作成の実際 第15回 まとめ検索システムの構築(静的データベース)
第12回で
HTMLファイル
に
Google検索窓
を
埋め込む方法
は
理解
した。
今回:ExcelのVBAを使い、データベース的検索処理
を行うここでは必要最小限のみ説明する
基礎
を学ぶ必要があり
、公式サイト以外に「Office TANAKA / 田中亨氏」、「よねさんのWord と Excelの小部屋」、「Office Pro / Tatsuo Ikura 氏」、「モーグ」、「わずかな 知識でVBA! /上田誠氏」、「Excel VBAによるマクロプログラミング / 斉藤俊則氏」等々、
無数
にあるWeb上
の好教材
を参照し、自習
されたい使用ソフト:Microsoft Excel または、Open OfficeのCalc
手順:
1. Excel マクロで見本分を理解
2. Excel VBAで見本分を理解
3. Excel VBAでプログラムを実行
処理の概要
(必要部分のみの解説
)
Excel には、マクロとVBAがある。
• マクロは手順を記憶し、登録するといつでも利用できる(大幅な効
率化が図れる)
– 手順の結果内容が表示される。処理を理解する。
– マクロの限界:作業手順変更、繰り返し処理の対応など→VBAを利用す
る
– マクロの実態はVBAであるが、手順部分を分かるようにしているプログ
ラム。
• VBAとはVisual Basicというプログラムである。
XMLファイルに変換したり、外部ファイルを処理したり、様々な処理がプログラ ムで可能。見本分で理解する。では、マクロから始める。
マクロの操作
1. 見本ファイル
「
wakaData.xl
sx
」のワーク
シートSheet1
のB列(項
目)で「日本」
を探す
2. マクロを記録
する:手順
表示→マクロ
→マクロの記
録
☆ここから記
録が開始され
る
マクロ名を入れ、検索マクロを作る
1. マクロ名に「B
列キーワード
検索」と入れ、
Enterしてみよ
う
2. 記録が開始
される。
検索マクロの手順を行い記録終了
1. Bをクリック:B列が選
択される
2. Ctrl + Fキーを入れる
「検索と置換」窓が出
る
3. 検索する文字列に日
本と入れる
4. 次を検索をクリック
1. 検索窓を閉じて
2. 表示→ マクロ→
3. 記録の終了をクリック
4. すると
マクロファイル名を保存するが、、、
1. マクロ画面が
でて、
2. ファイル→ 保
存(Ctrl + S)で
3. マクロなしの
ブックに保存
できませんと
言われ
4. いいえと入れ
ます
マクロ有効ブックで保存→ 実行
1. ファイルの種類
を
2. Excel マクロ有
効ブックにする。
3. 和歌デー
タ.xlsmで保存
される。
4. では、実行して
みよう
5. Alt + F8キーで
「B列キーワー
ド検索」を実行
してみる
検索が実行される→ シートに埋め込む
セルB12へ移動した
シートにマクロ枠を作る
•
挿入→ テキスト→ テキ
ストボックス→ 横書きテ
キストをクリック
検索が実行される→ シートに埋め込む
横書きテキスト枠を右下へ
マクロ枠作成完了
• マクロの登録で
B列キーワード検索を選び
OKすると登録される。
• 次回からは、マクロ枠をク
リックすると利用できる
• 繰り返し処理などはVBAで行
う。
• つぎはVBAを学ぼう
VBAでデータベース的検索処理
• 「B列キーワード検索」マクロでSelection.Find(What:=“日本”…が検索
の方法かな?と理解されたであろうか?
• 文字列検索法は、Findメソッドや、Filterメソッドがある
• まず、Findメソッドで試してみる
• Alt + F11キーでVBAエディタを出す
• スペースや英数記号はすべて「半角英数」。
•
Office TANAKA
すべて検索する を参考に、変数を日本語にかえ、検索語を日本 にしてみる。 Sub 見つかったセル() Dim 見つかったセル As Range Set 見つかったセル = Cells.Find(What:=“日本") If 見つかったセル Is Nothing Then MsgBox "見つかりません" Else 見つかったセル.Activate End If End Sub 解説は次ページVBAの基本
Sub マクロ名() で始まり
End Subで終わる
Dim 見つかったセル As Range
変数を使う。変数とは入れ物で、
中に入るものが変わる。使う時は
Dimで宣言する。変数名は日本
語でも可能になった(「見つかった
セル」は変数)
As Rangeはセルの意味。型には
Stringが文字列, integerが整数、
などがある。
参照:エクセル大辞典 / 武 藤玄氏VBAの基本 if then else
Set 見つかったセル = Cells.Find(What:=“日本”)
“日本”という文字列のあるセルを
「見つかったセル」という変数に入れなさい(
詳細解説日経PC21
)
If
見つかったセル Is Nothing
Then
MsgBox “見つかりません”
Else
もし(
If
)~~なら、
Then
○○して
そうでないなら(
Else
)△△しよう。
そして、Ifを閉じよう(End If)
MsgBoxはメッセージボックスが
出ます。保存したら
マクロを表示して、実行してみる。
見つかったセル.Activate で
C4セルに移動する
VBAの基本
検索ボックスから入れる
次の見本はVBAを編集せずに、検索ボックスを出してキーワードを入れる方式。
参照:「文字列検索-Findメソッドの応用 / モーグ」 「実は奥が深いInputBox / Office TANAKA」,「Excel VBA入門講座ほか
前回:Sub 見つかったセル()
Dim 見つかったセル As Range, 最初のセル As Range, ターゲット As Range Set 見つかったセル = Cells.Find(What:=“日本")
今回:Sub キーワード検索()
Dim 見つかったセル As Range, 最初のセル As Range, ターゲット As Range, キーワード As String
キーワード = Application.InputBox(“キーワードを入れよう”, “検索”, Type:=2) ‘Application.InputBoxはタイプを指定した入力窓です。Type:= 2は文字列です Set 見つかったセル = Cells.Find(What:=キーワード) If 見つかったセル Is Nothing Then MsgBox "見つかりません" Exit Sub Else Set 最初のセル = 見つかったセル Set ターゲット = 見つかったセル End If Do Set 見つかったセル = Cells.FindNext(見つかったセル) If 見つかったセル.Address = 最初のセル.Address Then
Exit Do Else Set ターゲット = Union(ターゲット, 見つかったセル) End If Loop ターゲット.Select
MsgBox ターゲット.Count & "件見つかりました" End Sub
VBAの基本 If Then Else | Do Loop
では、次のように書き直そうSub 見つかったセル()
Dim 見つかったセル As Range, 最初のセル As Range, ターゲット As Range Set 見つかったセル = Cells.Find(What:=“日本") If 見つかったセル Is Nothing Then MsgBox "見つかりません" Exit Sub Else Set 最初のセル = 見つかったセル Set ターゲット = 見つかったセル End If Do Set 見つかったセル = Cells.FindNext(見つかったセル) If 見つかったセル.Address = 最初のセル.Address Then
Exit Do Else Set ターゲット = Union(ターゲット, 見つかったセル) End If Loop ターゲット.Select
MsgBox ターゲット.Count & "件見つかりました" End Sub
そして、前回のようにマクロ枠を作ろう。Do Loopは繰り返し行え、の命令なので、Exit Do がないと無限 ループになるので忘れないように。
フィルタによる検索色付け
文字列の中を変えるには「Findメソッドでのデータ検索 / よねさん」等を参照しよう まず、見つかったセルを緑色にしよう
Sub 列Bからキーワードをフィルタで検索し色づけ() '
Dim 入れ物 As Object, キーワード As String
Columns("B:B").Select '列Bを選んで
With Selection.Interior 'End Withまで、Interiorことセルの内部を選ぶ
.Pattern = xlNone 'セルのパターンを修飾しない
.TintAndShade = 0 '色の明暗を標準に
.PatternTintAndShade = 0 '網掛けをなしに
End With
キーワード = Application.InputBox("キーワードを入れよう", "検索", Type:=2) For Each 入れ物 In Range("B:B") 'B列で、各「入れ物」の
If 入れ物.Value Like “*” & キーワード & “*” Then ‘「入れ物」のセルにキーワードがあれば
入れ物.Interior.ColorIndex = 4 '「入れ物」のセルを緑色にする
End If
Next 入れ物 End Sub