Excel - みる会図書館


検索対象: UNIX MAGAZINE 1998年3月号
10件見つかりました。

1. UNIX MAGAZINE 1998年3月号

Access と Excel のテータ交換 前回までは、 Microsoft の Office 製品が Web でどの ように利用できるかについて、 ・ Microsoft A ℃ cess ・ Microsoft Excel という 2 つのアプリケーションの lnternet Assistant を 用いて紹介してきました。今回は lnternet Assistant か ら離れて、 Access と ExceI がどオ・けごけ、、仲良し " かとい う話をしましよう。 どちらもデータを「彡式で扱うので、いかにもデータ交 換ができそうです実際、この 2 つのアプリケーション のあいだでは、 ・ファイルを介して受け渡す データを茁妾送り込む などのガ去で、データの受渡しカ呵能です。また、データ を直接送り込む方 1 去にも、バリエーションがいくつかあり ます。 「聞いて聞いて。昨日、ひどい目に遭ったのよ」 「どうしたん ? 」 「部屋に入ろうとしたのに、ドアを開けられなかったの」 「鍵を落としたんでしよ」 「違うの、ドアチェーンのせいだったのよ ! 」 彼女の部屋のドアチェーンは、鎖の先に留金カ咐いてい るタイプではなくて、まっすぐな金属のバーを倒すタイプ なのだそうです。この金属バータイプはバネか弱ると、ド アを閉めたときにはすみでドアチェーンがかかってしまう ことがあるのです。こうなると、多廻屋さんでも JAF でも 手が出ません。けっきよく、窓ガラスを割って自分の部 屋に忍び込むことに 「それにしても、大きなガラスってすごく高いのね」 それからしばらくのあいだ、彼女は夜遊びかできなかっ たようです。 UNIX MAGAZINE 1998.3 連載 / プログラマー入門ー① などの利点があります。また、 UNIX コマンドの助けを しかし、素直な彼女はその後、来客時にはドアチェー ンをしつかり活用するようになりました。ところがある これらの具ー勺なガ去を紹介しましよう。 ファイルを媒介とする方法 ExceI も Access もデータはバイナリファイルに保存さ れます。しかし、なにかと事情があって 4 、テキストファ イルを読み込む機能ももっています。読み込めるファイル の形式は、以下のようなものです。 ・ HTML ファイル ・コンマ区切りテキスト形式 (CSV 形式 ) ・タフ・区切りテキスト形式 ・スペース区切りテキスト形式 ExceI に HTML ファイルを読み込むカ 1 去は、前回紹 介しましたれ 1. lnternet Assistant を使って、 Access のデータを HTML 形式で出力する 2. HTML 形式のファイルを ExceI に言売み込む という手順で、 Access のテープルやレポートを気軽に Excel の表として読み込めます。同し方法で、 Excel の 表を Access に読み込むこともできます。 ただし、 HTML ファイルは、、 Shift JIS 工ンコーディ ング " で出力しておいてください。さもないと、 法も便利です。テキストファイル形式には、 プなどでフィールドを区切ったテキストファイルを使う方 HTML ファイルよりもオーソドックスな、カンマやタ しまいます。 ような前置きから想像できると思いますが、文字化けして ・ uniq で重複を詩べる ・ sort で並べ替える 借りられるのなら、 ・ツールで加工しやすい ・エデイタで編集できる くのアプリケーションがテキストファイル形式をサポートしてきました 4 昔から、異なるアプリケーション間てつデータ交換のム絲冬手段として、多 ・ sed 、 awk 、 sh 、 csh 、 perl で加工する 129

2. UNIX MAGAZINE 1998年3月号

