Excel と Excel_VBA との 関 係 を 見 るには Excel システム 上 で Alt-F11 で 現 れる VBE(Visual Basic Editor) で Project を 見 ればよく 次 のように 示 される 全 体 は VBAProject となっており 例 えば V



Similar documents
Microsoft Word - 教科書VBA_第1章2013_.doc

Word 003 スキルブック 06 - オブジェクトの 利 用 0.Word で 作 る 表 : 行 幅 を 最 小 値 より 小 さく 設 定 する 3 表 の 左 右 のサイズを 適 宜 調 整 します Word で 表 を 作 成 するとき, 列 幅, 行 幅 ともに 基 本 的 に 自 由

別冊資料-11

ワープロソフトウェア

<4D F736F F D208DEC90AC837D836A B81698F4390B394C5816A2E646F63>

1. アクセスする 2. 簡 易 検 索 画 面 (fig. 1) アクセスすると 最 初 に 出 る 画 面 です 検 索 語 入 力 ボックスにキーワードを 入 力 して 論 文 検 索 ボタンをクリックし ます 3. ボックス 下 部 のチェック 項

R4財務対応障害一覧

untitled

Microsoft PowerPoint - KeySQL50_10g_vlo3.ppt

日 付 部 分 を 入 力 する 今 回 は 3 月 のカレンダーを 作 ります 3 月 は 水 曜 日 からはじまりますので 1 水 曜 日 第 1 週 目 にあたるセル D2 に 1 その 隣 の E2 に 2 と 入 力 しましょう と 入 力 したセル D2:E2 をドラッグして

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

Microsoft Word - ms-word

1

(Microsoft Word - Excel\211\236\227p7\217\315.docx)

名刺作成講習

あいち電子調達共同システム

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

1. 表 から 値 を 抽 出 する 説 明 1.1. 表 から 値 を 抽 出 するための 関 数 について 説 明 します LOOKUP VLOOKUP HLOOKUP 関 数 は 検 索 値 に 対 応 する 値 を 検 索 値 を 含 む 一 覧 表 から 抽 出 し てくれる 関 数 です

Microsoft Word - Excel2.doc

TeleOffice 3.0 Lync 2 TO

文科省様式3-2集計オプションマニュアル

Excel 応 用 Ⅱ Excelの 知 識 をより 深 め 今 以 上 に 活 用 し 業 務 を 効 率 化 させたい 人 にお 勧 めします また 豊 富 な 問 題 演 習 で 実 務 に 活 かせるスキルを 身 につけます 容 : 複 合 グラフの 操 作 データベースの 活 用 ピボット

<4D F736F F D B68F918DEC90AC89898F4B899E977095D2816A2E646F63>

Microsoft Word - word_05.docx

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

賞 状 を 作 ってみよう 1- 賞 状 フォルダを 使 用 賞 状 のテンプレートから ワードで 賞 状 の 文 章 を 作 成 します あらかじめ EXCEL で 作 成 した 受 賞 者 の 名 簿 から 学 年 クラス 名 前 を 入 れて 印 刷 します 1Excel の 賞 状 名 簿.

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

計算式の取り扱い

DN6(R04).vin

PenPlusプロ for EIZO 取扱説明書

1. 機 能 概 要 CADデータ(DXF 形 式 )を 変 換 し EXCELに 図 形 として 表 示 します CADでのレイヤー 毎 に 表 示 / 非 表 示 や 線 分 の 属 性 ( 色 太 さ 等 )を 指 定 でき さらに 作 成 する 図 面 の 範 囲 大 きさを 指 定 できま

Ngraph for Windowsの使用法

PowerPoint プレゼンテーション

地域ポータルサイト「こむねっと ひろしま」

返還同意書作成支援 操作説明書

Access研修テキスト

コンピュータ概論

OpenOffice.org の 表 計 算 機 能 表 計 算 ツールの 基 本 操 作 OpenOffice.org の 表 計 算 ツール Calc(カルク)の 基 本 操 作 を 紹 介 します ここでは 請 求 書 の 作 り 方 を 通 し て 基 本 操 作 を 学 びます サンプルフ

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

PATENTBOY/Netバージョンアップ説明書(Ver.1.92)


スライド 1

目 次 1. 論 理 関 数 IF IF の 概 要 論 理 式 の 種 類 等 号 不 等 号 具 体 的 な 使 い 方 ネスト 複 数 の 条 件 を 記 述...

Excel basics

目 次 JAVIS Appli の 基 本 機 能... 3 JAVIS Appli について... 3 音 声 確 認 機 能 JAVIS Appli( 有 償 版 )の 機 能... 4 音 声 で 読 みの 確 認 をする... 4 辞 書 機 能... 5 単 語 を 登 録 する... 5

