Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

文系でも学んでおきたいOfficeマクロプログラミング

177 views

Published on

OSC2017 Fukuokaのセミナー資料です

Published in: Software
  • Be the first to comment

  • Be the first to like this

文系でも学んでおきたいOfficeマクロプログラミング

  1. 1. 仕事でラクするための Office マクロ & 心得 Oct 07 OSC2017Fukuoka 文系でも学んでおきたい Office マクロプログラミング Koutarou Watanabe
  2. 2. アジェンダ 講師紹介 Office ソフトって知ってますよね? ソフトのマクロ機能って知ってますか? マクロを使うと何がどう変わる? 使う理由と使わない理由 システム管理者から見たマクロ マクロ使いのポイントと心構え マクロ事例等   etc ~
  3. 3. 講師紹介 渡辺 浩太郎( Koutarou Watanabe ) 福岡市某団体:現在別団体に出向中 百道にある私立大 OB :文系です 2011 年 LibreOffice 導入時のメイン担当 &マニュアル作成者兼苦情処理係 (現在はシステム担当ではありません) 質問や頼み事等は直接本人まで! 今日はプライベート参加です このプレゼンは渡辺の個人的見解であり、所属団体の見解ではございません   
  4. 4. 本セミナーはこんな内容です 事務職やシステム運用担当者など 非開発職の方々を対象とした ノンプログラマー向けセミナーです。 マクロの書き方を細かく説明する プログラミング学習セミナーではありません。 Office ソフトでマクロを使う場面を明確にし、マク ロを使って少しでも仕事をラクにする方法と注意 点についてお話します。 マクロの書き方やスタートアップについては セミナー終了後、個別にご質問くだされば分かる範囲でお答えします。
  5. 5. Office ソフトって知ってますよね? 1.世界の 97 . 8% は Ms-Office ~たぶん 2.主に表計算( Excel/Calc )・ワープロ     ( Word/Writer/ 一太郎) 3.実際の使われ方を見てみると ・表計算(見積書・領収書・報告書・提案書・仕   様書・申込書・・データベース的運用まで) ・ワープロ(見積書・領収書・報告書・提案書・仕 様書・申込書・論文・作文など)
  6. 6. マクロ機能って知ってますか? 1.マクロ機能とは?(ざっくり言うと) ・ソフトの単純作業を代行する手段である ・専用のマクロ言語で作業内容を指示する 2.複雑な作業はできないの? ・できるんだけど・・・・記述も複雑になる 3.マクロを記述する言語について ・ VBA ( Visual Basic for Applications ) ・ OpenBasic ・ Python ・ Javascript ・ BeanShell MS-Office OpenOffice LibreOffice LibreOffice ならいろんな言語でマクロ記 述可能です
  7. 7. マクロを使うと何がどう変わる? 作業の自動化が実現 ➢ 実務的には・・・・繰り返し操作の自動化 ➢ 精神的には・・・・面倒な作業からの解放 ➢ 実益的には・・・・時間的余裕の創出 独自関数を作成する ➢ 実務的には・・・・ IF 関数の入れ子等の排除 ➢ 精神的には・・・・すっきりした記述(メンテし易い) ➢ 実益的には・・・・修正がマクロだけで済む セル修正が 不要 マクロを使って独自関数を作ることができます セル式だったら、式があるセルをすべて漏れ なく変更する必要がある
  8. 8. マクロ機能を「使う理由と使わない理由」 使う理由 ➢ 忙しいときに便利だから ➢ ミスなく同じ作業を繰り返すことができるから ➢ 繰り返し作業でもストレスにならない ➢ 記述しやすいから ➢ 自分ができることしかやってない ➢ 作業時間が減って時間的余裕が生まれるから ➢ 処理の判断要件から件数を外すことができる ※ 処理件数が多いから大変だ!という判断を除外することができる
  9. 9. マクロ機能を「使う理由と使わない理由」 使わない理由 ➢ 手作業でもなんとかできている(改善不要) ➢ マクロを考えている時間がもったいない ➢ 作業しないと間に合わない ➢ できるか・できないか分からない事に割いてい る時間は無い(使いたい気持ちヤマヤマなんだけど・・・) ・ものすごく余裕がある ・ものすごく忙しい ※ 物凄く忙しいから、マクロ憶えてる暇なんて無いってのが実情と思われます
  10. 10. マクロを使うタイミングと理由はコレ タダでさえ忙しいのに ルーチン作業負荷の増加を起因とする、 これ以上のパフォーマンス低下を抑止す る手段として使う。 そのためにも、 マクロ作成自体が作業負荷となるような 事態は避けなければならない。
  11. 11. マクロを使うポイントとは? 部分自動化であっても、精神的にスゴイ楽 に仕事に取り組めるようになる。 ● 自分が面倒だ!負担だ!と思うポイントを見つけ 改善する ※ 自分が改善したいポイントを把握できずに悩むケースが多い
  12. 12. システム管理者目線から見たマクロ ● 信頼性が不明なマクロを勝手に使うな ● 視認性の悪い何をやっているのかさっぱり不明 なマクロは迷惑 (メンテナンスできないから) 関数も同じ事言えるけどマクロほどじゃない 使わなくて済むなら、使ってほしくない ってのが本音。
  13. 13. 割り切って対応していこう システム担当者が問題視する 「メンテンス問題」 システム運用時に問題となる「業務のマクロ依存 問題」なども、マクロが持つ問題点として挙げられ る場合が多い。 個人が作成したマクロがなければ成立しない業務 は、本来であれば、業者にお金を払ってきちんとした システムを作る必要性がある業務と言える。 コチラ側としても、ある程度、割り切った対応が必要 になってくる ※ その辺の業務遂行状態を確認し、システム提案を行うのもシステム管理者の仕事の 一つだと思う ※ 現場にすると背に腹は代えられぬ状況という場合もあるわけで
  14. 14. 周囲にはこんな人が居て・こう見られてる ● 仕事じゃないことに時間かけてるんじゃねーよ ➢ マクロ書いてると仕事してないと思われる ➢ エラーが出ると仕事してないと思われる ➢ 仕事は地道にコツコツするものと思ってる ➢ マクロで仕事はズルしていると思われる ➢ 自分の苦労経験を後輩と共有したがる面倒 見の良い先輩がいる ➢ 成果ではなく方法を重視する風土がある 改善しようと奮闘する貴方の周りを見渡してみると 何が改善だよ、地道にコツコツがウチのやり方なんだよ、まったく
  15. 15. 仕事でマクロを使う際の心構え ● 何でもかんでもマクロ化するな ● マクロを引き継ぐな仕事を引き継げ ● 自分からマクロを売り込むな ● 自分のマクロを自慢するな ● 他人からの改善要望に対応する時は要注意 (結局・仕事を渡されてしまう愚を犯すな) 他人からの改善要望への対応は、自分の仕事を全うしているこ とが大前提になる、下手すると相手の上司にこっちの上司がク レームを言う事態に発展しかねない。 コレ、面倒だから あなたやっといて! ってことなんです ケチケチすんな!減るもんじゃあるまいし ( 怒 ) ↑ 次回から断ると何故か怒り出される始末 ※ 作表を毎回マクロでやる等(必要な 場合であれば OK )
  16. 16. マクロ導入までの 5 ステップ マクロ化は自分のマクロスキルと相談し て詰め込みすぎない事がポイント! 1.まず改善したいポイントを把握する 2.そもそも作業が必要なのか確認する 3.マクロでなく関数でやれないか?考える 4.マクロ化していない理由を探る 5.マクロ化するポイントを考える どこがイライラする のかハッキリさせる この作業って 必要なの? 何をどこまでマクロ化すれば 効果的なのか? 単なるスキル不足 ならいいけど
  17. 17. マクロ作成時の 5 ステップ マクロでの記述方法が分からない場合 は探し回らず後回しにする事がポイント! 1.処理の流れを図式化する 2.処理の可否を自分のスキルと相談する 3.出来ないところは手作業と割り切る 4.一通りの処理を記述しテストする 5.エラーチェックを付け加える 大まかな流れを ハッキリさせる 入手可能な情報と 相談すること ポカミスを防ぐためにも エラーチェックは必要です マクロ作成に使える時間は限られているハズだから・・・
  18. 18. マクロの目的を「ぶれ」させない! まずは仕事を終わらせることが一番 マクロ作成が目的ではありません! 一番重要なのは仕事が効率よく完了すること 手作業のほうが早いところは手作業で! 処理ルーチンを組み合わせて効率よく 処理完了後にチェックする事項を決めておく 作業はマクロで!チェックは人とマクロの両方で!
  19. 19. 隠れマクロ使い  5 メソッド マクロの改善効果が実証されるまでは、マ クロついてあまり言及しないことが重要 1.マイマクロへの登録で痕跡を残さない 2.作業マクロはショートカットキー登録で 3.次回作業へ向けた修正で完成度 UP↑ 4.当面はチェックに時間を費やせ 5.マクロの効果は控えめに・・・ 作業の痕跡を 残さない工夫も 必要です ササッと動作 サラリと結果 思わぬ例外データによる エラーが出たりしてます EXCEL の場合は「個人用マクロブック:PERSONAL.XLSB 」を使用します。 ラクするための ※ 影でマクロをササッと使って処理を終わらせる、隠れマクロ使いになろう ※ ちゃんと手でやってれば、こんなミスしなかったハズなのによ 怒! って言いたい人が多いと思っておこう
  20. 20. マクロ活用事例 ➢ Calc のループマクロで宛名を封筒・葉書に直接印刷 ➢ 定型文への差し込みは基本様式を Writer で印刷後 / 可 変箇所を Calc のループマクロで(ハガキも) ➢ データシート類の整形処理はマイマクロで ➢ Calc シートファイル間串刺しによる値取得はシートを閉じ るイベントにマクロをセットして集計シートへ自動書き込み ➢ BASE ( FireBird )のインポート・エクスポート ➢ 可変データ範囲の取得と印刷 タックシールだと 貼付作業に時間取られる! Writer の差込印刷 って面倒に感じてます BASE に実装されていないので マクロを使って実装させた ※ 入力シートの「シートを閉じる」イベントで集計シートを非表示モードで 表示させ、値を書き込んで保存後閉じる命令を実行させます
  21. 21. Calc マクロ記述参考 1 ➢ Calc マクロは記述事項が多いので処理をサブルーチン化 し簡素化したJA福岡市のマクロマニュアルがお勧め ➢ EXCEL の VBA は WEB 情報や書籍も多いのでそれらを参 考にして学習してください ● モジュールをコピーして貼り付け、パラメーターをセットするだけで処理完了です VBA マクロと Oobasic マクロの違い 【似ている点】 ・変数の宣言方法 ・ If 文や Select 文・ Do ~ Loop 文などの主たる文法構文 ・命令そのものが似ている( Msgbox や print など) ・行末に;などが不要 ※Ms-office の場合は自分のバージョンと合 致した情報で学習してください ネットを探せばシート名で使えるように改変したバージョンをアップしているサイトもあります。
  22. 22. Calc マクロ記述参考 2 【相違点】 ・ワークシートやセルなどのオブジェクト指定方法 ・ Cell 関数の指定が逆( VBA =行 , 列  Oobasic =列 , 行) ・数字がゼロスタート( VBA は1スタート) ・処理命令が長すぎてスッキリ書けない 「A1 セルを選択する」という作業を例にします VBA の場合 Sub Rangeselect() ' 処理記述 Range("A2").Select '1 行で終わり End Sub Oobasic の場合 Sub Rangeselect() ' 変数の宣言 Dim oController As Object Dim oSheet As Object ' 処理記述 oController = ThisComponent.getCurrentController() oSheet = ThisComponent.Sheets.getByName("Sheet1") oController.select (oSheet.getCellRangeByName("A1")) End Sub
  23. 23. Calc マクロ記述参考 3 【マクロの記述って可能?】 マクロの記述は [ メニュー ]→[ ツール ]→[ オプション ]→[ 詳細 ]  マクロ記録 を有効にする(限定的)オプションにチェックが入っていると利用できます。 前述した Sheet1 の A1 を選択する例を示します。 ' ****マクロの記述を使った場合 sub Rangeselec_auto rem ---------------------------------------------------------------------- rem define variables dim document as object dim dispatcher as object rem ---------------------------------------------------------------------- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") rem ---------------------------------------------------------------------- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" args1(0).Value = "$A$1" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) end sub
  24. 24. さあ!今から マクロを使ってみよう! There is no time like the present! 今が最適時です!
  25. 25. 今日のセミナーを聞いたから きっと大丈夫!! There is no time like the present! SlideShare にも色々上げてるから見てね!
  26. 26. 何かご質問はありませんか? こっそり尋ねたい方は 後で直接! or メールにて! kouwatanabe634@ gmail.com
  27. 27. ご清聴ありがとうございました

×