連載 / プログラマー入門ーの 図 7 マクロの言彖ダイアログ・ポックス 図 9 マクロ・ダイアログボックス ステッフ・イ : マ知の保存先 1 ているすべてのフャ 説明 ~ csv 形式で保存する 図 10 Visual Basic Editor ウインドウ 万イ 2 集表示入書式 0 テ第切 ) 実行 (B) た第ワイントア劃 x 目 , ロりゞ : 癶ツ ( G ・れ“物 D Sub SaveAsCSV() 画を m を猶ー“ x 0 S 報 sC 評 M30r0 白 BA 0 ( ー CSV 形式で保存する M oso れ取、 9 1 ( R ョ n を 0 ( ・ AI つ . S 引・ ct ChDir ・ C. V リ ni 第 2 を 2 Act i WO 「 kbOOk. Sa 合えー F ⅱ 0N0 の 0 :=€C ・第 u 第 aV A 。 0 を 白・・日モシル C 「 teB ・ ck リ p : =Fal End Sub 7 知の記 知急当 SaveAsCSV ート加トキー : マ知の保存先の OK さ量三 ( : SV 1 図 8 言彖終了ツーノレく一 記録にロ i 2. 、、マクロ名 ( 邀 ) : " のフィールドには「 SaveAsCSV 」、 、、説明 ( ) : " のフィールドには「 csv 形式で保存する」 と入力し ( 図 7 ) 、 [OK] ボタンをクリックします。 3. 図 8 の当冬了 " ツーノレヾーが表示されるので、デー タを CSV 形式で保存する操作を実行してください。 4. 操作カ鮗了したら、、、言冬了 " ツールバーの左側にあ る・ボタンをクリックします。 これでマクロの言剥ま終りです。マクロ処理を実行する には、メニューの、、ツール ( 工 ) " →、、マクロ ( ) " →、、マ は、コンパイルする必要がないスクリプト言語なので、変 クロ ( 邀 )... " を選んでください。図 9 のような、、マクロ " 更はすぐに反映されます。 ダイアログ・ポックスが表示されるので、 [ 実行 ( ) ] ポ さきほどマクロとして言求したプログラムは、、、モジュ タンをクリックすれば、言求したマクロ操作かま行されま ール " 内に、、 ModuIe1" として保存されています。 す。 SaveAsCSV マクロのプログラム 「だめ、これしゃあ完璧とはいえないわ」 リスト 2 は ModuIe1 の内容です。 DOS 上で動作す 「なんでやねん。すいぶん手間カヾ成ったやん」 る大昔の BASIC しか知らない方にとっては、このプロ 「まだ Access にデータか渡ってないもの」 グラムはとても BASIC にはみえないでしよう。去も丘の マクロの実体は、しつは、、 Excel Visual Basic" で書か Visual Basic はオプジェクト指向になっていて、 C 十十 れたプログラム、 ・・もっと正確にいえばサプルーチンで の文法をとりいれています。 す。言求したプログラムに手を加えれば、 Access にデー また Excel VisuaI Basic は、文法的には Visual Ba- タを送り込むこともできます。 sic の仲間ですが、 Excel のデータにアクセスするための 機能 ( オプジェクト ) が使えるように孑長されており、 Vi- VisuaI Basic Editor sual Basic の文法を知っているだけではプログラムは作 Excel VisuaI Basic に農れるために、 CSV 形式てイ呆 れません。 存するマクロのプログラムをみておきましよう。 リスト 2 を見てみましよう。マクロのプログラムは、 メニューの、、ツール ( 工 ) " →、、マクロ ( 邀 ) " →、、 VisuaI Sub サプルーチン名 Basic Editor (Y)" を選ぶと、図 10 に示したエデイタの サプルーチンの本体 ウインドウか開きます。ウインドウの左側は、 Exce1 ファ End Sub イルに含まれているプログラムの一覧で、選んたプログラ という形式です。リスト 2 では、サプルーチン名はマクロ ムの内容力イ則に表示されます。 名として指定した、、 SaveAsCSV" になっています。 マクロの重川乍を変えるには、ウインドウの右側でプログ また、シングルクオート ( ' ) の後ろはコメントですが、 ラムを書き換えて保存してください。 ExceI Visual Basic ・ M ” 0 」ふ日”に - 4NGAc ・・ 0 物 d 謝引ロート月 132 UNIX MAGAZINE 1998.3

3. UNIX MAGAZINE 1998年3月号

映り「らせ 小工・ラセん」とは意味 が選う第 作者は白い 泉積花を限り一 連載 / プログラマー入門ー① 図 17 の尺 卩卩当ル印表示挿入書式 0 しト国ツ-慕@ ンアせ ロトフ司 @ ヨ国フ”引を、日を物ー 4 モ心 問く 0 図 15 データソースの尺ダイアログ・ポックス 再同ロ ! 、 : トスの析 、 M ” 0 、 0 こ ( を三 ラ→、、スはリ 0 Wo 市 book sh•r•ble Fox 0 30 0 砂 : : ー shar•ble) ー旧 M 0 日 2 めー第 h 鼾山 ) い一 0 " れ 0 を虱 1 第 ab ) M 03 SOL S ーめ 4 物、第扉 Open “′を北 le ) ( t•bks 0 を第 le ) - 旦ー「万再弖ト乍成すを 図 16 クエリー乍成 ファイル ) 編集表〒 ) 書式たフ第印 条件 0 レ上ト。 ( 印ウインドウ OK 参 ( 印ー 同口 : 闇ハロティマンガテーアル 画の「らせん」とはかつ ・い工・フにノ 80 % 黒のかさ水 作者は白い人 響花第第 専 0 苑な ( 物 .. む ー 0 イ、一リアでない 2 3 5 シルバームみ、ギャクわいコわまにかシリアスに ート弖日 同ロ ・・ M 、のりエリーー 国同ロミ 2 - と」上 ! 」と上ー / 5 しコード上」 . 亠ー 図 18 Excel の表に変換した例 当ファイルの編集 ( 印表〒挿入 (P 書式 0 ツヨ想テ・ - 第 0 ) ウインドウヘルア x ・ 0 B ~ まー」蕚議圉 % MS ゴシッケ 作品名 度を 0 、 M ” 0 れ Excei - 60 ( 1 小工・ラセン 映わ「らせん北は意叶がう 黒のかき氷 作者は白い人 積花第限 泉積花を曜リなく第ノむ 。シルバーース ギャクカつのまにかシリアスに a10X ドコー 出条件を表〒 / 編果すをコく出条件〒 ) ルを指定して、はいおしまい " というわけにはいきません。 図 15 のように、 Access のファイルをデータ ソースとして登録するまでに、、、 ODBC " 流のまわりくど い手続きが必要です。 3 番目のステッフでは、 ・データベース ( データソース ) のどのテープルに含まれ る情報を ・どのように取り出すか ( 抽出するか ) < 品 コマンド Access の場合は ? Access から Excel にデータを送ったり、 Excel のデー タを Access に取り込む方法は、さきほどの場合とくらべ るととても簡単です。 Access のデータを Excel に送るには、テープルやク 工リーを選択した状態で ( 図 17 ) 、メニューの、、ツール ーを作 ・ Microsoft Query のインターフェイスでクエリ ( 工 ) " →、、 Office Links ( し ) " →、、 ExceI に出力 ( △ ) " を る 選んでください。送ったデータを含む Excel のウインド 、、クエリー " ウイザードを使う ウがいきなり表示されます ( 図 18 ) 。 一方 Excel のデータを Access に取り込む方法は、 という 2 不転頁の去のどちらかで指定します。図 16 は、 csv 帋式のフイルを取り込むときと同しです。メ = 、 Microsoft Query' ウインドウです。 Access のクエリー ーから、、ファイル ( 当 " →、、外部データの取り込み (P)" と似たインターフェイスになっていますれどちらの力法 、、インポート① ... " を選んで、 Excel のファイルを指 でも、データを抽出したり並べ替えたりできます。ウイザ 定します。 ードや Microsoft Query を終了すると、データが Excel に渡されます。 Visual Basic プロクラミンク この方法ではクエリーの結果を取り込めるので、デー タを加工してから取り込みたい場合に向いています。しか 「ん一、なんかダサいのよね」 し、 Access のテープルの内容をそのまま取り込むだけ、 「これだけなんでもできるのに、何カ材﨑やねん」 という単純な処理をするには手順が複雑すぎるのか嘆点 です。 う、もっとびったりのことができてはしいのよね」 を、 135 UNIX MAGAZINE 1998.3

4. UNIX MAGAZINE 1998年3月号

連載 / プログラマー入門ー 0 表 1 / く口ティマンガの表 作品名 おテラ / 、 小細工・ラセン 黒のかき水 鏡花無限 シノレヾームース オフィーリアではない ギャクがいつのまにかシリアス 泉鏡花を限りなく楽しむ 作者は白い人 日麪酌の「らせん」とは懣未が違 SF 度 100 % 10 % 0 % 20 % 80 % 図 1 テータを ExceI に入力 〕ファイえ化 ) 編集表示物入書式 ) た見デ第ン門ア、 x MS p ゴシック い " り B 才Ⅱ第を國、 % こ , 2 おテラへ 3 ~ 小細工・ラセン 4 黒のかき氷 を、花限 を、シルバームース コマンド オフィーリアではない 映画の「らせん」とド鬘味が違う 作者は白い人 泉花を限りなくノむ キャクがいつのまにかシリアスに 10 ) % 1 SF 図 2 Excel のデータを CSV 形式て保存する わ・元バ キャンセル 保存 1 第ル名を付けて埓俘 「そうかなあ。まあ、とりあえす試してみよか」 ( O )... " で、 CSV 形式のファイルを開けはいいじゃない」 「どうせ Excel と同しでしよ。、、ファイル ( 当 " →、、開く 「どうするんや ? 」 「あら、それならできるわ」 に読み込みます。 2 番目のステッフでは、 CSV 形式のデータを Access ル ( リスト 1 ) として保存されました。 これで、 Excel のデータが CSV 形式のテキストファイ ください。 ますが、 こではカレントのワークシートだけを保存して シルノく一ムース , ギャクがいつのまにかシリアスに , 10 % 鏡花無限 , 泉鏡花を限りなく楽しむ , 0 % 黒のかき氷 , 作者は白い人 , 20 % 小細工・ラセン , 映画の「らせん」とは意味が違う , 80 % おテラへ , オフィーリアではない , 100 % 作品名 , 一言 , SF 度 リスト 1 MANGA. csv の内容 などの方法で、自由にデータを編集してから、 Excel や Access に読み込ませることもできます。 Excel のデータを Access に読み込む それでは、 CSV 形式のテキストファイルを介して、 Ex- cel のデータを Access に移す手順を紹介しましよう。 今回サンプルとして使うのは、パロディマンガをまとめ た表です俵 1 ) 。この表を Excel に入力した状態か図 1 です。 最初のステッフは、図 1 のデータ、、 MANGA. xls" を CSV 形式で保存することです。これはとても簡単です。 1. メニューから、、ファイル (E)" →、、名前を付けて保存 ( A )... " を選びます。 2. 、、ファイル名を付けて保存 " ダイアログ・ポックスカ俵 示されるので、、、ファイルの不頁 ( 工 ) : " から、℃ SV ( カ ンマ区切り ) ( *. csv ) " を選びます。 3. 、、ファイル名 ( ざ ) : " には「 MANGA. csv 」と入力して、 [ 保存 ( S ) ] ボタンをクリックします ( 図 2 ) 。 竹喋はこれだけです。処理中に、、、複数のワークシート を csv 形式のファイルに保存することはできないので、 カレントのワークシートだけを保存するか、保存するファ イル形式を変更せよ " という意味のメッセージが表示され 130 「はいはい。 ・・まあ、認識できません、なんていわれ た。あんた、ばかあ ? 」 残念ながら、 Access で CSV 形式のファイルを直接開 くことはできません。むりやり CSV 形式のファイルを開 いても、 データベースの形式 ) ファイル名 ' を認識できません。 というメッセージか表示されて、言も囚みに失敗してしまい ます。 Access で CSV 形式のファイルを読み込むために は、ますデータベースを用意しておいて、そこへファイル をインポートします。 Access を起動して、既存のデータベースを読み込む か、新規にデータベースを作ります。ここでは、例とし て、、 Manga. mdb " データベースを新規に作ることにしま す。 UNIX MAGAZINE 1998.3

5. UNIX MAGAZINE 1998年3月号

連載 / プログラマー入門ー 0 リスト 2 SaveAsCSV マクロのプログラム Sub SaveAsCSV() ←マクロ名がサプルーチンの名前になる ' SaveAsCSV Macro ' CSV 形式で保存する Range("A1") . select ←、 AI " セルを選択する " ←ディレクトリ C:*unimaga* へ移動する ChDir "C : *unimaga ActiveWorkb00k. SaveAs Fi1eName : ="C : *unimaga*MANGA. csv" , FiIeFormat : =xICSV , CreateBackup : =Fa1se ↑アクテイプなブックを保存する End Sub ChDir "C ・ %unimaga は、 CSV 形式のファイルを保存するディレクトリ C: *unimaga* へ移動するためのものです。 3 行目の最後はアンダースコア ( ー ) で終っていますが、 これは、、次の行へ続く " という未です。つまり 3 行目と 4 行目は、 2 行で、 ActiveWorkbook. SaveAs 引数 , 引数 , 引数 という BASIC の一文です。前の 2 行にくらべてかなり複 雑なコードですね。この文は、、 ActiveWorkbook" オプ ジェクトの、、 SaveAs" メソッドを実行します。 SaveAs メ ソッドは、メニューの、、名前を付けて保存 " に相当します。 SaveAs メソッドは省略可能なオプションの引数をもっ ており、これらは C 言語や C 十十言語にはないガ去で指 定します。オプションの引数には名前カ咐いていて、 引数の名前 : = 引数の値 ' SaveAsCSV Macro ' CSV 形式で保存する の、℃ SV 形式で保存する " は、マクロを言泉するときに、 、、マクロの記録 " ダイアログ・ポックス ( 図 7 ) の、、説明 ( ) : " のフィールドに入力した文字列です。 サプルーチン本体の最初の行の、 Range("A1") . Se1ect は、ワークシートの、、 AI " のセルお尺しています。 2 行目の、 UNIX MAGAZINE 1998.3 表 2 SaveAs のオプション引数 引数の名前 FileN ame FileFormat CreateB ackup 引数直 C:*unimaga*MANGA. csv xlCSV False という形式で引数の値を指定します。たとえば、 3 ~ 4 行 目の SaveAs の引数は、表 2 の 3 つのオプション引数を 指定しています。 本当は、サプルーチン本体の 1 ~ 2 行目がなくてもこの マクロは重川乍します 5 。興味のある方は、 SaveAsCSV プ ログラムを変更してみてください。 マクロのプログラムを書き換えれば、メニュー操作の組 合ぜ以」「 . の処理かできます。あとで簡単なプログラムを紹 介しますが、その前にメニューでできることをお話しして おきましよう。 そうそう、書き忘れていました。図 10 のエデイタ・ウ インドウから抜けるときは、メニューの、、ファイル ( E ) " 、、終了して Microsoft ExceI へ戻る (C)" を選びます。 ファイルを介さない方法 ファイルを介さなくても、 Excel のデータを Access の テープルやフォーム、あるいはレポートに送ったり、新し いテープルなどを作ることができます。しかも、ユーサー が Access を起ける必要はありません。すべてを完全に、 ・・とはいきませんが、半自重加勺に ExceI がおこなって くれます。 これには、 Excel の、、データ ( ) " メニューの、 5 工ラーカ考 &' おしたときク別イ 1 三には若 T の違いがあります。 133

6. UNIX MAGAZINE 1998年3月号

連載 / プログラマー入門ー 0 図 11 Access にデータを送るためのメニュー 」に ] ファイ [ ) 編集 ( 印を〒 ) 挿入書式 0 け、第 0 ) ウイントつフ D 日び : 茎第づ第 ) ・いし MS p ゴシック おテラへ 3 。小細工・ラセン ~ 4 ( = ・黒のかき水 一 5 花無限 0 ゞシルバームース 9 0 12 13 コマンド 図 12 奐する囲の尺 を〕ファ翻・集鴫 ) 表示Ⅳ ) 挿入書式 0 - た幕テ・ - Q ウイントつ崢アせ . 」劃 x D 2 ! 3 」づ MS p ゴシしツ - ~ ~ 、い、第 ~ = ま國 % 1 図 14 Access のテーカレに変換した表 は ? [ ) 0 表示 ) 揮入書式ゆしコー砂ツンフ・ ロテっヨゎムい日物モシ・ヨ 問く 0 新規作成 、 M に ~ 0 三 0 蹶 0 司ー MANG.Ax\s “ M を 0 ミ 0 A : 心三ミ 回ロ 第同ロ 物ル第 [ ) 入力規印虹ル 区一位阯 . テンフ・いトウイナート第 1.- グルっ・とトライン定 ( 0 ) ト 外部デ、 - ) 」込み 0 第 A 。。”第に変換Ⅳ ) ー オフィーリアではないゞ : ・ 映画の「らせん」よは 作者は白い人 泉鐔花を限りなく楽ノ 0 十ャクがいつのまにか SF ィーリアでな 1 い 小報工・ラセン 映り「らせん」とオ意味が違う 黒のかき氷 作者は白い人 泉積花を拠」なくむ 花第鵬 シルバア—スギャクカつの、ゾノアスに ぬード上廴」「一一 - 了ⅵ”レ 5 0 《 0. 住 デこ斗どト さ ) " を選び、 [OK] ボタンをクリックしましよう。 Ac- cess か起動し、図 13 に示したような、、ワークシートイン ポートウィサード " のウインドウか表示されます。 このウィサードは、 CSV 形式のファイルをインポート したときの、、テキストインポートウィサード " とほとんど 同じ形式です。あとは、ウイザードに従ってテープルを 作ってください。これだけで Access のテープルに変換で きるのでとても簡単です ( 図 14 ) 。 Microsoft Query の使用 「ほら、これならすいぶん便利やろ」 「でも、送りつけるだけでは芸がないわね。データを奪い 取ることってできないの ? 」 奪い取るというと言尠各がありますが、、、外部データの取 り込み " 機能を利用すれば、 Access や、そのほかのさま ざまなアプリケーションのデータを ExceI に直接取り込 むことができます。 誓ンセル このコマンドは、、、 Microsoft Query" を使ってデータ べースなどからデータを取り出し、 ExceI に読み込ませま ・ MS Access フォーム ( ).. す。ただ、実際の操作手順はかなり複雑なので、今回は手 ・ MS Access レホート ( C ).. 順の概要だけを紹介しましよう。 ・ MS Access に変換 (Y).. 最初のステップでは、メニューの、、データ (D)" →、、外 を使います ( 図 11)0 部データの取り込み ( ) " →、、新しいクエリーの作成 Excel に入力した / ヾロディマンガの表を Access のテー さ ) … " を選び、、、データソースの j 尺 " ダイアログ・ポッ プルに変換してみましよう。 Access に変換する範用を指 クスを表示します。 定して ( 図 12 ) 、メニューの、、データ (P)" →、、 MS Ac- 2 番目のステッフでは、、データソースの〕尺 " ダイア cess に変換 ( y )... " を選択してください。、、 Microsoft ログ・ポックスで、データ窈当ルこ ( データソースと呼び Access に変換 " ダイアログ・ポックスか表示されます。 ます ) を指定します。ここでは Access のファイルがデー こでは、、、変換先 " として、、新しいデータベース タソースになります。しかし、、、ェクスプローラでファイ M , 0 ミ 0 Excel - M 角「ぎ」 Ax ヒ 同、 オフィーリアではない 小細工・ラセン 映画の「らせん」とは意叶が違う - 黒のかき氷 作者は白い人 花無限 泉花を限りなく県しむ ン止バニぬニューーー主クがいつの二かシリヱュに一 - ーーー」の 図 13 ワークシートインポート・ウィサード 元のデー知 ) 先頭行が列見出 - , である場合、これをな - ルド名として使うことができます。 行辷をド名としすツ ワー、 - トインホ・一トウイナード おテラへ オフィーリアではない 小工・ラセン映り「らせん」とは意味が遣う 8 黒のかき水作者は白い人 . 2 積花長泉積花を限りなく楽しむ シルバームースキャクがいつのまにかシリアスに一 度 134 UNIX MAGAZINE 1998.3