untitled

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

事前チェック提出用現況報告書作成ツール入力マニュアル(法人用)

intra-mart Accel Platform — ViewCreator ユーザ操作ガイド   第6版  

Microsoft Office Excel2007(NO.2エクセル初級後編)

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

Transcription:

JAPLA 研 究 会 資 料 2007/3/24 Excel_VBAでいろいろな OLEを 実 験 する - 日 付 時 間 電 卓 メモ 帳 Wordから Jまで- 西 川 利 男 0.はじめに J を 含 めたいろいろなアプリケーションとの 間 の OLE について 最 近 例 会 の 話 題 を 賑 わ している [1,2,3] 先 月 鳥 邊 錬 太 郎 氏 は VBA の 元 になる Visual Basic 6.0 の 上 で J の OLE について フォームの 作 成 コードの 記 述 などをていねいに 説 明 され 筆 者 にとって は 極 めて 有 益 であった しかし 残 念 なことに 筆 者 の 手 元 には 非 常 に 古 い Visual Basic 2.0 しかないのでトレースすることもままならない それではと いっそのこと Excel_VBA の 上 で 違 った 側 面 から 検 討 して 見 るのもまた 良 し と 考 えた 例 題 としては 簡 単 な 日 付 時 間 表 示 を 手 始 めとして 電 卓 メモ 帳 から Word そして J といろいろな OLE を 実 験 する VBA プログラミングを 行 ってみた Excel_VBA に 限 ったわけではないが Windows プログラムは 次 の2つから 成 っている フォーム 処 理 の 入 り 口 であり また 結 果 表 示 の 出 口 となるインターフェースとして 重 要 であり フォームエディタにより 作 成 される コード 処 理 動 作 の 記 述 であり 狭 い 意 味 でのプログラムである コードの 作 成 はいうなれば 従 来 から 行 ってきた Basic などのプログラミングであるが フォームの 必 要 性 およびその 作 成 は Windows プログラミングに 独 特 のもので 筆 者 のよう に 古 くからのプログラマにとってはようやくその 意 義 を 解 しやっとなじんで 来 たものであ る その 意 味 では 筆 者 世 代 の 者 にとっては 目 新 しいが 若 い 世 代 のプログラマではごく 当 たり 前 の 事 柄 かもしれない この 点 ご 容 赦 いただきたい 1.VBA の 構 造 と 開 発 の 手 順 VBA (Visual Basic Application) は Visual Basic と 言 語 文 法 においては 全 く 同 じであるが Microsoft Word, Microsoft Excel のマクロを 記 述 するためのものであり システムとしては いろいろ 違 っている さらに VBA 自 身 も Excel のものと Word のものとは 文 法 や 考 え 方 は 共 通 であるが 機 能 仕 様 は 異 なっている 以 下 ここでは Excel の VBA に 絞 ってみていこう [1] 西 川 利 男 J の Excel_OLE を 解 析 する JAPL 研 究 会 資 料 (2007/2/24) [2] 鳥 邊 錬 太 郎 VB-J_DLL Server を 使 う 同 誌 (2007/2/24) [3] 西 川 利 男 J と Word,Excel,HTML- 全 員 集 合 の 協 調 システム 同 誌 (2007/1/27) - 1 -

Excel と Excel_VBA との 関 係 を 見 るには Excel システム 上 で Alt-F11 で 現 れる VBE(Visual Basic Editor) で Project を 見 ればよく 次 のように 示 される 全 体 は VBAProject となっており 例 えば VBAtest1.xls のようなファイルである そし て 通 常 の Excel 画 面 のシートは Sheet1, Sheet2, Sheet3 のようになっている いわゆるマクロは Module1, Module2,...であり ここに VBA プログラムが 書 かれる こ こにプログラムを 書 き 込 むには VBE のツールバー[ 挿 入 ]で[ 標 準 モジュール]をクリックし て 現 れる Sub... のプロシージャとしてプログラミングする さらにフォームを 必 要 とするときは[ 挿 入 ]で[ユーザフォーム]をクリックするとフォーム エディタ 画 面 が 現 れ 同 時 に 現 れるコントロール 部 品 の 表 示 から ボタン テキストボッ クスなどをマウスでドラッグして 必 要 な 位 置 大 きさで 貼 り 付 ける また コントロール のキャプション( 名 前 ) 文 字 の 大 きさなどいろいろな 仕 様 はプロパティ 表 に 値 をセットす ることで 行 う 今 度 はボタンなどコントロールのよる 処 理 の 実 行 はコントロールをダブルクリックする ことでさらに 現 れるプログラム 画 面 で 処 理 のプログラムを 記 述 する 筆 者 に 言 わせればこ こで 初 めて 従 来 からなじんだプログラミングを 行 い ほっとしたというところである ところで マクロを 実 行 するには 通 常 の Excel シート 画 面 上 で[ツール]-[マクロの 実 行 ] でも 行 えるが ここでもフォームを 作 って そこで 実 行 する 方 がっこう 良 い それには[ 表 示 ]-[ツールバー]-[フォーム]により 現 れる 簡 易 フォームエディタにより コントロールの 作 成 を 行 い これにモジュールのプロシージャ 名 をリンクさせる こうすれば シート 上 にあるボタンをクリックするとマクロの VBA プロシージャが 実 行 できることになる - 2 -