7. UNIX MAGAZINE 1998年3月号

連載 / プログラマー入門一① Va1ue く > " " Wend UNIX MAGAZINE 1998.3 ます。 の行のデータを Access のレコードセット、、 rs" に登録し を串ヾ、 1 列目のセルにデータか書かれているあいだ、そ 続く WhiIe ループでは、 Excel の 3 行目以降のセル されます。 は、テープルのデータの集合であるレコードセットか第 ードでデータを登録するための前準備です。変数、、 rs" に は、データベースの、、パロディマンガ " テープル ( 追加モ dbOpenTab1e , dbAppendOn1y) Set rs = Db. OpenRecordset("'€ロディマンガー ます。 の 3 行目↓年のデータを Access のテープルに追加してい プログラムに戻りましよう。最後のループでは、 Excel Basic リファレンス " を参照してください。 プ ( 旦 ) " で、 Microsoft Office/Excel/Access VisuaI 関するマニュアル [ 1 ー 3 ] を入手するか、メニューの、、ヘル る方は Excel Visual Basic と Access VisuaI Basic に 詳しい説明は省力せていただきますが、どうしても気にな こでは コードをすんなりとは読めないかもしれません。 ル ( 構成 ) にみえるかか理解できていないと、サンプルの データベースが、プログラムで扱うときにどのようなモデ Excel や Access に登場するワークシートやテープルや Defs と・ 「 Worksheets と Cells と Table. Fields と Db. TabIe- 「どのへんカ巧 ) からへんのや ? 」 「うーん、ますます早できない」 テーフル定義の集合に TabIe を追加する " となります。 す。このコードを人間用に翻訳すると、、、データベースの は、作成したテープルをデータベースに追加するコードで Db. Tab1eDefs . Append TabIe ループの直彳変の、 キスト型 " として作っています。 いないので、どのフィールドもサイズが 255 バイトの、、テ ここではデータの不鶤頁までは区別して ています。ただし、 かぎり、その文字列をフィールド名としてテープルを作っ の While ループのなかで、セルに文字列が瞽かれている 取に、 appAccess . App1ication. Quit で Access を終了して、イベントハンドラの処理を終え ます。 「は一ら、できた。これでどうだ ! 」 「で、これってどうやって使うの ? 」 「 [Access へ送る ] ボタンをクリックしてみいな」 「したよ。あ、なんか、タスクバーに Access が出てきた。 ・・と思ったら、いなくなったよ。で、どうなったの ? 」 「今度はこっちゃ。 C:*unimaga*Manga. mdb : ンヾロ ディマンガの表がコピーされとうで」 「ふーん、本当だ。でも、このプログラムって解説された 部分はなんとなく分かったつもりになっても、違う処理を したいときにどうすればいいのか、さつばり見当がつかな し ) ねえ」 ☆ 今回は、 Excel と Access のデータ交換を、用意されて いる機能と作成した BASIC プログラムの両方で実現して みました。 プログラムを作るには、 Excel や Access のオプジェク トの使い方に習熟する必喫があり、道のりは平坦ではない かもしれません。しかし、マニュアルにはサンフ。ルコード も付いているので、今回のサンプルのように制限か厳しく てエラー処理か不十分なプログラムであれば、慣れていな い方でも作れるようになるでしよう。ますは、マニュアル のサンプルを試すことから始めてみてください。 ( あらい・みちこ ASTEC) [ 文献 ] [ 1 ] David Boctor, Microsoft 0 ガ e 97 / レな社襯 Basic 叩 6 リ S め叩 , 1997 ( ドキュメントシステム訳 tMicrosoft Office 97/Visual Basic ステッフ。ノヾイステッフ。』、アスキー、 1997 [ 2 ] Microsoft, Microsoft 0 ガ e 97 / い s 社 Basic ん 0 れ - 田 ge 可℃れ ce , 1997 ( マイクロソフト訳 CMicrosoft Office 97/Visual Basic ランゲージリファレンス』、アス キー、 1997 年 ) [ 3 ] Microsoft, Microsoft 0 、伊 ce 97 / レなれ召を c pt 、 0- grammer's Guide, 1997 ( マイクロソフト訳 fMicrosoft Office 97/VisuaI Basic プログラマーズガイド』、アスキー 1997 年・ ) 139

8. UNIX MAGAZINE 1998年3月号

連載 / プログラマー入門ー 0 図 20 プロバティ・ウインドウ ツールポックス 図 19 「びったりって、どんなふうに ? 」 「つまりい、パロディマンガの表を書き換えたときに、コ CommandButtont Comm 日 u ー、 全体」項目月叮 マンドー発で Access に送りたいの」 ( フラ、ェク Comm 旧日リ 0n1 「それなら、 Excel の、、 MS Access に変換 " でええやん A00 引鼾 0L0 記 F 引 F ・ヒ・ : ロ H8 朝℃ 00F & 日ョ ckCo 断 「でも、範用を指定するのも、不必要なはど高い機能のた 日 ckS ⅳに ヨ - ー m 日・ S を yIeO A 。弱へ送る Enabled T ′リ・ めにウィサードにつき合うのも嫌なの」 気 Font ー & ト旧 0 〔 )OI コ田 2 & F を 00 「・・・・・・ ( わがままやなぁ ) 」 0.25 Left このわがままなユーサーの要求を満たすような機能を作 ってみましよう。マクロを書き換えるだけでもよいのです ワークシートにボタンを追加 図 21 が、もうすこしおしゃれに、、、ワークシート上のボタンを 、ファイ編集 ( 0 表示 0 迎挿入叩書式 0 たルテ・一 ) ウイン第ア クリックすると、表を Access のテープルに変換する " と いう動作をするものを作りましよう。 Åcce へ送る コントロールの追加 2 オフィーリアではない おテラへ 映画の「らせん」とは味が違う 「小細工・ラセン 「 Excel って、ボタンを作れるの ? 」 。作者は白い人 黒のかき水 泉鏡花を限りなく楽ノむ 鏡花無限 「そうやで。知らんかったやろ」 ャクかいつのまにかンリアス 7 ' シルバームース コマンド Windows の世界では、 でショートカット・メニュー 7 を表示し、メニュー項目 ・ボタン の、、プロバティ " を選んでプロバティ・ウインドウを開い ・テキスト入力フィールド てください。、、本 " タブの、℃叩 ti 。Ⅱ " の右側の文字列 を「 Access へ送る」に書き換えると ( 図 20 ) 、ボタンのラ ・イメージ ベルも同し文字列に置き換わります。図 21 は、パロディ などの、 GUI を友する部品をコントロールと呼びます。 マンガの表のなかに [Access へ送る ] ボタンお助日した状 標準では、コントロールを作るためのツールポックスが表 態です。 示されていないので、 Excel のワークシート上にボタンを データを Access に送るプログラムの作成 作れるなんて気づかないかもしれません。 Excel のボタンは、クリックしたりフォーカスが移動 さて、次はいよいよプログラムの出番です。 したときなど、状態か変化したときにプログラムを呼び出 すことかできます。 ・ボタンをダブルクリックする →、、ツールノヾー ( 工 ) ' ますは、メニューの、、海衣 (Y)" ・ボタン上でショートカット・メニューの、、コードの表 →、、コントロールツールポックス " を選んで、 図 19 のツ 示 (Y)" を選ぶ ールポックスを表示してください 6 。左の列、上から 4 番 のどちらかを実行すると、 VisuaI Basic Editor かき、 目の矢研彡マークがボタン・コントロールです。 ツールポッ ボタンをクリックしたときに実行されるサプルーチンを表 ボタンを置 クス上のボタン・コントロールをクリックし、 示します。このサプルーチンのように、イベントか発生し く範用をマウスで指定してください。 たときに呼び出されるプログラムは、一殳にイベントハン ボタンのラベルが、、 CommandButtonI" となってい ドラと呼ばれます。 るので、、、 Access へ送る " に変更しましよう。ボタン上 7 マウスの右ボタンをクリックしたときに表示されるメニューのことを、 6 、コントロールツールポックス " の代わりに、同しメニューの、フォー Windows ではショートカット・メニューと呼びます。 ム " を選んでも、いル ) ツールポックスか表パされます。 アロハ・ティ 03P れ on ・ヾ 0 0 を 0 ー MA 慱 30 、 ls SF 136 UNIX MAGAZINE 1998.3

9. UNIX MAGAZINE 1998年3月号

連載 プログラマー入門ー 0 イ メ フ CJ は 図 図 5 テキストインポート・ウィサード 峯」を畏 1 き形式であをと見なされますふこを嚇正しくない場合は、適ょ テ、タ形式 」記号付きうな々やタよど : 0 トカ切引 1 てい } に 0 固定長 - つイールドの長さ力定されて、ら フ言ル 0 都 - SERS 第 ARA 学 UNIMA 住学鰍 ) 3 を い乍品名 . ーま . 度 おテラへ . オフィーリアではない . tc 1 小報工・ラセン . 映の「らせん」とは意味がう . 別第 黒のかき氷 . 作者は白い人 .20•x 飛花第 . 泉鏡花を限りなく楽しむ . ox シルバームース . ギャクがいつのまにかシリアスにコ ox 、 M に 0 い A00 ・一ミ テキストインホ、一トード 外部テ。ー第乃取り込み ( 0 ) イン市・一トい い上を新一 HTML 形式で保印 デヨ、一スフでハ・テゆ 1 ト A ゴわト入力しくだに ~ 図 4 CSV 形式のファイルをミ尺 図 6 Access のテーカレに変換した例 万イ [ ) 編集 ( 印表示Ⅳ ) 揮入 q ) 書式 0 ) いードた似 0 ウイントつヘル ) ・せ ・朝 } 新す ; 、ⅵを↓天い物の朝 ロテっ御ヨ新フゎムい日マ司 4 い司 ロ 3 円ディ ”ィ ) ーをい 、 M 朝 0 を 0 A こ c を第 目同ロ 修市・一ト インホなト 言同ロ 聞パロディマンガ . テーアル SF ィーリアではない 小報工・ラセン映り「らせん」ま意味が違う 黒のかぎ氷作者は白い人 鏡花謇曜泉積花を限りな ( 第ノむ OX シルバームースキャクいつの却、シリアスに 10 % 冫も機ま 方イ紐地第「新にすー = 計ヨ更新日指定な -. を簽件 彊倥〒撲票畯叫巖“龝を選 ト阯ト i - のイルが見うはした。 「データか変わるたびに Excel から Access にデータを 1. メニューの、、ファイル ( 当 " →、、外部データの取り込み コピーしてるのだけど・・ 、、インポート①… " を選ぶと ( 図 3 ) 、、、イン 「それが、どうかしたん ? 」 ポート " ダイアログ・ポックスカ鯛きます。 「同し操作を繰り返すのって飽きちゃう。私には向かな 2. 、、インポート " ダイアログ・ポックスで、、、 MANGA. いわ」 csv " ファイルお尺し ( 図 4 ) 、 [ インポート ] ボタンを 「でも、計算機の操作って、そうゆうもんやないかあ ? 」 クリックします。 「人間を退屈させるなんてよくないわよ。きっと、もっと 簡単な力法があるはす」 これで、、テキストインポートウィサード " カ起動します 「ほなら、マクロやな」 ( 図 5 ) 。あとは、ウィサードに従って町石ムみの去を指定 していくと、自重加勺に CSV 形式のファイルが Access の まったく同し処理を何度も繰り返すのなら、マクロを使 テープルに変換されます。 ってみてください。マクロはユーサー窈巣作手順を言当求し 図 6 は、 CSV 形式のファイルを Access の、、パロディ たもので、言当求した操作をあとて何度でも実行できます。 マンガ " テープルに変換した例です。このデータベースは あとで使うので、 Manga. mdb として保存しておきまし マクロの記録 こでは、、、 MANGA. xls" を CSV 形式で保存する処 理をマクロにしてみましよう。 1. ExceI で、メニューの、、ツール ( 工 ) " →、、マクロ ( 邀 ) " 、、新しいマクロの言求但 ) … " を選びます。、、マクロ の言ダイアログ・ポックスか表示されます。 0 マクロ 「もうヤダ ! 」 「今度はどうしたんや」 131 UNIX MAGAZINE 1998.3

10. UNIX MAGAZINE 1998年3月号

連載 / プログラマー入門ー 0 リスト 3 CommandButton1-Click イベントハンドラ Private Sub CommandButton1-C1ick() 'Access を起動する Dim appAccess As Object ←変数の宣言 Set appAccess = CreateObject("Access. Application") ) 新規データベースを作る appAccess. NewCurrentDatabase "c : *unimagaYManga. mdb" set Db = appAccess. CurrentDb ←カレント・データベースを Db に設定する , " パロディマンガ " テープルを作る Set Tab1e = Db. CreateTab1eDef(" パロディマンガ " ) ' " パロディマンカ " テープルのフィールドを定義する Dim i As lnteger 1 1 Whi1e Worksheets("Sheet1") . Ce11s ( 2 , i) . Va1ue く > Set Fie1d = Tab1e . CreateFieId(Worksheets("SheetI") . CeIIs ( 2 , ↑ Access のテープルのフィールドを作る ←作ったフィールドをテープルに登録 Tab1e . Fie1ds . Append FieId 1 Wend 作ったテープルをデータベースに登録 Db. Tab1eDefs . Append TabIe ← ) データを追加する i) . VaIue , dbText , Set rs = Db. OpenRecordset ( " ′く口ティマンガ " , dbOpenTab1e, dbAppendOn1y) 255 ) k) . Va1ue Dim j As lnteger 3 WhiIe Worksheets("SheetI") . Ce11s(j , 1) . Va1ue く > " " 新規レコードセットの作成 rs . AddNew ← Fo て k = 1 To i 1 rs(Worksheets("Sheet1") . Ce11s ( 2 , k) . Va1ue) ↑レコードを登録 Next rs. Update ←レコードセットの更新 Wend appAccess . App1ication. Quit ← Access の終了 End Sub 「なんだかよく分からないけど、 CreateObject() の引数 は文字列だよね。ほかに何カ甘旨定できるの ? 」 「それを説明するのは難しい。引数の一覧表なんてあらへ んねん。計算オ勺に調べられないことはないんやけど、ふ つうはそれぞれのアプリケーションのマニュアルて探すこ とになるなあ。ま、これ以 - ECOM の深みにはまらんう ちに、先に進も」 続けて、 appAccess オプジェクトの NewCurrent- Database メソッドで新しいデータベースを作り、 Cur- 138 Worksheets("Sheet1") . Ce11s(j , rentDb メソッドを使ってこのデータベースに、、パロディ マンガ " テープルを作ります。 TabIe 変数には新規に作っ たテープルか疋されていますが、この時点ではまだフィ ールド ( カラム ) は定義されていません。 Access のテープルのフィールドは、 Excel の表に合わ せたいのですが、表の見出しのラベルや個数は変わるかも しれません。そこで、 Excel の Sheet1 の 2 行目を見出 しとみなして、 WhiIe Worksheets("Sheet1") . Ce11s ( 2 , i) . UNIX MAGAZINE 1998.3