2. 日 付 時 間 の 表 示 最 初 は 最 も 簡 単 な VBA として 日 付 時 間 を 出 力 する 関 数 Now を 呼 び 出 して メッセ ージボックスで 表 示 する というものである プログラムは 次 のように 一 行 でよい Sub ndate() MsgBox "いまの 日 時 は" & Now & "です" 3. 電 卓 とメモ 帳 を 呼 び 出 して 処 理 今 度 はフォームを 作 成 し そのコントロールに VBA のコードを 記 述 する という 通 常 行 う 手 順 にのっとってやってみる (1) フォームの 作 成 VBE エディタのメニューバーの[ 挿 入 ]で[ユーザフォームの 作 成 ]を 選 んでクリックすれ ば 以 下 のようにフォームエディタが 開 かれる ここでフォーム UserForm1 に リストボッ クス ボタンなどを 貼 り 付 ける 掛 け 算 記 号 線 なども 入 れて 体 裁 を 整 える これらの 操 作 はツールボックスのコントロールのリストからマウスでドラッグ&ドロップで 位 置 大 きさなどを 調 整 して 張 り 付 ける 表 示 (Caption)などはプロパティ 表 で 値 を 設 定 する - 3 -

(2) コードの 記 述 コントロールのボタン Run を 押 すと 上 の2つのリストボックスに 入 力 したデータの 値 を 用 いて 掛 け 算 を 行 い その 結 果 を 下 のリストボックスに 表 示 するようにする このとき 掛 け 算 の 計 算 は Windows に 常 備 の 電 卓 プログラムを 使 い その 結 果 を 一 応 メモ 帳 に 記 録 し 最 後 に Excel に 戻 るようにした 上 の 処 理 はボタン Run を 押 すと 起 動 されるイベントとして 実 行 されるので ボタンに 付 随 したコードを 記 述 することになる このためには ボタンの 上 でマウスをダブルクリッ クすると コード 記 述 の 画 面 が 開 きここに VBA のプログラムを 書 けばよい コードは 次 のようになる 各 操 作 はコメントを 見 ていただきたい ここでは Shell により 起 動 し SendKeys により 文 字 列 を 送 ることで 処 理 を 行 っている Option Explicit Private Sub CommandButton1_Click() Shell "Calc.exe", 1 'Start calc ' 電 卓 プログラムの 起 動 SendKeys TextBox1.Text, True 'テキストボックス1のデータを 送 る SendKeys "*", True ' 掛 け 算 記 号 文 字 を 送 る SendKeys TextBox2.Text, True 'テキストボックス2のデータを 送 る SendKeys "=", True 'イコール 記 号 文 字 を 送 る SendKeys "^C", True 'クリックボードにコピーする(Ctrl-Copy) SendKeys "%{f4}", True ' 電 卓 プログラムの 終 了 Shell "Notepad.exe", 1 'メモ 帳 プログラムを 起 動 SendKeys "^V", True 'メモ 帳 に 貼 り 付 ける(Ctrl-Paste) TextBox3.Paste 'テキストボックス3にも 貼 り 付 ける 同 様 にして ボタン Clear に 対 する VBA コードは 以 下 のようである Private Sub CommandButton2_Click() TextBox1 = "" TextBox2 = "" TextBox3 = "" (3) フォームの 起 動 Excel のマクロとして 実 行 するため モジュールへの 次 のプログラムが 必 要 である Sub ndentaku() UserForm1.Show - 4 -

4.Word での 実 行 処 理 VBA としてはたとえ 同 じでも Word での 処 理 依 頼 は それほど 簡 単 ではない 例 題 としては 文 字 列 を 入 力 して それを Word に 送 り Word 上 でその 書 体 大 きさなどを 変 える さらに 印 刷 画 面 のプレビューをするだけのものだが オブジェクト 指 向 としての 前 準 備 Word_VBA の 仕 様 に 合 わせるなどの 考 慮 が 必 要 となる フォームは 省 略 して コードのみをあげる Private Sub CommandButton1_Click() Range("A1") = TextBox1.Text 'テキストボックスのデータをセルにコピー Range("A1").Copy 'セルのデータをクリップボードへコピー Set Obj = CreateObject("Word.Application") 'Word のオブジェクト Obj を 作 成 Set Doc = Obj.Documents.Add 'Documents のオブジェクト Doc を 作 成 With Doc.Paragraphs(1).Range 'Doc.Paragraphs(1)について.Paste 'クリップボードのデータを 貼 り 付 け.Font.Size = 20 'フォントの 大 きさを 変 更.Bold = True 'ボールドに 変 更.Italic = True 'イタリックに 変 更 End With Obj.Visible = True Obj.ActiveDocument.PrintPreview ' 印 刷 プレビューに 表 示 Range("A1").Clear Obj.Quit 'Word の 終 了 5.J での 実 行 処 理 次 のようなフォームを 作 った 例 題 の 説 明 は 不 要 であろう - 5 -

3つのボタンのの 対 する VBA の 各 コードは 次 のとおりである 合 計 Sub CommandButton1_Click() 平 均 Sub CommandButton2_Click() クリア Sub CommandButton3_Click() コードについてはこれについては 何 遍 も 紹 介 してきたので 説 明 は 省 略 する Option Explicit Dim N As String, Dim M As Variant Dim ec, v As Variant Private Sub CommandButton1_Click() N = TextBox1 jopen js.show 0 js.log 1 jdo "JN=. " & N jdo "JM=. +/ JN" 'Only one value can return M = jget("jm") js.quit TextBox2 = M Private Sub CommandButton2_Click() N = TextBox1 jopen js.show 0 js.log 1 jdo "JN=. " & N jdo "JM=. (+/ % #) JN" M = jget("jm") js.quit TextBox3 = M Private Sub CommandButton3_Click() TextBox1 = "" TextBox2 = "" TextBox3 = "" - 6 -

Sub jopen() Set js = CreateObject("jexeserver") Sub jdo(s As String) ec = js.do(s) If ec Then MsgBox "Error code: " & Str(ec) Function jget(s As String) As Variant ec = js.get(s, v) If ec Then MsgBox "Error code: " & Str(ec) jget = v End Function 6.Excel マクロとしての OLE 実 行 例 実 行 例 として 電 卓 マクロの 実 際 を 示 す - 7 -

7.Excel_VBA と Excel とをこう 考 える- 筆 者 の 独 断 的 コメント (1) Excel_VBA の 位 置 づけ Excel_VBA は 一 般 には Excel の 表 計 算 機 能 を 助 け より 複 雑 な 高 度 の 処 理 を 行 うための ものとされている しかし 筆 者 の 独 断 的 意 見 として もっと 積 極 的 に Windows 処 理 の 中 心 技 術 と 位 置 付 けすべきと 思 う Visual Basic がその 位 置 にあるようだが 筆 者 のようなかつ ての N88BASIC を 愛 用 したユーザにとってはかなりしきいが 高 い その 一 つが 入 出 力 イン ターフェースであるフォームの 作 成 である この 入 り 口 部 分 は Visual Basic ではなく Excel をそれに 当 てたらよいと 思 う つまり Excel を 単 なる 表 計 算 ソフトではなく Windows プロ グラミングのインターフェースを 含 めた 汎 用 ツールと 位 置 づけるのである Excel = 配 列 型 の 階 層 構 造 を 持 つ 汎 用 オブジェクト 処 理 ツール (2) 百 人 一 首 の 決 まり 札 早 取 りツール 筆 者 の 娘 など 若 い 世 代 の Windows ユーザに 言 わせると 文 書 は Word ではなく Excel で 作 るのだという たしかに 章 段 落 の 文 章 をセルにいれてしまえば 文 書 の 構 成 編 集 は ずっと 楽 になる お 正 月 のお 遊 びプログラムである - 8 -

(2) 複 数 の 絵 画 をタテ ヨコにつなげて 大 きい 作 品 を 創 る オブジェクトとうたった 意 味 はこの 例 で 示 される Excel では 文 字 列 数 学 計 算 値 だけで はなく 画 像 なども 自 由 に 扱 える もう Photoshop などいらない これは 絵 を 趣 味 とする 妻 の 要 望 で 作 った 筆 者 の 秘 かな Excel の 効 用 である - 9 -