Quantcast
Channel: いつも隣にITのお仕事
Viewing all 2072 articles
Browse latest View live

エクセルVBAのQueryTableオブジェクトであらゆる種類のCSVを取り込む方法

$
0
0

あらゆる種類のCSVを取り込むアイキャッチ
みなさん、こんにちは!
フジタニ(@libartweb)です。

エクセルVBAでCSVを高速に取り込むQueryTableオブジェクトの使い方についてシリーズでお伝えしております。

前回の記事はこちら

エクセルVBAのQueryTableオブジェクトのプロパティの基本とCSVをカンマ区切りする方法
エクセルVBAのQueryTableオブジェクトでCSVを取り込む際はプロパティ指定が必須です。今回はQueryTableオブジェクトのプロパティの基本と、カンマ区切りでCSVを取り込む方法をお伝えします。

プロパティの基本と、CSVを取り込む第一歩として、「カンマ区切りで取り込む方法」をお伝えしました。

今回は、UTF-8のCSVを取り込んだり、文字列型に指定して取り込んだり…あらゆる種類のCSVに対応できる、QueryTableオブジェクトのプロパティを、更に詳細に説明していきます。

CSVの取り込みを更に便利にするプロパティ

QueryTableオブジェクトは、複雑なロジックを組まなくてもあらかじめ用意されているプロパティを駆使することで、非常にシンプルなソースコードでCSVの取り込みが可能です。
ではどんなプロパティがあるのか?見ていきましょう!

CSVを項目の型を指定して取り込む

エクセルでCSVを開くと

・16桁以上の数字は『1.2346E+10』など、不明な表記に変換されてしまう
・先頭のゼロが消えてしまう
・勝手に日付と判定される

など、意図せぬ編集を自動的にされてしまう場合があります。

過去の記事で紹介しております。

CSVとは何か?そしてエクセルでCSVファイルを扱うときの注意点
初心者向けエクセルVBAでCSVファイルを取り込む方法丁寧に解説をしていきたいと思います。初回は準備編としてそもそもCSVファイルとは何か、エクセルで開く際の注意点についてお伝えします。

例えば、以下のCSVは、すべてが取り込み時に化けてしまうことになります。

CSV化けてしまう

エクセルに取り込んでみました。すべて化けてしまっています。
エクセルに取り込むと化ける

その場合は、「文字列」で型指定をすることで、化けずに取り込むことが可能です。

使うのは以下のプロパティです。

QueryTableオブジェクト.TextFileColumnDataTypes

既定値:xlGeneralFormat(1を指定してもOKです。)

Array(1列目の型, 2列目の型, 3列目の型・・・)というように配列で列の型を指定します。10列あれば、10列分指定してください。

定数指定、値指定の使い分け

定数か、値かのどちらかを指定することができます。列数が多くなると以下のようにソースコードが長くなってしまうので、値を指定することをおすすめします。

10列分を定数で指定する場合

TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat)

10列分を値で指定する場合

TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)

値の方が明らかにスッキリしますね!

どのような定数や値があるか?は以下の表をご覧ください。よく使うのが太字にしているxlGeneralFormatとxlTextFormatです。

定数 説明
xlGeneralFormat(既定値) 1 一般
xlTextFormat 2 文字列
xlMDYFormat 3 MDY日付形式
xlDMYFormat 4 DMY日付形式
xlYMDFormat 5 YMD日付形式
xlMYDFormat 6 MYD日付形式
xlDYMFormat 7 DYM日付形式
xlYDMFormat 8 YDM日付形式
xlSkipColumn 9 スキップ(その列を取り込みたくない場合)
xlEMDFormat 10 EMD日付形式

実行結果

化けたCSVをTextFileColumnDataTypesプロパティで型を指定して取り込んでみます。

TextFileColumnDataTypes = Array(2, 2, 2)

文字列型

文字列型で化けずに取り込むことに成功しました!

このプロパティを指定しなければ既定値の「一般」となりますので、文字列型で取り込みたい項目がなければ省略しても問題ありません。

前回の記事でも紹介しましたが、TextFileColumnDataTypesプロパティは、テキストファイルウィザード上だと以下の場所です。
QueryTableプロパティ3

その他のプロパティについて

通常は省略してOKですが、CSVにはたくさんの種類があります。知っておくと場合によっては便利なプロパティを紹介します。

今回紹介する4つのプロパティを表した、テキストファイルウィザードの画面を以下に紹介します。ご覧いただきながら説明を読んでいただくとわかりやすいでしょう。

QueryTableプロパティ1
画面2プロパティ説明2

CSVの取り込む開始行を指定する

QueryTableオブジェクト.TextFileStartRow

既定値:1

例えばCSVの先頭行に見出しがあり、見出しは取り込みたくない!というときに指定します。見出し行を取り込まず2行目から取り込みたい場合は2を指定します。CSVの1行目から取り込みたい場合は省略してOKです。

TextFileStartRow = 2

もし、不要な見出し行が存在していて、このプロパティを使わなかった場合はCSVを取り込んだあとに、先頭行を削除する処理を追加しなければなりません。

それを省くことができるので場合によってはとても便利になるでしょう。

ダブルクォーテーションなど引用符を指定する

QueryTableオブジェクト.TextFileTextQualifier

既定値:xlTextQualifierDoubleQuote

通常のループを使用したCSVの取り込みだと以下の記事のように引用符のダブルクォーテーションをReplaceで削除しますが、QueryTableオブジェクトの場合は、デフォルトでダブルクォーテーションを削除してくれます。

エクセルVBAでダブルクォーテーションで囲まれているCSVファイルを取り込む
エクセルVBAでCSVファイルを取り込む方法シリーズです。今回はデータがダブルクォーテーションで囲まれているパターンのCSVをエクセルVBAで取り込む方法についてお伝えしたいと思います。

デフォルトなので、通常はプロパティ指定自体を省略してOKです。とても親切!

シングルクォーテーションの場合や、エクセルに取り込んだときもダブルクォーテーションを残したい、という場合に指定してください。

定数 説明
xlTextQualifierNone 引用符なし
xlTextQualifierDoubleQuote ダブルクォーテーション
xlTextQualifierSingleQuote シングルクォーテーション

UTF-8形式などの文字コードを指定する

QueryTableオブジェクト.TextFilePlatform

既定値:932(Shift-JIS)

文字コードを指定します。

Shift-JIS以外を取り込む場合は下記の値を指定してください。

文字コード
Shift-JIS 932
UTF-8 65001
UTF-16 1200

デフォルトだと化けてしまうUTF-8のCSV。TextFilePlatformプロパティを使えば、文字化けせずに取り込むことが可能です。

Shift-JISのCSVの場合は、プロパティ自体省略可能ですが、例えばUTF-8のファイルを取り込む場合は以下の通り記述してください。

TextFilePlatform = 65001

ちなみに、通常のループ使用のCSV取り込みだと以下の通り対応します。

文字化けよさようなら!エクセルVBAでUTF-8のCSVを読み込む方法
エクセルVBAのLine Input命令でUTF-8のCSVファイルを取り込むと文字化けを起こします。今回は、ADODB.Streamを使ってUTF-8のCSVファイルを取り込む方法についてお伝えします。

区切り文字の形式を指定する

QueryTableオブジェクト.TextFileParseType

既定値:xlDelimited

データの形式を指定します。CSVの場合は、区切りデータなので既定値(省略可)でOKです。

もし、固定長のファイルを取り込みたい場合はxlFixedWidthを使用してください。

定数 説明
xlDelimited カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ
xlFixedWidth スペースによって右または左に揃えられた固定長フィールドのデータ

まとめ

以上、様々な種類のCSVを取り込む際に知っておくと便利なQueryTableオブジェクトのプロパティを紹介しました!使えそうなのはありましたか?

他にもたくさんのプロパティが存在しますので、興味のある方は調べてみてください!

QueryTable プロパティ (Excel)

次回は、3つめのメソッド(メソッドはこれで最後です)である、QueryTable.Deleteメソッドを紹介します。

このメソッドは記述を忘れても正常にCSVを取り込めたように見えますが、忘れたら大変なことになります。

QueryTableオブジェクトによるCSV取り込みの最終処理として非常に重要となるメソッドです。どうぞお楽しみに!

連載目次:エクセルVBAのQueryTableで高速にCSVを取り込む

一般的なループを使用したCSV取り込みよりも、更に高速にCSVを取り込むことのできるQueryTableオブジェクトに関する連載です。サイズの大きなCSVを取り込む際に非常に便利です。
  1. エクセルVBAでQueryTableオブジェクトを使って高速にCSVを取り込む方法
  2. エクセルVBAのQueryTables.Addメソッドでクエリテーブルを作成する方法
  3. エクセルVBAのQueryTable.RefreshメソッドでCSVをシートに出力する方法
  4. エクセルVBAのQueryTableオブジェクトのプロパティの基本とCSVをカンマ区切りする方法

Windows標準アプリ「Snipping Tool」で画面キャプチャを簡単に取ろう!

$
0
0

SnippingToolアイキャッチ

はじめまして、もり(@excelprog)です!

みなさんは会社で「手順書」や「説明書」を作りますか?
たとえばこんなとき、

  • 業務引き継ぎの手順書を作る
  • IT担当者がユーザ向けにシステムの操作方法を伝える
  • メール等でシステム不具合の状況を伝える

文字だけでなく、実際の画面イメージを添えると読み手に伝わりやすいですよね。

画面のキャプチャがとても簡単に取れる、Windows標準アプリ「Snipping Tool」を紹介していきます。

Snipping Toolとは

Snipping Toolとは、画面の一部を簡単にキャプチャして画像保存ができるWindowsの標準アプリです。

Windows Vista/7/8/8.1/10に標準搭載されています。

snipとは:切り取る、はさみでチョキンと切る

アイコンイメージもこのようにはさみのマークなので覚えやすいですね。
SnippingToolのアイコン

なんといってもこのツールのスゴイ点は、

  • 画面上の必要部分のみを、はさみでチョキンと切り取るかのようなお手軽さ
  • 切り取った部分にメモ書きができること

です!

そのうえ、特別なソフトウェアのインストールは不要なので、Windowsユーザなら今すぐに使うことができますよ。

Snipping Toolの使い方

まずは基本的な使い方から紹介します。
えっ、こんなに簡単なの?と感じてもらえたら嬉しいです。

Snipping Toolを起動する

Windowsの画面左下の検索ボックスで「Snipping Tool」を検索します。

SnippingTool検索ボックスの位置

①snippingと入力(前方一致で検索できます)
②表示されたアイコンをクリック

SnippingTool起動方法

検索ボックスが非表示の場合は、Windowsのアイコンをクリック→「Windowsアクセサリ」→「Snipping Tool」の順番にクリックして起動できます。

SnippingTool起動方法アクセサリから

Snipping Toolのウィンドウが画面上に現れます。

SnippingTool起動後

四角形の領域を切り取る

まず、切り取りモードで「四角形の領域切り取り」が選択されていることを確認します。

SnippingTool領域指定

※OS・ツールのバージョンによっては「モード」ボタンがない場合があります。
その場合は「新規作成」ボタンの右側の▼をクリックすると確認できます。

SnippingToolバージョン違い

モードの確認ができたら、ウィンドウの「新規作成」ボタンを押します。

SnippingTool新規作成

このように背景が薄白くなり、切り取りモードになります。

SnippingTool切り取る

ここでは、当ブログのロゴを切り取ってみます。

切り取りたい領域の「始点」でマウスの左ボタンを押し、「終点」に向けてドラッグします。

そして、「終点」でマウスの左ボタンから指を離します。

SnippingTool範囲切り取り

ほら簡単!サクッと切り取れちゃいましたね!

SnippingTool切り取り完了

切り取った領域を画像保存する

画像の保存方法は2通りあります。

【方法1】キーボードのショートカットキーCtrl+Sを押す

【方法2】フロッピーディスクのマークを押す

SnippingTool画像を保存する方法

「名前を付けて保存」します。

①ファイルの種類を選択(デフォルトはPNG)
②ファイル名を設定
③保存

SnippingTool名前を付けて保存する

 

これでSnipping Toolの起動→画面の切り取り→保存までができました!

ツールのお手軽さを実感していただけましたか?

まだちょっともの足りない!
そんなあなたにワンランク上の使い方を紹介しちゃいます!

Snipping Toolのワンランク上の使い方

「画面を切り取って保存するだけ」ではちょっと芸がないですね。

Snipping Toolの実力、もっと紹介しますよ!

外部アプリケーションに貼り付ける

基本的な使い方では、切り取った領域を画像として保存しましたね。

実は、切り取った領域を外部アプリケーションに直接貼り付けることもできます。

ほんの一例ですが、みなさんがよくお使いのこれらにも貼り付けできますよ。

  • Officeのソフト(Excel・Word・PowerPoint・Outlookなど)
  • Googleドキュメント・スライドなど

たとえば、これをOutlookのアイテムに貼り付けてみます。

SnippingTool貼り付け画像のサンプル

 

Snipping Toolで切り取りすることでクリップボードにコピーされます。

SnippingToolクリップボードにコピー

 

なので、キーボードのCtrl+Vで外部アプリケーションに貼り付けできるという仕組みです。

SnippingTool画像を貼り付ける

メールで画像を送る時は、「画像として保存→画像ファイルを添付」するよりも、メール本文に直接貼ると効率的ですね。

プリントスクリーン機能で全画面をコピーしてExcelに貼り付けてトリミング…している方にとってはまさに画期的!

手順書作成などで画像をたくさん使用するときは、このように「画面切り取り→貼り付け」がオススメですよ。

ペンやマーカーで書き込みする

Snipping Toolにはペンやマーカーが用意されています。

①ペン(赤・青・黒・カスタム)
②マーカー
③消しゴム

SnippingToolペンマーカー消しゴム

これらのアイコンを選択すると、切り取った領域に対して書き込みができます。

書き込みを消したい場合は、③の消しゴムアイコンを使用します。
マウスポインタが消しゴムマークに変わるので、記入済みの部分にかざして左クリックで消します。

SnippingTool書き込み

もちろん、このようにメモ書きした状態を画像保存することもできますし、外部アプリケーションに貼り付けることもできます。

システム操作の手順を説明するときなどは、実際の画面を切り取って「ココのボタンを押すんだよ」と視覚的に表現することで、読み手に伝わりやすくなりますね。

枠線をつける

最後にちょっとオシャレしてみましょう。

「オプション」ボタンを押します。

SnippingToolオプション

 

「インクの色」を選択して、「切り取り領域をキャプチャした後、選択線を表示する」にチェックを入れてOKを押します。

「選択線」とは、切り取り領域の枠線のことです。

SnippingTool選択線

この設定で画面切り取りをすると、切り取った範囲に対して、枠線が付与されます。

たとえば、白系統の画面を切り取り、Wordなどの白いアイテムに貼り付ける場合、枠線がはっきりしていると見栄えがよくなりますね。
このような感じです。

SnippingTool枠線の有無

まとめ

Snipping Tool」いかがでしたか?

  • Windowsに最初からインストールされている
  • 画面の一部が簡単に切り取れて、メモ書きができる
  • 画像保存はもちろん、外部アプリケーションへの貼り付けもできる

こんなに便利なツールを使わない手はありませんよ!

私自身、今ではもうSnipping Toolのない生活は考えられない!そんな必須アイテムになっています。

みなさんも、ぜひ使ってみてくださいね!

お読みいただきありがとうございました。

【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?

$
0
0
object

photo credit: dejankrsmanovic Colorful Toys in Child’s Hands via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けにPowerPoint VBAの使い方を紹介するシリーズをお伝えしています。

前回の記事はコチラ。

【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
初心者向けPowerPoint VBA入門をシリーズでお伝えしています。今回は、実際にはじめてPowerPoint VBAで、文字列をデバッグ出力する簡単なSubプロシージャを作って実行してみます。

さて、最初に目指すものとして、どのようなものが良いのか…考えた末、これにしました。

「プレゼンテーションのフォントを一括変更しよう!」

私、メイリオ大好きっ子なんです。あと、文字色はちょっとグレーが好きなんです。

Googleスライドとか、他のPowerPointとか、あちこちからスライドをコピペして集めてきて、フォントとその色を統一するの…結構たいへんですよね。

ということで、マクロを作っちゃいます。

スライドに配置する図形やテキストボックスなどの、フォントについて操作する…やってみればわかるのですが、オブジェクトを掘って、掘って、掘って…

掘りまくった末に、ようやくフォントを操作するFontオブジェクトを操作できるようになります。

というのは、PowerPoint VBAのオブジェクト構造を学ぶ良い練習題材になるんですね。

まず今回は、VBAをはじめる上で非常に重要なキーワードである「オブジェクト」とは何かについて、またプレゼンテーションをオブジェクトとして取得して操作をする方法をお伝えします。

では、行ってみましょう!

オブジェクトとは何か

PowerPoint VBAを使う場合、プレゼンテーションだったり、スライドだったり、スライドに配置されているオートシェイプやテキストボックだったり、といった操作する対象があり、それに対して、何らかの操作したいということになります。

その操作する対象を「オブジェクト」と言います。

ですから、オブジェクトにはいくつかの(というかたくさんの)種類があります。

本シリーズで取り扱うPowerPointのオブジェクトだけでも、以下のようなものを予定しています。

オブジェクト 説明
Application PowerPointアプリケーション
Presentation プレゼンテーション
Slide スライド
Shape 描画オブジェクト
TextFrame テキスト枠
TextRange テキスト範囲
Font フォント設定

これ以外にも選択箇所を表すオブジェクト、ウィンドウを表すオブジェクト、マスターを表すオブジェクトなどたくさん用意されているんです。

それらオブジェクトを操作する方法は、大きく分けて二種類あります。

プロパティとメソッドです。

オブジェクトには、その種類に応じてたくさんのプロパティとメソッドが用意されていて、それを使って、オブジェクトを操作することができるのです。

プロパティでオブジェクトを操作する

プロパティとは

プロパティはオブジェクトの持っている値や状態を表します。

以下書式で取得することができます。

オブジェクト.プロパティ

例えば、Presentationオブジェクトであれば、以下のようなプロパティが用意されていて、

プロパティ 説明
Name プレゼンテーション名
Path プレゼンテーションの保存されているパス
Slides プレゼンテーションに含まれるスライドの集合

プロパティに値を代入する

プロパティは書き換え可能なものに限り、以下ように「=」記号を使う書式により書き換えることができます。

オブジェクト.プロパティ =

「=」記号は代入演算子と言い、右辺の値を左辺で指し示すものに上書きする操作をします。その操作を代入と言います。

プロパティの使用例

例えば、任意のプレゼンテーションがアクティブな状態で、以下のプロシージャを作成して実行してみましょう。

Sub プレゼンテーションのプロパティ()

Debug.Print ActivePresentation.Name
Debug.Print ActivePresentation.Path

End Sub

あ、ちなみに全部丁寧に打たなくていいですからね。例えば「ActivePresentation」であれば「ac」と打った後に、 Ctrl + Space を押すと、以下のようにメンバー候補が表示されるはずです。

VBEの補完機能

上下キーで選んで Tab キーで確定できます。

さて、このプロシージャを完成させて実行すると、私の環境では以下のように表示されました。

Presentationオブジェクトのプロパティをデバッグ出力

ActivePresentationは、現在アクティブになっているPresentationオブジェクトを表します。詳しくは別の記事で紹介します。

Nameプロパティは、プレゼンテーション名を取得するプロパティです。

Presentationオブジェクト.Name

また、Pathプロパティは、プレゼンテーションの保存されているフォルダパスを取得するプロパティです。

Presentationオブジェクト.Path

メソッドでオブジェクトを操作する

メソッドとは

メソッドはオブジェクトへの命令です。

以下書式でメソッドを実行することができます。

オブジェクト.メソッド

メソッド実行時に「引数」と呼ばれる値を渡したり、実行した結果として「戻り値」という値を受け取ったりすることができ、その際はちょっと書式が代わりますので、その際に説明します。

例えば、Presentationオブジェクトであれば、以下のようなメソッドが用意されています。

メソッド 説明
Close プレゼンテーションを閉じる
Save プレゼンテーションを保存する

メソッドの使用例

では、アクティブなプレゼンテーションを保存した状態で、以下のプロシージャを作成して実行してみましょう。

Sub プレゼンテーションのメソッド()

ActivePresentation.Close

End Sub

実行すると、アクティブなプレゼンテーションが閉じますね。

Closeメソッドは、プレゼンテーションを閉じるメソッドです。

Presentationオブジェクト.Close

これがメソッドってやつです。

まとめ

以上、PowerPoint VBAでとっても重要なオブジェクトとその操作をする方法についてお伝えしました。

  • オブジェクトの値や状態を表すプロパティ
  • オブジェクトに命令をするメソッド

この2つを使って、様々なオブジェクトを操作していくことができます。

さて、次回は今回サラっと流したActivePresentationについて解説をしていきます。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?

PowerPoint VBAでアクティブなプレゼンテーションを取得する方法

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けPowerPoint VBAのシリーズをお伝えしています。

前回の記事はコチラ。

【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
初心者向けにPowerPoint VBAの使い方を紹介するシリーズをお伝えしています。今回は、VBAで非常に重要な「オブジェクト」とは何かについて、またそれを操作するプロパティ・メソッドについてです。

PowePoint VBAを学ぶ上で重要な「オブジェクト」についてお伝えしました。

今回は、PowerPoint VBAでアクティブなプレゼンテーションを取得する方法を通じて、「オブジェクトを取得する」という作業について解説をしていきます。

では、行ってみましょう!

前回のおさらい

前回はPresentationオブジェクトを操作する方法として、2つのコードを紹介しました。

まず、プロパティをイミディエイトウィンドウに表示するこちらのコード。

Sub プレゼンテーションのプロパティ()

Debug.Print ActivePresentation.Name
Debug.Print ActivePresentation.Path

End Sub

そして、メソッドを実行するコードですね。

Sub プレゼンテーションのメソッド()

ActivePresentation.Close

End Sub

オブジェクトに対するプロパティやメソッドの使い方について

オブジェクト.プロパティ

とか

オブジェクト.メソッド

とかお伝えしたのですが、そもそもコード内の「ActivePresentation」って、ナニモノなんでしょうか?

今回は、そのあたりについて解き明かしていきたいと思います。

オブジェクトブラウザーでオブジェクトとそのメンバーを確認する

そのヒントになるのがオブジェクトブラウザーです。

オブジェクトブラウザーは、VBAで使用できるオブジェクトとそのメンバー(メソッドやプロパティなどのこと)について、調べることができるツールです。

VBEのメニューから「表示」→「オブジェクトブラウザー」とたどってみてください。

もしくは F2 キーでもOKです。

VBEからオブジェクトブラウザーを開く

すると、「オブジェクトブラウザー」の画面が開きますので、左上のプルダウンから「PowerPoint」を選び、「クラス」というエリアから「<グローバル>」を選択します。

オブジェクトブラウザー

すると、「ActivePresentation」という今回知りたい情報を見つけることができました。

まず左上のプルダウンは「ライブラリ」を選ぶプルダウンです。例えば、PowerPointで操作できるオブジェクトについては「PowerPointライブラリ」内にまとめられています。

「クラス」というエリアに、そのライブラリ内で使用できるオブジェクトなどが記載されています。Presentation、Slide、Shapeをはじめたくさん用意されているのがわかると思います。

そして「メンバー」というエリアに使用できる「メソッド」や「プロパティ」などが一覧されています。ここで、VBAのプロパティのアイコンのアイコンは「プロパティ」、VBAのメソッドのアイコンのアイコンは「メソッド」となります。

つまり、「ActivePresentation」は「ActivePresentationプロパティ」である、ということがわかりました。

グローバルとは

本来、プロパティを使うのでれば

オブジェクト.プロパティ

という形式であるとお伝えしましたが、「ActivePresentation」がプロパティとすると、「オブジェクト」はどこに行ったのでしょうか?

これには「<グローバル>」というキーワードが関係しています。

ここに含まれているメンバーを使用する場合は、「オブジェクト.」を省略して、いきなり使用することができます。

本来であればActivePresentationプロパティは、Applicationオブジェクトのメンバーなので

Application.ActivePresentation

とすべきところですが、「Application.」を省略して

ActivePresentation

と記述することができるのです。

ActivePresentationプロパティとは

それで、結局のところActivePresentationプロパティがナニモノかというと、アクティブなPresentationオブジェクトを取得するプロパティです。

ActivePresentation

「アクティブなPresentationオブジェクト」というのは、「現在の操作対象となっているPresentationオブジェクト」ということです。

なお、前述の通り、ActivePresentationプロパティはグローバルのプロパティなので、対象のオブジェクトを省略して使用することができますので、いつどんなときでも「ActivePresentation」と記述すれば、アクティブなPresentationオブジェクトを取得することができます。

オブジェクトを「取得する」とは

さっきから「取得する」と言ってますが、「取得する」とはどういうことでしょうか?

ActivePresentationプロパティは、アクティブなPresentationオブジェクトを取得するプロパティです。

つまり「ActivePresentation」といきなりプロパティを記述できますが、その部分は「アクティブなPresentationオブジェクト」を表します。

ほら、今までの説明だと

ActivePresentation.Name

これは、「プロパティ.プロパティ」になっちゃうわけなのですが、ActivePresentationプロパティがアクティブなPresentationオブジェクトを表してくれるおかげで「Presentationオブジェクト.プロパティ」となっているというわけです。

このように、プロパティでオブジェクトを取得するという式(これをオブジェクト式と言います)の書き方は頻繁に求められますので、覚えておいてくださいね。

まとめ

以上、今回はPowerPoint VBAでアクティブなプレゼンテーションを取得するActivePresentationプロパティについてお伝えしました。

また、それに加えて

  • オブジェクトブラウザーとは何か
  • グローバルなメンバーとは何か
  • オブジェクトを取得するとは

といったことについてもお伝えしました。

説明ばっかりで飽きちゃったかも知れませんが、大丈夫です。

次回からガンガンオブジェクトを取得していきます。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
  4. PowerPoint VBAでアクティブなプレゼンテーションを取得する方法

Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!

$
0
0

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。

前回の記事はこちらです。

Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
Windowsのポチポチ業務(マウスを使った業務)を爆速化するCUI=PowerShell。CUIを使う上で重要なカレントディレクトリ、親ディレクトリ・サブディレクトリ、ルートディレクトリの考え方をしっかり理解して、自由自在にディレクトリを移動できるようになりましょう!

前回はPowerShellのようなCUI(コマンドユーザーインタフェース)=文字でコンピュータを操作するときに重要なディレクトリの考え方と、その移動方法についてご説明しました。

コマンドレットとは、PowerShellに用意されているWindowsを操作する機能をまとめた命令のことです。

今回は、そのコマンドレットの基本的な構文と、コマンドレットに必要な情報を渡したり、その働きを変えるために使われるパラメータについてご説明いたします

それではいってみましょう!

コマンドレット

冒頭でも説明しましたが、コマンドレットとはWindowsを操作する機能をまとめた命令のことです。

連載の一番初めの記事

Windowsのポチポチ業務を爆速化できるPowerShell、はじめのハードルぐーーんと下げてみます!
Windowsユーザーにとって強力な手助けとなるCUI=PowerShell。とっつきにくいですが、慣れてしまえばこれほど強力な武器はありません。はじめのハードルを乗り越えてCUIで普段の業務を爆速化しましょう!

でも説明していますが、コマンドレットは

「Get-ChildItem」 → Get=取得する + ChildItem=子アイテム

のように動詞-名詞の形式で直感的に理解しやすく、またよく使う機能がまとめられているものです。

コマンドレットの基本形

コマンドレットは「Get-ChildItem」のように単体で使えますが、パラメータと呼ばれる値と組み合わせて使用することが多いです。

パラメータはコマンドレットに必要な情報を渡したり、その働きを変える機能をもちます

以下のような構文で書きます。基本形なので覚えてくださいね。

コマンドレット -パラメータ パラメータの値

「-」ハイフンをつけることでPowerShellはパラメータであることを認識します。パラメータのハイフンは付け忘れないように注意してください。

New-Itemを使ってみる

「New-Item」というファイルやディレクトリを作成するコマンドレットで、パラメータを指定する例をお見せします。

New-Itemでファイルを作成する

さっそくNew-Itemでファイルを作成してみます。

基本形はこのようになります。

New-Item -Path ディレクトリ名\ファイル名
  • コマンドレット:New-Item
  • パラメータ:-Path
  • パラメータの値:ディレクトリ名\ファイル名(今回はsamle\sample.txtとします。)

となっていますね。

PowerShellを立ち上げて、コマンドレットを実行すると

ディレクトリ「C:\Users\terad\sample」配下に「sample.txt」という名前のファイルが作成されました。

エクスプローラでも確認してみましょう。

確かに「sample.txt」ができていますね。

パラメータ

コマンドレットの基本的な構文を理解したところで、パラメータについて詳しく見ていきます。

-Pathパラメータ

-Pathパラメータについて詳しく説明します。

-Pathの設定値と注意点

-Pathには「sample\sample.txt」のようにディレクトリを含んだファイル名を指定することができます

また、ディレクトリを含まずに「sample.txt」とファイル名だけ指定することも可能です。その場合はカレントディレクトリにファイルが作成されます。

存在しないディレクトリを指定すると…

このようにエラーになるので、-Pathには作成済のディレクトリを指定するようにしてください。

-Pathは複数指定できる

-Pathは文字列の「配列」を使い、複数指定することができます

配列とは、同じ型(文字列など)のデータをまとめて扱う方法のことです。

配列の各データを要素と呼び、要素はPath[0]、Path[1]、Path[2]、…というように添え字と呼ばれる数字で指定します。

New-Item -Path samle1\a.txt,sample2\b.txt

このようにカンマ区切りで複数のディレクトリ名とファイル名を指定することができます

実際には見えませんが、Path[0]に「sample1\a.txt」、Path[1]に「sample2\b.txt」が入力されていると思ってください。

-Path以外のパラメータ

New-Itemのパラメータは-Path一つではなく、複数のパラメータが存在し、組み合わせて指定することが可能です

-Path以外の主要なパラメータについてご説明します。

-Name

-Nameは-Path同様に作成するファイルの「ディレクトリ名\ファイル名」を指定します。

基本的には-Pathと同じですが、-Pathを補完するために使うことが多いです。

New-Item -Path sample -Name sample.txt

このように-Pathに「sample」、-Nameに「sample.txt」と指定すると、それぞれの文字列が合体して「sample\sample.txt」となり、「sample」ディレクトリに、「sample.txt」というファイルが作成されます。

-ItemType

-ItemTypeを使えばディレクトリなどファイル以外のアイテムを作ることができます

New-Item -Path sample -ItemType Directory

ItemTypeにはfile、Directoryなどが指定できます。指定しない場合はファイルが作成されます。

-Force

-Pathには存在するディレクトリを指定しないとエラーとなるとご説明しましたが、-Forceを使えばディレクトリが存在しない場合に自動作成します

またファイルを作成する場合、すでにある同じ名前のファイルを上書くことができます

New-Item -Path sample -Force

このように-Forceの場合はパラメータだけで設定値は必要ありません。

パラメータの種類

パラメータは、必須とオプションの2種類に大別されます

必須パラメータ

コマンドレットで必ず入力が必要なパラメータのことです。

-Path、-Nameが必須のパラメータとなります。

-Path、-Nameのいずれかは必ず指定が必要です。

オプションパラメータ

オプションパラメータには、-ItemTypeや-Forceなどがあります。

New-Item -Path ディレクトリ名\ファイル名 -ItemType file -Force

このように複数のパラメータを並べて記載することができます

オプションのパラメータが指定されない場合は、デフォルト値がコマンドレットに渡されます

必須パラメータを入力しなかった場合

必須パラメータの入力しなかった場合でも、PowerShellでは入力を促すメッセージを出してくれます。

New-Itemを単独で入力してみます。

このように「次のパラメータを指定してください。」のメッセージのあとに必須パラメータである「Path[0]:」が表示されています。

さきほどご説明した配列の形式で表示されていますね。

Pathの後ろに[0]とありますが、配列の1つめの要素にディレクトリ名\ファイル名を入力しなさいということです。

Path[0]に「sample\sample.txt」を入力してエンターを押すと…

Path[1]が表示され、次の要素への入力を促します。

Pathの指定が終わりであれば、何も入力せずエンターを押し、Pathの配列の入力が終わったことをPowerShellに通知します。

無事、ファイルが作成されました。

まとめ

いかがだったでしょうか。今回はNew-Itemを例にコマンドレットの基本的な構文とパラメータについて詳しく解説しました。

コマンドレットは単体だけではなく、絶対に必要な情報を渡す必須パラメータと、様々に働きを変えてくれるオプションパラメータを組み合わせて使うんですね。

次回はコマンドレットのパラメータについて自分で調べられるようになるため、オンラインヘルプの参照方法についてお伝えします!

最後までお読みいただきありがとうございました!

連載目次:Windowsのポチポチ業務を爆速化するPowerShell

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
  1. Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
  2. Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
  3. Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
  4. Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!

エクセルVBAで高速にCSVを取り込むQueryTableオブジェクトの最終処理

$
0
0

QueryTable.Deleteメソッドアイキャッチ
みなさん、こんにちは!
フジタニ(@libartweb)です。

エクセルVBAでCSVを高速に取り込むQueryTableオブジェクトの使い方についてシリーズでお伝えしております。

前回の記事はこちら

エクセルVBAのQueryTableオブジェクトであらゆる種類のCSVを取り込む方法
エクセルVBAでCSVを爆速で取り込むQueryTableオブジェクトには様々なプロパティが存在します。このプロパティを使いこなすことであらゆる種類のCSVをシンプルなソースコードで取り込むことができます。

QueryTableオブジェクトはただ速いだけでなく、UTF-8などのあらゆる種類のCSVを取り込むことができること、それらをシンプルなソースコードで実現できることを紹介しました。

今回は、QueryTableオブジェクトを使用したCSV取り込みの最終処理であるQueryTable.Deleteメソッドを紹介します。

最終処理・・・地味な内容に聞こえるかもしれませんが、忘れると大変。非常に重要です!

最終処理としてクエリテーブルを削除する

QueryTables.Addメソッドを使用するとWorksheet上にはクエリテーブルが作成されます。

以前に以下の記事で解説した内容です。

エクセルVBAのQueryTables.Addメソッドでクエリテーブルを作成する方法
エクセルVBAのQueryTables.AddメソッドでエクセルのWorksheet上にクエリテーブルを追加してそこにCSVを取り込む方法と、出力先セル位置を取得する方法を紹介します。

QueryTableオブジェクトを使用したCSVの取り込みは以下の流れで実現しています。

  1. 新しいクエリテーブルを作成
  2. クエリテーブルにCSVを取り込む
  3. クエリテーブル上のCSVをWorksheetに出力する

Worksheet上にCSVを出力した後も、クエリテーブルは残ってしまっている状態です。

なぜクエリテーブルの削除が必要か?

クエリテーブルは外部ファイルとリンクされているテーブルです。

リンクされていますので、設定によっては取り込み元のCSVを更新したら、エクセルに取り込んだCSVまで更新されてしまう場合があります。

リンクは、エクセルを開く際に自動的に取り込み元のCSVの内容に合わせてWorksheet上のデータを更新したり、一定時間ごとに自動更新する設定がエクセルの機能としてあります。

以下の画面です。

クエリテーブルリンク設定

今回QueryTableオブジェクトで実現したいのは、リンクすることではなく、CSVをエクセルに高速に取り込むことです。

クエリテーブルの削除を忘れてしまうとリンクが残ったままになるだけでなく、複数のCSVを連続して取り込んだ場合に、クエリテーブルがWorksheet上に大量に生成されて様々な不具合の原因となってしまいます。

不具合を招くので、CSVを取り込むだけであれば、基本的にクエリテーブルは不要です。削除してしまいましょう。

クエリテーブルを削除することで、リンクは解除され、取り込んだCSVはただのデータとなります。

ちなみに、クエリテーブルの削除を忘れて、Worksheet上のデータを削除しようとすると、以下のような確認画面がでます。これが出たらクエリテーブルが残っている状態です。
クエリテーブルの削除

クエリテーブルを削除する方法

今回のサンプルコードは以下の通りです。

Private Sub csvImport()
 
    Dim strPath As String
    Dim qtCsv   As QueryTable
    
    strPath = "C:\Users\hirom\Desktop\test.csv"
    Set qtCsv = Sheet1.QueryTables.Add(Connection:="TEXT;" & strPath, _
        Destination:=Sheet1.Range("A1")) '取り込むCSVファイルパスと、取り込み先のシート、セルを指定
    
    With qtCsv
        .TextFileCommaDelimiter = True 'カンマ区切りの指定
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) '項目(列)の型指定
        .Refresh 'QueryTableオブジェクトを更新し、シート上に出力
        .Delete 'QueryTableオブジェクトを削除
    End With
End Sub

以下のメソッドを使用します。

QueryTableオブジェクト.Deleteメソッド

QueryTables.Addメソッドで追加したクエリテーブルを削除します。

CSV取り込みのQueryTableプロパティを設定し、Worksheet上に出力した後に実行する最終処理です。

実行を忘れても、一見うまくいったように見えますが、上述したとおり不具合の原因となりますので必ず忘れずに記述してください。

まとめ

以上、作成したクエリテーブルを削除する最終処理であるQueryTable.Deleteメソッドについて説明しました。

ここまでの連載で一通り、QueryTableオブジェクトを使用して高速にCSVを取り込む方法の解説は終了です。

連載を、CSV取り込みの業務でどうぞご活用ください!

次回は、QueryTableオブジェクトで発生する可能性のある不具合とその対処法について説明します。

不具合を事前に想定しておくことで、想定外の処理結果やミスを防ぐことができます。

お楽しみに!

連載目次:エクセルVBAのQueryTableで高速にCSVを取り込む

一般的なループを使用したCSV取り込みよりも、更に高速にCSVを取り込むことのできるQueryTableオブジェクトに関する連載です。サイズの大きなCSVを取り込む際に非常に便利です。
  1. エクセルVBAでQueryTableオブジェクトを使って高速にCSVを取り込む方法
  2. エクセルVBAのQueryTables.Addメソッドでクエリテーブルを作成する方法
  3. エクセルVBAのQueryTable.RefreshメソッドでCSVをシートに出力する方法
  4. エクセルVBAのQueryTableオブジェクトのプロパティの基本とCSVをカンマ区切りする方法
  5. エクセルVBAのQueryTableオブジェクトであらゆる種類のCSVを取り込む方法

【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する

$
0
0
slide

photo credit: tonyhall via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けにPowerPoint VBAの入門シリーズをお送りしています。

前回の記事はコチラ。

PowerPoint VBAでアクティブなプレゼンテーションを取得する方法
初心者向けPowerPoint VBAのシリーズをお伝えしています。今回は、PowerPoint VBAでアクティブなプレゼンテーションを取得する方法、オブジェクトを取得するとは何かについて解説をしていきます。

アクティブなプレゼンテーションを取得する方法についてお伝えしました。

プレゼンテーションを取得できたので、今回はその配下にある「スライド」をオブジェクトとして取得してみたいと思います。

ということで、PowerPoint VBAでプレゼンテーションのスライドを取得する方法です。

コレクションとは何か、ということも解説しますよ。

では、行ってみましょう!

全ての図形やテキストボックスのフォントを変更したい

さて、本シリーズの目標としては

「プレゼンテーションのフォントを一括変更しよう!」

を目標に進めていきます。

例えば、以下のようなプレゼンテーションがあるとしましょう。

プレゼンテーションの例

このプレゼンテーションの全ての描画オブジェクトについて、そのフォントを変更したいのですが、どう進めましょうか?

まず、前提知識として、前々回にお伝えしたとおり、VBAでは、操作対象をオブジェクトとして取得して、メソッドやプロパティを使うことで操作をすることができます。

いくつか方法は考えられるのですが、今回はオーソドックスに

  1. 各スライドの図形やテキストボックスをオブジェクトとして取得する
  2. 取得したオブジェクトのフォントを変更するメソッドやプロパティを使う

という流れで考えてみます。

ざっくりですが。

PowerPointのオブジェクトの階層構造

となると、「各スライドの図形やテキストボックスをオブジェクトとして取得する」というのが、当面の目標となります。

その目標を達成する上で、PowerPointのオブジェクトの階層構造について理解をする必要があります。

PowerPointのオブジェクトは以下の図のように、

  • Presentationオブジェクト: プレゼンテーション
    • Slideオブジェクト: スライド
      • Shapeオブジェクト: 図形やテキストボックスなどの描画オブジェクト

というような「親子関係」「入れ子」の構造になっていることを確認しておきましょう。

PowerPointのオブジェクトの階層構造
もう一つ確認しておくべき点として、親オブジェクトにあたるオブジェクトが取得できていれば、その配下の子オブジェクトを取得するプロパティが用意されているということです。

今回目的となるのは、図形やテキストボックスを表すShapeオブジェクトですから、Presentationオブジェクト→Slideオブジェクト→Shapeオブジェクトという順番に取得していけば良いということになります。

コレクションとは

では、順番どおりに早速PresentationオブジェクトからSlideオブジェクトを取得しよう!…とその前にもう一つ抑えておくべきポイントがあります。

プレゼンテーションにはただ一枚のスライドがある場合もありますが、複数のスライドが存在していることも当然ながらあります。

また、同様に各スライドには複数のShapeオブジェクトが存在し得るわけです。

VBAでは、同種のオブジェクトの集合を「コレクション」と言います。

ですから、Presentationオブジェクトの配下にはSlideオブジェクトの集合つまりSlidesコレクションが存在しています。

したがって、ダンドリとしては

  1. Slidesコレクションを取得
  2. Slidesコレクションのうち何らかの方法で操作したいオブジェクトを取得

という手順が必要になります。

ちなみに、プレゼンテーションも複数立ち上げていることがありますので、Presentationsコレクションが存在しています。

もちろん、図形やテキストボックスなどの描画オブジェクトも複数存在していますので、Shapesコレクションが存在します。

つまり、以下表のようにオブジェクトに対応したコレクションが存在しているということになります。

オブジェクト コレクション
Presentationオブジェクト Presentationsコレクション
Slideオブジェクト Slidesコレクション
Shapeオブジェクト Shapesコレクション

コレクションには複数系ということで「s」がつくのも覚えておきましょう。

また、コレクションは集合を表すオブジェクトなので、プロパティやメソッドなどで操作をすることができます。

Slidesコレクションを取得する

では、実際にPresentationオブジェクトから、Slidesコレクションを取得してみましょう。

以下のSlidesプロパティを使います。

Presentationオブジェクト.Slides

例えば、以下プロシージャを実行すると、今回の例では「2」とイミディエイトウィンドウに表示されます。

Sub Slidesコレクションの取得()

Debug.Print ActivePresentation.Slides.Count

End Sub

Countプロパティは、その名の通り、コレクションに含まれる要素数を取得するプロパティです。

Slidesコレクション.Count

SlidesコレクションからインデックスでSlideオブジェクトを取得する

さて、Slidesコレクションは取得できましたが、コレクションからSlideオブジェクトを特定する必要があります。

一般的に、コレクションからオブジェクトを取得するには、数値型のインデックスを使う方法と、文字列型の名前を使う方法があります。

コレクション(インデックス)
コレクション(名前)

Slideコレクションの場合はインデックスを使うことが多いでしょう。

Slideコレクション(インデックス)

インデックスは1から始まる整数ですが、スライド開始番号を変更していなければ、Slideコレクションでいうとスライド番号となりますのでわかりやすいです。

一方で、スライド名はPowerPointが内部的に勝手に決めており、外側からスライド名を把握するのは手がかかります。

例えば、以下のようばプロシージャを実行すると、プレゼンテーションの1枚目のスライドのスライド名とインデックスを確認することができます。

Sub Slidesオブジェクトの取得()

Debug.Print ActivePresentation.Slides(1).Name
Debug.Print ActivePresentation.Slides(1).SlideIndex

End Sub

Nameプロパティ、SlideIndexプロパティはそれぞれスライド名、スライドのインデックスを取得するプロパティです。

Slideオブジェクト.Name
Slideオブジェクト.Slideindex

まとめ

以上、PowerPoint VBAでスライドを取得する方法についてお伝えしました。

  • PowerPointのオブジェクトの階層構造
  • コレクションとは何か
  • Slidesコレクションを取得する方法
  • Slidesコレクションからオブジェクトを特定する方法

といったことをご理解いただけたのではないかと思います。

次回ですが、続いて描画オブジェクト、つまりShapeオブジェクトを取得していきます。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
  4. PowerPoint VBAでアクティブなプレゼンテーションを取得する方法
  5. 【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する

【はじめてのOutlook VBA】Outlookの予定を登録する方法

$
0
0

outlookvba,ApointmentItem,eyecatch

みなさまこんにちは、ノグチです。

企業に属しておられる方々の中には、メーラーやスケジューラーが会社で指定されていて、「社内のメンバー同士のスケジュールを把握するため、予定は必ずスケジューラーに入れること!」という社内ルールがあるという方もおられるのではないでしょうか。

しかしこの予定を登録するのって、1回1回は大した手間ではないのですが、忙しい時期や部署によっては登録する予定の数が多くなってしまって、ついつい予定登録を後回しにしてしまうことも…

毎週開催される定例会議だけど、週によって開催する曜日や時間が違う…なんていう場合に至っては、予定登録の「繰り返し」機能すら使えず、予定を登録しながらイライラしてしまいます。

もしOutlookの予定表を使っておられるなら、エクセルシートに予定を書いた複数の予定をOutlookの予定に一気に登録できますよ。

これまではエクセルVBAでOutlookを操作する方法をご紹介してきましたが、今回からはOutlook VBAでタスクや予定の登録方法を連載でご紹介していきます。

今回の記事では、ワークシートのリストを纏めてOutlookの予定登録するための第一段階として、VBAでOutlookの予定を登録する方法をご紹介します!

OutlookでもVBAのコーディングができる

OutlookのVBEを開く

これまでご紹介してき記事では、エクセルVBAでOutlookを操作する方法ばかりでした。

でも、実はOutlookでもVBAのコーディングができるんです。

なので今回は、Outlook VBAでコーディングをしてみましょう。

OutlookでVBEを開くには、メニューにある「開発」タブを開いて、見慣れた「Visual Basic」をクリックすれば、いつものVBEの画面が開きます。

Outlook,開発タブ

メニューに開発タブが見当たらない場合

Outlookのメニューに「開発」タブが見当たらない!という場合は、リボンのユーザー設定を変更すれば表示させられますよ。

メニューから「ファイル」> オプションをクリックして、「リボンのユーザー設定」を開きます。

画面右側にタブ名が並んでいますので、「開発」の左側にあるチェックボックスにチェックを入れて、「OK」をクリックすれば、メニューに「開発」タブが現れます。

Outlook,リボンのユーザー設定

あとは、エクセルのVBEと同じように、標準モジュールを挿入すれば…

Outlook,VBE

この通り、いつものVBEの画面になります。

Outlook VBAで予定を登録する

ではVBEの準備もできたところで、実際に予定を登録するコードを書いていきましょう。

AppointmentItemオブジェクト

まずは予定を操作するオブジェクトが必要ですね。

Outlookの予定は、AppointmentItemオブジェクトで操作します。

AppointmentItemオブジェクトのプロパティ

AppointmentItemオブジェクトのプロパティには、例えば以下のようなものがあります。

プロパティ名 内容
Subject 件名
Location 場所
Start 予定開始時間
End 予定終了時間
Body 予定の本文
ReminderSet アラームの有無(True/Falseを指定)
ReminderMinutesBeforeStart 予定の何分前にアラームを鳴らすか
AllDayEvents 終日の予定かどうか(True/Falseを指定)

Saveメソッドで予定を登録する

AppointmentItemオブジェクトのプロパティで予定の内容を指定できたら、後は保存するだけです。

予定を保存するには、AppointmentItemオブジェクトのSaveメソッドを使います。

記述方法は、MailItemオブジェクトのSaveメソッドの時と同様に、非常に単純です。

AppointmentItem.Save

VBAで予定を登録する

では早速、AppointmentItemオブジェクトとプロパティ、メソッドでOutlookの予定を登録してみましょう。

まずはAppointmentItem型の変数を宣言します。

Dim オブジェクト名 As Outlook.AppointmentItem

そして、Outlookのアイテムのオブジェクトを取得するにはCreateItemメソッドを使用するのでしたね。

CreateItemメソッドのパラメータには、予定を表す olAppointmentItemを指定します。

Outlookアプリケーションオブジェクト.CreateItem(olAppointmentItem)

CreateItemメソッドとパラメータについては下記記事で紹介していますので、こちらをご覧ください。

【エクセルVBA】Outlookでメールを作成・送信する方法
エクセルシートに記入された件名や本文を、エクセルVBAによってOutlookのメールの件名と本文にセットしてメール送信する方法をご紹介しています。VBAでメールの送信ができれば、宛先に応じてメールの本文を変えつつ一斉に送信することもできますよ。

そしてApointmentItemオブジェクトの各パラメータを指定したコードがこちら。

Sub CreateAppointmentItem()
Dim objApItem As Outlook.AppointmentItem

Set objApItem = Application.CreateItem(olAppointmentItem)

    With objApItem
        .Subject = "△△会議"
        .Location = "XXX会議室"
        .Start = #8/1/2018 2:00:00 PM#
        .End = #8/1/2018 4:00:00 PM#
        .Body = "○○プロジェクト会議"
        .ReminderSet = True
        .ReminderMinutesBeforeStart = 30
        .Save
    End With

End Sub

2018年8月1日、午後2時から4時までの会議の予定です。

予定時刻の30分前にアラームを鳴らすように指定しています。

このコードを実行してみると…

Outlook,予定登録
この通り、ちゃんとOutlookの予定が登録されていますね。

最後に

今回は、Outlook VBAでOutlookの予定を登録する方法をご紹介しました。

エクセルのワークシートのデータなどを使わないで、Outlook単体の動作をする処理なら、OutlookのVBAでコーディングすることもできますよ。

次回は、エクセルワークシートに一覧化した予定を、Outlookの予定としてまとめて登録する方法をご紹介していきます。

それでは、最後までお読みいただきありがとうございました!

連載目次:はじめてのOutlook VBA

Outlook VBAで、予定やタスクの登録方法など、Outlookを操作する方法をご紹介しています。メーラーやスケジューラとして便利なOutlookですが、VBAで更に便利なツールにしてしまいましょう!

  1. 【はじめてのOutlook VBA】Outlookの予定を登録する方法

PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けPowerPoint VBAの入門シリーズとして、図形やテキストボックスのフォントを変えるマクロの作成を目指しています。

前回の記事はコチラ。

【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する
初心者向けにPowerPoint VBAの入門シリーズをお送りしています。今回はPowerPoint VBAでプレゼンテーションのスライドを取得する方法、コレクションとは何かについてお伝えします。

スライドオブジェクトを取得する方法をお伝えしました。

Presentationオブジェクト→Slideオブジェクト…と来ましたので、次はいよいよ図形やテキストボックスなどの描画オブジェクトを表すShapeオブジェクトですね。

では、PowerPoint VBAでShapeオブジェクトを取得する方法です。

For Each文でループを回す方法を使いますよ。

でじゃ、行ってみましょう!

前回までのおさらい

以下のプレゼンテーションを題材として使用します。

プレゼンテーションの例

2枚のスライドがありますが、両方のスライドに配置してある、全ての図形、テキストボックスについて、そのフォントを変更するマクロを目指していきます。

前回までで、以下のようにSlideオブジェクトの取得まではできるようになりました。

Sub Slidesオブジェクトの取得()

Debug.Print ActivePresentation.Slides(1).Name
Debug.Print ActivePresentation.Slides(1).SlideIndex

End Sub

今回は描画オブジェクト、つまりShapeオブジェクトの取得を目指していきます。

Shapeオブジェクトとは

PowerPoint VBAでは図形、オートシェイプ、テキストボックス、図など、スライドに配置する描画オブジェクトは、全てShapeオブジェクトとして取り扱うことができます。

当然ながら、スライド上には複数のShapeオブジェクトが存在する可能性がありますので、まずはShapesコレクションとして取得する必要があります。

Shapesコレクションを取得する

SlideオブジェクトからShapesコレクションを取得するには、Shapesプロパティを使います。

Slideオブジェクト.Shapes

例えば、以下のプロシージャを前述のプレゼンテーションについて実行をすると、イミディエイトウィンドウに「6」と表示されます。

Sub Shapesコレクションの取得()

Debug.Print ActivePresentation.Slides(1).Shapes.Count

End Sub

CountプロパティShapesコレクションの要素数を取得するものです。

Shapesコレクション.Count

ShapesコレクションからShapeオブジェクトを取得する

これでShapesコレクションが取得できたので、その中からShapeオブジェクトを特定してみましょう!

…って、どうするんですかね?

前回の記事でコレクションからオブジェクトを取得するには、インデックスか名前かを使うとお伝えしたのですが、どちらもわかりません…

Shapeコレクションについてループを回す

そんなときには、コレクションに含まれる全てのShapeオブジェクトについてループを回すという方法があります。

VBAではコレクション内のオブジェクトを一つ一つ取り出して繰り返し処理をするFor Each文という構文があります。

For Each 変数 In コレクション
 ’処理
Next 変数

まず、コレクションからオブジェクトを一つ取り出して、それを変数にセットします。

変数というのは、値やオブジェクトを入れることができるものです。

For Each文内(For Eachブロックといいます)で、そのオブジェクトを指し示すものとして利用できます。

そのオブジェクトについてFor Eachブロックの処理が終われば、また別のオブジェクトを変数にセットして、ブロック内の処理をします。

このようにコレクションから全てのオブジェクトを取り出し終わるまで繰り返します。

Shapesコレクションについて繰り返し処理をするプロシージャ

では、このFor Each文を実際に使ってみましょう。

以下のプロシージャを作成して実行してみます。

Sub Shapesコレクションのループ()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    Debug.Print shp.Name
Next shp

End Sub

すると、イミディエイトウィンドウに以下のように出力がされます。

Shapesコレクション内のShapeオブジェクト名を出力

なお、NameプロパティShapeオブジェクトの名前を取得するものです。

Shapeオブジェクト.Name

Shapeオブジェクトの名前も、Slideオブジェクトのそれと同様、PowerPointが内部的に決めているもので、外側からは把握することができません。

今回のようなマクロを実行して調べる、ということはよくやります。

変数の宣言

コードの3行目ですが、変数の宣言を行っています。

先ほどもお伝えしましたが、変数とは、値やオブジェクトを入れることができるものです。

For Each文内では「shp」という変数を使用しています。

こちらの記事でお伝えした通り、「変数の宣言を強制する」ようにしましたので、「これからこの変数を、このタイプで使うよ」という宣言が必要なのです。

変数の宣言はDimステートメントで行います。

Dim 変数名 As

なお、変数名は基本的に好きに決めることができます。日本語も使えますが、一般的にはアルファベットを使うことが多いです。

まとめ

以上、PowerPoint VBAでShapeコレクションについてループを回す方法をお伝えしました。

これで、Shapeオブジェクトも取得して操作をすることができるようになりました。

次は、Shapeオブジェクトからテキストを取得する方法を見ていきます。

次回、進めていきます!

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
  4. PowerPoint VBAでアクティブなプレゼンテーションを取得する方法
  5. 【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する
  6. PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法

【初心者向けPowerPoint VBA】Shapeオブジェクトのテキストを取得する方法

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けPowerPoint VBAのシリーズとして、図形やテキストオブジェクトのフォントを変更するマクロを作成する方法をお伝えしています。

前回の記事はコチラ。

PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法
初心者向けPowerPoint VBAの入門シリーズをお伝えしています。今回は、PowerPoint VBAでFor Eachループを使って、コレクション内のShapeオブジェクトを取得する方法です。

スライドのShapeコレクションについてループを回す方法をお伝えしました。

今回はこうして取得した各Shapeオブジェクトに入力されているテキストを取得してみたいと思います。

PowerPoint VBAでShapeオブジェクトのテキストを取得するプロシージャを紹介していきます。

では、行ってみましょう!

前回のおさらいと目標

題材として使用するプレゼンテーションはコチラです。

プレゼンテーションの例

それで、このプレゼンテーションには2枚のスライドがあって、それぞれにいくつかの描画オブジェクトがありますが、全てについてフォントを変更するというのを目標に進めています。

それで、[前回]まで色々学んできたコードはコチラですね。

Sub Shapesコレクションのループ()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    Debug.Print shp.Name
Next shp

End Sub

1枚目のスライドについて、全ての描画オブジェクトすなわちShapesコレクションについてループ処理をするというところまで来ました。

目標はフォントを操作することなのですが、そのためにはもうひと手間必要です。

Shapeオブジェクトの構造

さて、ここまで掘って掘ってようやくShapeオブジェクトまでたどりついたのですが、実はこの先がまだまだ全然あります。

具体的には以下のような入れ子構造になっています。

  • 描画オブジェクト: Shapeオブジェクト
    • レイアウト枠: TextFrameオブジェクト
      • テキスト範囲: TextRangeオブジェクト
        • フォント設定: Fontオブジェクト

うわ~…いっぱいありますね。まだ、だいぶ掘らないといけませんね。

今回はTextRangeオブジェクトの取得を目指していきます。順番に解説していきましょう。

レイアウト枠を表すTextFrameオブジェクト

TextFrameオブジェクトは、Shapeオブジェクトのレイアウト枠を表すオブジェクトです。

ご存知の通り、Shapeオブジェクトには、テキストを入力することができます。

TextFrameオブジェクトはその「枠」として、例えば

  • テキストボックスの垂直方向の配置は?
  • 上下左右の余白は?
  • 図形内でテキストを折り返す?

などといったことを司り、それらを操作するプロパティが用意されています。

つまり、「図形の書式設定」の「文字のオプション」→「テキストボックス」での設定項目を設定できるオブジェクトと考えていただくと良いでしょう。

図形の書式設定の文字のオプションのテキストボックスの設定項目

Shapeオブジェクトに対して、レイアウト枠すなわちTextFrameオブジェクトを取得するには、TextFrameプロパティを使います。

Shapeオブジェクト.TextFrame

テキスト範囲を表すTextRangeオブジェクト

Shapeオブジェクトのテキスト範囲を表すのがTextRangeオブジェクトです。

TextRangeオブジェクト内に、文字列が入力されているというイメージで

  • テキスト範囲内の文字列を取得する
  • テキスト範囲をコピー、削除する
  • テキスト範囲に日付、時刻、スライド番号を挿入する
  • テキスト範囲のフォント設定を取得する

といった役割を持ちます。

TextRangeオブジェクトは、レイアウト枠であるTextFrameオブジェクトの配下にありますので、TextFrameオブジェクトに対するTextRangeプロパティで取得します。

TextFrameオブジェクト.TextRange

Shapeオブジェクトのテキストを取得する

TextRangeオブジェクトまで取得できれば、Shapeオブジェクト内の文字列も取得できますので、取得してみましょう。

TextRangeオブジェクトのTextプロパティを使います。

TextRangeオブジェクト.Text

冒頭のプロシージャを少し変更して、Shapeオブジェクトの名前ではなくて、文字列を表示してみましょう。

コードはコチラです。

Sub Shapesコレクションのループでテキストを表示()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    Debug.Print shp.TextFrame.TextRange.Text
Next shp

End Sub

実行すると、以下のような出力が得られます。

PowerPointのShapeオブジェクトの文字列

まとめ

以上、PowerPoint VBAでShapeオブジェクトのテキストを取得する方法をお伝えしました。

  • レイアウト枠を表すTextFrameオブジェクト
  • テキスト範囲を表すTextRangeオブジェクト
  • テキストを取得するTextプロパティ

などお伝えしてきました。

階層はちょっと深いですが、それほど難しいものではないと思いますので、最初のうちはお決まり文句的に理解いただいても良いです。

次回、いよいよフォントを操作していきますよ。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
  4. PowerPoint VBAでアクティブなプレゼンテーションを取得する方法
  5. 【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する
  6. PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法
  7. 【初心者向けPowerPoint VBA】Shapeオブジェクトのテキストを取得する方法

PowerPoint VBAでフォント設定をするFontオブジェクトを取得する

$
0
0
font

photo credit: Daniel Ari Friedman Alphabet via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けPowerPoint VBAの使い方ということで、プレゼンテーションの全ての描画オブジェクトについてフォントを変更するマクロの作成を目指しています。

前回の記事はコチラ。

【初心者向けPowerPoint VBA】Shapeオブジェクトのテキストを取得する方法
初心者向けPowerPoint VBAのシリーズとして、図形やテキストオブジェクトのフォントを変更するマクロを作成する方法をお伝えしています。今回は、Shapeオブジェクトのテキストを取得する方法です。

描画オブジェクトのテキストの取得の方法をお伝えしました。

それで、テキストを取得する対象となるテキスト範囲を表すTextRangeオブジェクトにも言及したわけですが、このTextRangeオブジェクトからフォントを操作するFontオブジェクトにアクセスが可能です。

ということで、今回はPowerPoint VBAでフォントを設定するFontオブジェクトを取得する方法についてお伝えします。

では、行ってみましょう!

前回のおさらい

題材としているプレゼンテーションはコチラです。

プレゼンテーションの例

それで、前回紹介したコードがコチラですね。

Sub Shapesコレクションのループでテキストを表示()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    Debug.Print shp.TextFrame.TextRange.Text
Next shp

End Sub

これで、1枚目のスライドの全てのShapeオブジェクトのテキストについて、デバッグ出力により確認することができました。

今回は、Shapeオブジェクトのフォントについて操作をしていきましょう。

フォント設定を表すFontオブジェクト

Shapeオブジェクトのフォント設定は、Fontオブジェクトというオブジェクトが司っていて、Fontオブジェクトに用意されているプロパティにより

  • フォントの種類(英数字用/日本語用)
  • サイズ
  • 太字/イタリック/下線
  • フォントの色

などを設定できます。

ちょうど、描画オブジェクトを選択状態でリボン「PowerPointのリボンのフォント設定」をクリックで開く、以下の「フォント」ダイアログでの設定が該当しています。

PowerPointのフォントダイアログ

FontオブジェクトはTextRangeオブジェクトのFontプロパティで取得できます。

TextRangeオブジェクト.Font

すべてのシェイプのフォント名を取得するプロシージャ

前述のコードの5行目に「TextRange」というプロパティがありますね。

このプロパティでTextRangeオブジェクトが取得できているので、これに対してFontプロパティを使えばOKということになります。

Fontオブジェクトが取得できているか確認するために、以下のようなプロシージャを作ってみました。

Sub Shapesコレクションのループでフォント名を取得()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    Debug.Print shp.Name, shp.TextFrame.TextRange.Font.Name
Next shp

End Sub

実行すると…

PowerPoint VBAでフォント名をデバッグ出力をする

はい、游ゴシック祭りですね。

Fontオブジェクトはちゃんと取得できているようです。

Nameプロパティの役割を含めて、実際のフォント設定については次回以降の記事でお伝えしていきますね。

なお、Debug.Print文で使っているカンマは、二つの値をタブ区切りで表示するときに使用するものです。

【エクセルVBA】初心者のうちから知っておくべきDebug.Printの使い方
今回はエクセルVBAでイミディエイトウィンドウを使う方法の超基本として、初心者のうちからぜひとも知っておいて欲しいDebug.Printの使い方です。一行に複数の出力をする方法も解説していますよ。

まとめ

以上、PowerPoint VBAでフォント設定をするためのオブジェクト、Fontオブジェクトを取得する方法について解説をしました。

このFontオブジェクトを使えば、テキストについて様々なフォント設定を行うことができます。

次回、解説していきますね。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
  4. PowerPoint VBAでアクティブなプレゼンテーションを取得する方法
  5. 【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する
  6. PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法
  7. 【初心者向けPowerPoint VBA】Shapeオブジェクトのテキストを取得する方法
  8. PowerPoint VBAでフォント設定をするFontオブジェクトを取得する

PowerPoint VBAでシェイプのフォント設定をする色々なプロパティまとめ

$
0
0
font

photo credit: Daniel Ari Friedman каприз via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

PowerPoint VBA入門編ということで、図形やテキストボックスのフォントを変更するマクロの作り方をお伝えしています。

前回の記事はこちらです。

PowerPoint VBAでフォント設定をするFontオブジェクトを取得する
初心者向けPowerPoint VBAのシリーズとして、全てのシェイプについてフォントを変更するマクロの作成を目指しています。今回はフォントを設定するFontオブジェクトを取得する方法をお伝えします。

Shapeオブジェクトのフォント設定をするFontオブジェクトの取得についてお伝えしました。

Fontオブジェクトさえ取得できてしまえば…あとは、設定していくだけじゃないですか!?

ということで、PowerPoint VBAでテキストのフォントを変更するいろいろなプロパティまとめをお伝えします。

では、行ってみましょう!

前回のおさらい

題材としているプレゼンテーションはこちら。

プレゼンテーションの例

それで、前回作成したコードがコチラですね。

Sub Shapesコレクションのループでフォント名を取得()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    Debug.Print shp.Name, shp.TextFrame.TextRange.Font.Name
Next shp

End Sub

1ページ目のスライドの各Shapeオブジェクトについて、Fontオブジェクトを取得してそのフォント名を表示するというものですね。

あとは設定していくだけ…!

5行目で紹介しているNameプロパティ含めて、フォントを設定するいろいろなプロパティを紹介していきます。

PowerPoint VBAで設定できるFontオブジェクトの主なプロパティまとめ

フォント名

まず、真っ先にShapeオブジェクトのフォントの種類を変更したいのですが、PowerPointでは

  • 英数字用のフォント
  • 日本語用のフォント

の二種類のフォント種類を設定できます。というか、両方の設定を念頭に置いておかないといけません。

以下の「フォント」ダイアログを見てみればわかりますよね。

PowerPointのフォントダイアログ

英数字用のフォントを変更するにはNameプロパティ日本語用のフォントを変更するにはNameFarEastプロパティを使います。

Fontオブジェクト.Name
Fontオブジェクト.NameFarEast

フォントのスタイル

強調、イタリック、アンダーライン、影付き、エンボスなど、フォントのスタイルを変更するには、以下のプロパティで設定します。

プロパティ 説明
Bold 強調
Italic イタリック
Underline 下線
Shadow 影付き
Emboss 浮き出し

これらのプロパティに設定する項目は、Enum msoTriStateで列挙されている値を設定します。

定数
msoTrue -1
msoFalse 0

msoTrueまたは-1を設定すれば各スタイルが「有効」になりますし、msoFalseまたは0を設定すれば「無効」になります。

フォントのサイズ

フォントのサイズを設定するにはSizeプロパティを使います。

Fontオブジェクト.Size

Sizeプロパティに設定する値として、ポイントを表す整数を代入すればOKです。

フォント色

フォントの色を設定するにはColorプロパティを設定します。

Fontオブジェクト.Color

色の設定としては、RGB関数を使うのが一般的でしょう。

RGB関数の書式は以下の通りです。

RGB(red, green, blue)

red,green,blueの値を0から255の間の整数で指定することで、色を表現します。

シェイプのフォントを設定するプロシージャ

以上を踏まえて、1ページのスライドについて、フォントを設定するプロシージャを作成しました。

Sub Shapesコレクションのループでフォントを設定()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    With shp.TextFrame.TextRange.Font
        .Name = "Meiryo UI"
        .NameFarEast = "Meiryo UI"
        .Color = RGB(89, 89, 89)
    End With
Next shp

実行すると1ページ目のスライドの各シェイプのテキストのフォントを、以下のように設定することができます。

  • 英数字用のフォント: Meiryo UI
  • 日本語用のフォント: Meiryo UI
  • フォント色: 黒に近いグレー

実行結果はこちらです。

PowerPoint VBAでフォント設定をした

うまくフォントの設定を変更できていますね。

Withステートメントでオブジェクトを省略する

ちょっと補足しておきますね。

5~9行目ですが、Withステートメントという構文を使っています。

書式は以下の通りです。

With オブジェクト
 ’処理
End With

WithとEnd Withに挟まれた部分(Withブロックといいます)では、指定したオブジェクトの表記を省略できるというものです。

そのオブジェクトに対するメソッドやプロパティは、Withブロック内ではピリオドから書き始めることができます。

今回の例では「shp.TextFrame.TextRange.Font」を省略しています。

まぁ、なげーっすもんね。省略したほうが良いです。

まとめ

以上、PowerPoint VBAでシェイプのフォント設定をする色々なプロパティまとめについてお伝えしました。

今回のプロシージャでは、1枚目のスライドしか対象にならないので、全部のスライドに対応させたいですよね。

次回は、その点について解説を進めていきます。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
  4. PowerPoint VBAでアクティブなプレゼンテーションを取得する方法
  5. 【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する
  6. PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法
  7. 【初心者向けPowerPoint VBA】Shapeオブジェクトのテキストを取得する方法
  8. PowerPoint VBAでフォント設定をするFontオブジェクトを取得する
  9. PowerPoint VBAでシェイプのフォント設定をする色々なプロパティまとめ

PowerPoint VBAのFor Each文とFor文によるループとその使い分けについて

$
0
0
loop

photo credit: Prayitno / Thank you for (12 millions +) view Electric Eel ~ Summer 2018 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

PowerPoint VBA初心者向けに、プレゼンテーションの全ての描画オブジェクトのフォントを変更するマクロの作り方をお伝えしています。

前回の記事はコチラ。

PowerPoint VBAでシェイプのフォント設定をする色々なプロパティまとめ
PowerPoint VBA入門編ということで、図形やテキストボックスのフォントを変更するマクロの作り方をお伝えしています。今回は、テキストのフォントを変更するいろいろなプロパティまとめをお伝えします。

1枚目のスライドのシェイプに関しては、フォントの変更をすることができるようになりました。

あとは、全てのスライドについて同様に処理できるようにしていけば良いですね。

それを題材に今回はループの構文について理解を深めていきましょう。

PowerPoint VBAのFor Each文とFor文のループの作り方、またその使い分けについてです。

では、行ってみましょう!

前回のおさらい

では、まず前回のおさらいからです。

題材とするプレゼンテーションはコチラです。

プレゼンテーションの例

それで、前回作成したプロシージャがコチラですね。

Sub Shapesコレクションのループでフォントを設定()

Dim shp As Shape
For Each shp In ActivePresentation.Slides(1).Shapes
    With shp.TextFrame.TextRange.Font
        .Name = "Meiryo UI"
        .NameFarEast = "Meiryo UI"
        .Color = RGB(89, 89, 89)
    End With
Next shp

実行すると以下のように1枚目のスライドについて、フォントの種類と色を変更することができました。

PowerPoint VBAでフォント設定をした

ただ、このプロシージャ。4行目に「Slides(1)」とあるように、1枚目のスライド専用なんですね。

シェイプのフォントの変更について、全てのスライドに行えるようにするのが今回の目標です。

For Each文によるループ

オーソドックスにFor Each文をネストするというする方法が考えられます。

が、ネストの話の前に、いったんFor Each文自体について復習しておきましょう。

For Each文とは

まず、For Each文は以下書式で作られる反復、つまりループ用の構文です。

For Each 変数 In コレクション
 ’処理
Next 変数

あるコレクションから一つずつオブジェクトを取り出し、全てのオブジェクトについて何らかの処理をするというような繰り返し処理を行うことができます。

詳細は以下の記事もご覧ください。

PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法
初心者向けPowerPoint VBAの入門シリーズをお伝えしています。今回は、PowerPoint VBAでFor Eachループを使って、コレクション内のShapeオブジェクトを取得する方法です。

現在のコードには、以下のようなShapesコレクションについてのFor Eachループがありますので、確認しておきましょう。

For Each Shapeオブジェクト In Shapesコレクション
 ’フォントの変更
Next Shapeオブジェクト

For Each文によるネスト

それで、ネストというのは、「入れ子」のことです。

上記のShapesコレクションについてのループを、さらにSlidesコレクションについてのFor Eachループでくるむんですね。

For Each Slideオブジェクト In Slidesコレクション
 For Each Shapeオブジェクト In Shapesコレクション
  ’フォントの変更
 Next Shapeオブジェクト
Next Slideオブジェクト

とすれば良いわけです。

そうすれば、これで「全てのスライド×全てのシェイプ」のフォント変更が可能になります。

なお、ネストした場合は、その分インデントを加えておきましょう。インデントをちゃんとするかどうかは、コードの読みやすさに大きな影響を与えますので、大事にしてください。

全てのシェイプのフォント設定を変更するプロシージャ

コードとしては以下のようになります。

Sub 全てのシェイプのフォントを設定()

Dim sld As Slide, shp As Shape
For Each sld In ActivePresentation.Slides
    For Each shp In sld.Shapes
        With shp.TextFrame.TextRange.Font
            .Name = "Meiryo UI"
            .NameFarEast = "Meiryo UI"
            .Color = RGB(89, 89, 89)
        End With
    Next shp
Next sld

End Sub

実行すると、以下のように2ページ目のスライドも含めて、シェイプのフォントを変更することができます。

PowerPoint VBAで全てのシェイプのフォント設定を変更

For文を使う方法

For文によるループ

今回は、別のループ用の構文をお伝えします。

以下のFor文という構文です。

For カウント変数 = 初期値 To 最終値
 ’処理
Next カウント変数

For文は整数型のカウント変数が初期値から最終値になるまで繰り返しをするというループの構文です。

カウント変数は整数型の変数で、一般的には「i」を使います。

そのカウント変数について初期値がスタートの値となり、繰り返しのたびに自動で1ずつ増やされます。

そして、カウント変数の値が最終値に達したらループを終了する、というものです。

繰り返しの構文でいうと、For Each文よりFor文のほうがメジャーですかね…

コレクションについてのFor Each文をFor文に書き換える

それで、For Each文によるコレクションについてのループは、For文によるループに書き換えることができるんです。

ポイントは、カウント変数をインデックスとして使うという点です。

どんなコレクションであっても、インデックスを使用することができ、その最小値は1です。

では、その最大値はいくつかというと、そのコレクションの数ですから、例えばSlidesコレクションであれば

Slidesコレクション.Count

とすることで、取得することができるのです。

つまり、SlidesコレクションについてのループをFor文で作ろうとするならば

For カウント変数 = 1 To Slidesコレクション.Count
 ’処理
Next カウント変数

とすれば良いわけです。

For文を使った場合のフォント変更プロシージャ

For文を使った場合のプロシージャはコチラです。

Sub 全てのシェイプのフォントを設定()

Dim i As Long, shp As Shape
With ActivePresentation
    For i = 1 To .Slides.Count
        For Each shp In .Slides(i).Shapes
            With shp.TextFrame.TextRange.Font
                .Name = "Meiryo UI"
                .NameFarEast = "Meiryo UI"
                .Color = RGB(89, 89, 89)
            End With
        Next shp
    Next i
End With
End Sub

With文も増やしたのでだいぶネストが深くなっちゃいましたね。

読みやすさでいうとFor Each文のネストのほうが良さそうです。

For文を使うべきときとその理由

ただ、場合によってはFor文を使うべきときがあります。

それは、「インデックス通りの順番で処理したいとき」です。

For Each文でのループは、その実行順序は保証されていないんですね。経験則で概ねインデックス通りに実行されるのですが、保証はされていません。

一方でFor文を使う場合は、カウント変数は初期値から最終値まで1ずつ増えるということが保証されている、すなわちインデックス順に処理がされることが保証されているのです。

ですから、確実にインデックス通りにループ処理をしたい場合はFor文を使う必要があります。

まとめ

以上、PowerPoint VBAのFor Each文とFor文について、またその使い分けについてお伝えしました。

For Each文もFor文も、いずれも非常に重要な構文ですので、ぜひ使いこなしてくださいね。

本シリーズはいったんこちらで終了です。

別シリーズでまた便利なマクロの作り方を紹介していきます。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAのはじめの一歩

PowerPointはお仕事で非常によく使うプレゼンテーション作成ソフトですよね。実は、PowerPointでもVBAでプログラミングができるんです。本シリーズでは、初心者向けにPowerPoint VBAの初め方についてお伝えしていきます。
  1. 初心者向けPowerPoint VBAを始める際にはじめにやっておくべきセッティングと手順
  2. 【初心者向け】はじめてのPowerPoint VBAを作成して実行してみよう
  3. 【初心者向けPowerPoint VBA】オブジェクト・プロパティ・メソッドって何?
  4. PowerPoint VBAでアクティブなプレゼンテーションを取得する方法
  5. 【初心者向けPowerPoint VBA】SlidesコレクションとSlideオブジェクトを取得する
  6. PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法
  7. 【初心者向けPowerPoint VBA】Shapeオブジェクトのテキストを取得する方法
  8. PowerPoint VBAでフォント設定をするFontオブジェクトを取得する
  9. PowerPoint VBAでシェイプのフォント設定をする色々なプロパティまとめ
  10. PowerPoint VBAのFor Each文とFor文によるループとその使い分けについて

ひとり社長が1ヶ月間でChatWork アシスタントにお願いしたお仕事一覧とポイント

$
0
0
assistant

photo credit: SupportPDX First Baptist Church 880 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

弊社はひとりの会社ですが、7月末からオンラインアシスタントサービス「ChatWork アシスタント」を利用してみています。

チャットワークを日頃から愛用していますし、マンパワーが超絶限られているひとり社長企業としては、とても気になるサービスだったのです。

それで、8月の1ヶ月間、色々とお願いをしてみました。

今回は、弊社がChatWork アシスタントに依頼した仕事一覧とやってみてわかった依頼のポイントについてお伝えしたいと思います。

では、行ってみましょう!

ChatWork アシスタントとは

ChatWork アシスタントは、チャットワークを使って様々な業務をアシスタントさんたちに依頼できるサービスです。

ChatWork アシスタント | チャットワークからオンライン・リモートで依頼できるアシスタント・秘書サービス
面倒な業務をすべて任せられる高品質なアシスタント・秘書サービスです。リモートワークやテレワークで働くアシスタントに、部署やあなた自身の業務を外注・アウトソーシングすることができます。秘書・一般事務・人事・総務・会計・経理・サイト運用・SNS運用・カスタマーサポートなど幅広い業務を代行可能です。人材採用・外注先探し・クラ...

サービスの利用を開始すると、弊社の担当としてフロントのアシスタントさんがついてくださいます。

それで私から、「こんな依頼をお願いします」とチャットで投げると、たくさんのリモートで待機しているアシスタントさんのネットワークから能力、稼働時間などマッチしている方を探し出してアサイン、業務を遂行してくれます。

このような流れで、月間30時間を、月間7万円~10万円で依頼できるというサービスです。

弊社はお試しということで、一番短い3ヶ月の契約ですから月10万円で依頼をさせていただいています。

ChatWork アシスタントを依頼した理由

弊社は私ひとりしかいません。

開発・執筆をお願いするパートナーさんたちは何名かいらっしゃいますが、会社経営に関してや、明確な切り分けができないものに関しては、私がやらざるを得ない…

それでも、会社ですから、経営や事業を回す上で、どうしても雑多な業務が発生します。

VBAやGASで自動化できるものだったら良いのですが、実際はそう仕切れないものもあります。

主に以下のようなものです。

  • 実装したことによる成果が、それにかかるコストと見合わない業務
  • 明確に手順を定義仕切れない業務

他にも、やりたいことはいっぱいあるんです。

規模感的に、社員さんを雇うほどでもないですしね…

と、ちょうど、そんな悩みが膨れてきたタイミング、以下のようなイベントがあった(というか仕掛けた)もので…、

チャットワークのユーザー会「ChatWork Café 東京 Vol.3 ~新サービス使いこなし術~」開催レポート
開催されましたチャットワークユーザー会「ChatWork Café 東京 Vol.3 ~ChatWorkの新サービス使いこなし術~」。電話代行やアシスタントなどにフォーカスしたイベントの様子をレポートします。

ついうっかり「えいっ!」と使い始めてみました。

これで、より一層、私がやるべきいわゆる「コア業務」に集中できるはず…!

どんな業務をどれほど依頼したか

ChatWork アシスタントに依頼した業務を以下にリストアップします。

  • paymo biz月初作業 15分
  • MFクラウド経費関連 約2時間
  • 広告営業媒体資料の作成 約5時間
  • 有料職業紹介事業の許認可申請のダンドリまとめ 約2時間
  • 出張の交通・宿泊手配方法のまとめ 約2時間
  • コミュニティイベントの会場手配 約1時間
  • コミュニティイベントのページ作成 約5時間
    • Facebookグループ内イベント
    • connpassページ
    • WordPressのページ更新
  • コミュニティイベント関連マニュアル作成 約3時間
  • LinkedInラーニング海外講座のチャプターリスト作成 約3時間

他にもいくつか依頼していて、計26時間でした。

4時間も余ってしまいました(繰越や払い戻しはできません)。

ただ…8月の前半折返しではこんな感じでしたし…

残り3日でこういう状態だったので…

頑張ったほうだと思います。

ChatWork アシスタントの使い方のポイント

1ヶ月やってみてわかったChatWork アシスタントの使い方のポイントについてお伝えしますね。

とにかく振るのが大変

最初は、「ちょっとした仕事でも1,2時間くらい使っちゃうんじゃないの…??」とちょっと勘ぐっていたところもあったのですが、全然そんなことはないです。

5分単位でピッチピチに刻んできます。

もちろん業務内容によりますが、おそらく私が同じ業務をやるのと、そんなに変わらない…もしくは、おそらくそれよりも速いときもあります。

そう考えると大変オトク感があるのですが、なにせ30時間…。

まあ時間が減らない減らない。

つまり、仕事を作って振るのが大変です。

当然コア業務に割く時間は増えるはずですが、最初は依頼とそのやり取りも増えるので、たいへんです。

これは、ひとり社長の場合は覚悟したほうが良いです。

マニュアルも合わせて依頼する

ChatWork アシスタントの良いところは、若干のあやふやなところがあっても、判断してくれたり、「こうしますか?」と質問してきてくれること。

プログラムではそうは行きません。

それで、時間があまりに余っている私は、各業務であやふやな問題について判断したついでに「マニュアル作成」もお願いするようにしました。

業務のスピードや精度も上がるし、やり取りの回数は減らせる…これはいいですね。

実はこれ、前述のChatWork Caféでシクロマーケティングさんから教えていただいた秘策でした。

ユーザー会、やっててよかった!

依頼しづらい仕事・依頼しやすい仕事

実際、デザイン系のお仕事は依頼しづらいかな…と感じました。

PowerPoint資料の作成をお願いしたのですが、色調とか、グラフで目立たせたいところ、配置のバランスとか、なかなか思った通りに仕上がらなくて、他の業務よりは多くやり取りが発生した印象です。

最終的には自分のほうで修正した部分もあります。

というよりは、たぶん私自身がデザイン要素がある依頼の仕方が下手くそ…というのはあるんだと思います。

逆にすごく良かったなと思うのは、調査やリストアップ系ですね。

依頼も簡単ですし、ほとんど手戻りがなかったと思います。自分でやると大変なんで…すごい助かりました。

まとめ

以上、ひとり社長が1ヶ月感でChatWork アシスタントにお願いしたお仕事一覧と、依頼のポイントについてお伝えしました。

初月は依頼と、依頼した仕事の戻りをさばくのになかなか苦労しましたが、マニュアル化作戦&私の振り方のレベルアップで、これからどんどん良くなるはずです。

あと、実は今回書いた以上の劇的なメリットがあったと感じていますので、それについては別記事にてお伝えしたいと思いますよ。

どうぞお楽しみに!

エクセルVBAでCSVを高速に取り込むQueryTableオブジェクト使用時の注意点

$
0
0

QueryTabelオブジェクトの注意点アイキャッチ
みなさん、こんにちは!
フジタニ(@libartweb)です。

エクセルVBAでCSVを高速に取り込むQueryTableオブジェクトについて、各メソッド、プロパティの使い方をシリーズでお伝えしてきました。

前回の記事はこちら

エクセルVBAで高速にCSVを取り込むQueryTableオブジェクトの最終処理
エクセルVBAでCSVを高速に取り込むことができるQueryTableオブジェクト。最終処理として非常に重要なQueryTable.Deleteメソッドについて解説します。忘れると不具合を招く非常に重要なメソッドです!

QueryTableオブジェクトの速さ、便利さを知って頂けたと思います。

今回はそんなQueryTableオブジェクトを使用する際に気をつけて頂きたいことを紹介します!

思わぬバグを防ぐことはもちろん、コーディングの時間短縮にもつながります。引き出しを増やすためにも、是非参考にしてみてください。

中身が空のCSVへの対応

QueryTableオブジェクトを使用したCSV取り込みにおける、最大のつまずきポイントかも知れません。

QueryTableオブジェクトでは、空のCSVを取り込むことができないのです。

中身が空のCSVを取り込もうとした場合のエラー

試しに空のCSVで実行してみましょう。

空のCSV取り込みエラー

「メモリが不足しています」

わかりづらいエラー!どう見ても、メモリ関連に問題があるようなエラーですから、知らない人はこれを見て、原因が「CSVが空であること」をすぐに見抜くことは難しいかもしれないですね…

では、空のCSVを取り込むことも想定してコーディングしちゃいましょう。

CSVが空かどうかを取り込み前に確認する方法

CSVの行数カウントには様々な方法がありますが、今回はCSVが空かどうか?を調べるだけですので最も簡単なプログラムを紹介します。サンプルコードは以下の通りです。

Private Sub csvImport()
 
    Dim strPath As String
    Dim qtCsv   As QueryTable
    
    strPath = "C:\Users\hirom\Desktop\test.csv"

    If Dir(strPath) = "" Then
        MsgBox (strPath & "は存在しません")
        Exit Sub
    End If
    
    If isCsvEmpty(strPath) = True Then
        MsgBox (strPath & "は中身が空です。")
        Exit Sub
    End If
    
    Set qtCsv = Sheet1.QueryTables.Add(Connection:="TEXT;" & strPath, _
        Destination:=Sheet1.Range("A1")) '取り込むCSVファイルパスと、取り込み先のシート、セルを指定
    
    With qtCsv
        .TextFileCommaDelimiter = True 'カンマ区切りの指定
        .Refresh 'QueryTableオブジェクトを更新し、シート上に出力
        .Delete 'QueryTableオブジェクトを削除
    End With
End Sub

Private Function isCsvEmpty(ByVal strPath As String)
    Dim myFileNo As Integer
    
    isCsvEmpty = True
    myFileNo = FreeFile
    Open strPath For Input As #myFileNo
        If EOF(myFileNo) = False Then
            isCsvEmpty = False
        End If
    Close #myFileNo
    
End Function

これまでに紹介してきたQueryTableのソースコード内に、CSVが空かどうか?をチェックする「isCsvEmpty」というFunctionを追加しました。

CSVが空かどうかを判定して、空なら処理を中断する処理です。

それでは「isCsvEmpty」で使用しているステートメント、関数を紹介していきます。

ステートメント 詳細
Open CSVやテキストファイルをパソコン内部で開く
Close Openステートメントで開いたファイルを閉じる
関数 詳細 引数 返り値
FreeFile ファイル番号を返す 範囲番号 Integer
EOF ファイルの読み込み位置が末尾かどうかを返す ファイル番号 Boolean

ステートメント、関数の使い方

Open CSVのフルパス For 入力モード As #ファイル番号

通常テキストやCSVなどを取り込むときはWorkbook上に取り込みますが、Openステートメントを使用することでWorkbookを新しく作成せず、パソコン内部で開くことができます。

引数 詳細
CSVのフルパス 空であるか確認したいCSVのフルパス
入力モード CSVの場合はシーケンシャル入力モードを表す「Input」を指定。(先頭から順番に読み込むモード)
#ファイル番号 CSVに割り当てる番号

サンプルでは、CSVのフルパスを表す変数strPathを引数として渡しています。

以下の部分ですね!

If isCsvEmpty(strPath) = True Then

渡した引数は「isCsvEmpty」内のOpenステートメントで使います。

Open strPath For Input As #myFileNo

入力モードには、シーケンシャル入力モードであるInputを指定し、先頭から読み込むように命令しています。

#ファイル番号は1~511の番号をCSVに対して割り当てることができますが、すでに使用している番号を指定するとエラーになるので、自動的に以下の関数でファイル番号を取得しています。

FreeFile(範囲番号)

まだ使用されていないファイル番号を返します。自動でファイル番号を選択してくれるので、重複によるエラーが回避できます。

範囲番号に0を指定すると1~255の値、1を指定すると256~511の値を返します。

省略すると0を指定したことになります。

サンプルでは、myFileNoという変数にFreeFile関数で取得した値を格納しています。

myFileNo = FreeFile

EOF(ファイル番号)

openステートメントで開いたCSVの読み込み位置が、末尾に達した場合にTrueを返します。

つまり、CSVが空の場合はTrue、1行でもデータが格納されている場合はFalseを返します。

Close #ファイル番号

Closeステートメントで引数「ファイル番号」に指定した番号のファイルを閉じます。この時点で割り当てられた番号は解放されます。

取り込むCSVの選択方法

CSVの選択方法には、

  • 自動で選択する方法
  • ファイル選択ダイアログで手動で選択する方法

以上の2通りがあります。状況に合わせて最適な方法を選択してください。

自動でファイルを選択する

  • 毎回ファイル名が同じ場合
  • 変動するファイル名に規則性がある場合(日付など計算で求められる)

以上の通り、CSVのファイル名に規則性がある場合は手動選択にせず、自動化してしまいましょう。ファイルの選択誤りは高い確率で起こりうる人為的なミスです。

ミスを減らす工夫は以下の記事で詳しく紹介しています。

エクセルVBAによる運用業務で人為的ミスを減らす4つの方法
エクセルVBAを運用業務で活用されている方必見!人為的ミスを大幅に減らす4つの方法を紹介します。エクセルVBAはメイン処理に偏らず人為的ミスを想定したコーディングが業務効率化に繋がります。

ファイルの存在チェックを導入する

自動で選択する以上は、ファイルの存在チェックが必要不可欠です。

ファイル自動選択を導入する場合は、以下の関数で必ずファイルの存在チェックを行ってください。

Dir(ファイルのフルパス)

使い方は以下の記事をご覧ください。

エクセルVBAでDir関数を使って指定のファイルが存在するかどうかを判定する方法
エクセルVBAでファイルを開く作業を自動化する方法についてのシリーズ。今回は開くファイルの指定をエクセルシートに変更し、またファイルが存在するかどうかをDir関数で判定する方法についてお伝えします。

ファイル選択ダイアログで選択する

自動ではなくファイル選択ダイアログを使うことでも実現できます。

CSVの名前に規則性がなく、自動化が難しい場合に使用してください。

ファイル選択ダイアログは以下の記事が参考になります。

エクセルVBAでFileDialogオブジェクトを使ってファイル選択ダイアログを開く
エクセルVBAでファイルを開く作業を自動化する方法についてシリーズでお伝えしています。今回は、エクセルVBAでFileDialogオブジェクトを使ってファイル選択ダイアログを表示させる方法です。

まとめ

以上、QueryTableオブジェクトを使用する際に注意すべき事として以下の2点を紹介しました。

  • 中身が空のCSVへの対応
  • CSVの選択方法

特にCSVが空の時の「メモリ不足です」というエラーはわかりづらいですよね。

コーディングの時間短縮はもちろんですが、思わぬバグや運用ミスを減らす意味で、今回紹介した内容は参考になるはずです。

QueryTableオブジェクトを最大限に実務でお役立てください!

以上、QueryTableオブジェクトの連載でした。

連載目次:エクセルVBAのQueryTableで高速にCSVを取り込む

一般的なループを使用したCSV取り込みよりも、更に高速にCSVを取り込むことのできるQueryTableオブジェクトに関する連載です。サイズの大きなCSVを取り込む際に非常に便利です。
  1. エクセルVBAでQueryTableオブジェクトを使って高速にCSVを取り込む方法
  2. エクセルVBAのQueryTables.Addメソッドでクエリテーブルを作成する方法
  3. エクセルVBAのQueryTable.RefreshメソッドでCSVをシートに出力する方法
  4. エクセルVBAのQueryTableオブジェクトのプロパティの基本とCSVをカンマ区切りする方法
  5. エクセルVBAのQueryTableオブジェクトであらゆる種類のCSVを取り込む方法
  6. エクセルVBAで高速にCSVを取り込むQueryTableオブジェクトの最終処理

ChatWork アシスタントがマネジメントスキルを磨くのに非常に効果的だという話

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

さて、前回の以下記事でお伝えしている通り、7月末からChatWork アシスタントを活用させていただいています。

ひとり社長が1ヶ月間でChatWork アシスタントにお願いしたお仕事一覧とポイント
オンラインアシスタントサービス「ChatWork アシスタント」を利用してみています。今回、最初の一ヶ月でChatWork アシスタントに依頼した仕事一覧とやってみてわかった依頼のポイントについてお伝えします。

どんな仕事を依頼しているのか、またどのように依頼をしたら良いのかということについは、お伝えしていたのですが、そう「結局使ってみてドウだったの?」という大事なことについて触れていませんでしたね。

当然、コア業務に集中できるようになるというメリットはあるのですが、それ以上にこう思いました

「なんてマネジメントの訓練になるんだ…!」

ということで、今回はChatWork アシスタントがマネジメントの訓練に非常に効果的だという話についてお伝えしていきます。

では、行ってみましょう!

ChatWork アシスタントの「キャラクター」は明確

前回お伝えした通り、ChatWork アシスタントは弊社のフロント担当の向こう側に、たくさんのアシスタントさんのネットワークがあるという構造になっています。

実は、最初はこんな依頼の仕方も期待していたんですね。

  • 弊社の事業についてある程度深く理解した上で、「この部分はアシスタントでお受けしますよ」みたいないい感じの提案
  • ちょっと雑談などをしながら、「実は他社さんでは、こんな有効な活用事例があるんですよ」みたいな情報共有

ほら、ひとり社長でやっているものですから、「わかってくれている人」とか「相談相手」とか欲しいじゃないですか。

でも、いざ蓋を開けてみるとそんな雰囲気、全然ないんです。

「依頼を正確に、すばやくこなす」

これだけに、めちゃめちゃ集中しているように見えます。

期待に反して、限りなくマシーンのような感じ…でした。余計な情が入る余地がありません。

マネジメントを鍛える機会…ありますか?

会社組織のマネージャーだったとき

さて、ちょっと話は変わります。

私は過去、サラリーマン時代に管理職をしていた時期もある程度あったのですが、

  • いい感じに頼むよ
  • よしなに

みたいな指示の仕方、けっこうしちゃってたんですね。

中間管理職だったんで、逆にけっこうされていました。

この場合、そういう下手くそな指示をうまく吸収できる部下がかなり重宝します。

ですが、一方でその場合、上司にとっては損しちゃうんですよね。

なぜなら、マネジメントが下手くそなのに、成果が出ちゃうので、評価されちゃったりする。

そして、調子に乗って、「自分はできる」と勘違いしちゃってたりする。

それで、私が痛い目見た…というのは、昔の話です。

つまり、本来やるべきマネジメント能力を訓練する機会に恵まれずに、かつ、正しく評価されることもないという状態があり得るということかな、と。

皆さんの職場ではどうですか?

独立してひとり社長になったら

一方で、独立して一人になると、人に何かをお願いする機会というのは減ります。

全て自分が一人でやる前提になり、しばらくすると、人にお願いするのが下手くそになる、もしくは下手くそのままというリスクがあります。

人にお願いするのが下手くそだと、自分ができる守備範囲の事業しかできないままですし、規模の拡大や事業の変化などに対応が難しくなったりします。

ChatWork アシスタントでマネジメントスキルを磨く

ここで、またChatWork アシスタントの話に戻ります。

ChatWork アシスタントは、前述の通り、めちゃめちゃキャラクターがはっきりしています。

かなりマシーンに近い。情もいらないし、キャリアを気にしてあげる必要もないです。

たぶん、マネジメントはしやすい。

しやすいというよりは、方針が明確になりやすいという表現のほうが正しいですかね。

自分のやっていることの細分化と明文化

なにせ、キャラクターがはっきりしていますから、まず依頼すべき業務とそうでない業務の区分けがしやすいというのがあります。

ですが、それを毎月30時間捻出しなければいけません。営業日あたり約1.5時間です。

そして、それは以下の手順を踏みます。

  1. プロジェクトをタスクに分解
  2. タスクを作業に分解
  3. 依頼すると効果的なものをすばやく選出
  4. 依頼できるように整える

つまり、自分のやっていることの細分化と明文化をかなり一生懸命やらなくてはいけなくなるのです。

これは、いい訓練になる…!

ミスはすべて自分に跳ね返る

ダメな依頼をすると、全て自分に跳ね返ってきます。

あやふやだと、アシスタントさんとのやり取りが増えます。

できる限りコア業務に集中したいからChatWork アシスタントを依頼しているのに、依頼が下手くそだと、何度も集中を削がれる。ブーメラン。

当然、依頼の仕方が下手くそだったり、確認事項が増えたりすると、契約時間の消費も多くなります。

「ああ、このひとことを行っておけば、2時間損しなくてよかったな…」ということは結構あります。

全部、自分に返ってきます。

会社組織でのマネジメントだと、前述の通り、うまくいっちゃうときもありますが…ちゃんと痛い目を見られるのは、良いことです。

成長しますから。

大変ですけどね。

まとめ

以上、ChatWork アシスタントを活用することで、マネジメントスキルが身につくよ、ということをお伝えしました。

以下ツイートしているとおりですね。

前回記事でお伝えしている通り、導入当初は大変ですが…

  • コア業務に集中できる
  • マニュアルを増やしていける
  • マネジメントスキルを磨ける

と考えると、決して高い買い物ではないかなと思います。

あと、私の場合はブログネタにもなりますしね。

ひとり社長はもちろん、一般企業でも活用したらいいですよ!おすすめです!

【Outlook VBA】エクセルワークシートの内容で予定登録する方法

$
0
0

outlook_vba_worksheet_schedule_eyecatch

みなさまこんにちは、ノグチです。

前回の記事では、OutlookでもVBAは使えるということと、VBAでOutlookの予定を登録する方法をご紹介しました。

【はじめてのOutlook VBA】Outlookの予定を登録する方法
Outlook VBAでコーディングするためのVBEの準備と、VBAで予定を登録する方法をご紹介しています。1件の予定登録の手間は大したことがなくても、複数登録する必要が出てくると面倒臭い...本稿では複数の予定をOutlookにまとめて登録するための第一歩として、単体の予定をVBAで登録する方法をご紹介します。

今回は、まとめて予定を登録してしまおう!ということで、エクセルワークシートに記入した予定の内容を、Outlookの予定に登録する方法をご紹介していきます。

MicroSoft Excel xx.x Object Libraryの参照設

さて、エクセルワークシートに記入された内容で予定登録をするということは、エクセルのブックやシートを参照したり、操作できるようにせねばなりませんね。

そこでまずは、OutlookからExcelの参照設定をしましょう。

(この参照設定は必須ではありませんが、参照設定をした方がコードが短くなるのと、クイックヒントが表示されてコーディングが楽、スペルミスをしにくいということもあるので、特に制限が無いのであれば、参照設定をしておくことをお勧めします。)

OutlookのVBEから、参照設定の画面を開きます。

outlook,参照設定

参照設定の画面を開くまでのメニューパスは、エクセルで参照設定をするときと全く同じなので、下記記事を参考にしてくださいね。

【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
エクセルVBAでOutlookのメール送信やタスク作成操作をする前準備として、VBEの参照設定や、Outlookアプリケーションオブジェクトの取得方法をご紹介しています。 VBAとOutlookを組み合わせて使うことで、既に便利に使えているメーラーを更に便利にできるかもしれませんよ。

筆者の環境では、Microsoft Excel 16.0 Object Libraryとなっていますが、使っているofficeのバージョンによって数字の部分が異なります。

MicroSoft Excel xx.x Object Libraryにチェックを入れて「OK」をクリックすれば、参照設定は完了です。

ワークブックオブジェクトとワークシートオブジェクトを取得

さて、参照設定ができたところでエクセルブックやシートを操作するため、必要なオブジェクトを取得していきましょう。

まずは、Excelアプリケーションオブジェクトの取得です。

Excelアプリケーションオブジェクト型の変数を宣言して…
Dim オブジェクト名 As Excel.Application
宣言した変数で、 Excelアプリケーションオブジェクトを取得します。
Set オブジェクト名 = New Excel.Application

後はエクセルブックやワークシートオブジェクトですが、こちらはエクセルでVBAを使うときと同様の記述方法でOK。

こんな感じですね。

Dim wb As Workbook
Dim ws As Worksheet

エクセルシートに記入した内容をOutlookの予定に登録するコード

では、準備もできたところでエクセルシートに記入した内容をOutlookの予定として登録していきましょう。

デスクトップに「予定.xlsx」というファイルを作って、Sheet1にこんな感じで予定の内容を記入していきます。outlook,予定登録,ワークシート

このワークシートの内容を纏めてOutlookの予定に登録するコードがこちら。

Sub CreateAppointmentFromExcel()

Dim objApItem As Outlook.AppointmentItem
Dim objExcel As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet

Dim strFile As String
strFile = "C:\Users\Desktop\予定.xlsx"

Set objExcel = New Excel.Application
Set wb = objExcel.Workbooks.Open(strFile)
Set ws = wb.Worksheets("Sheet1")

Dim i As Long

i = 2

Do Until ws.Cells(i, 1).Value = ""

Set objApItem = Application.CreateItem(olAppointmentItem)
    With objApItem
        .Subject = ws.Cells(i, 1).Value     '件名
        .Location = ws.Cells(i, 2).Value    '場所
        .Start = ws.Cells(i, 3).Value       '開始日時
        .End = ws.Cells(i, 4).Value         '終了日時
        .Body = ws.Cells(i, 5).Value        '本文
        .ReminderSet = True
        .ReminderMinutesBeforeStart = 60
        .Save
    End With
    i = i + 1
Loop
End Sub

事前通知のプロパティ、ReminderSetプロパティをTrueにして、ReminderMinutesBeforeStartプロパティに「60」をセットしているので、予定の60分前にOutlookが通知してくれます。

Outlook VBAで登録された予定

上のコードを実行して登録された予定がこれらです。

outlook,vba,登録,予定

予定の中身を見てみると…

この通り、エクセルワークシートに記入された内容で予定登録されていますね。

最後に

今回は、エクセルワークシートに記入された内容を、Outlook VBAで予定登録する方法をご紹介しました。

筆者が企業に所属していた頃、やたらと会議やら外勤やらが多かった時期がありまして、この予定の登録が面倒で放置してしまい、社内で「居るかいないかよくわからん。ミーティングに呼べる時間がわからん。」とお叱りを受けたことがあります。

そのとき、予定がまとめて登録できたらいいのにな~と心底思ったものです。

この方法が、みなさまの予定管理ライフを少しでも快適にできれば幸いです。

それでは、最後までお読みいただきありがとうございました!

連載目次:はじめてのOutlook VBA

Outlook VBAで、予定やタスクの登録方法など、Outlookを操作する方法をご紹介しています。メーラーやスケジューラとして便利なOutlookですが、VBAで更に便利なツールにしてしまいましょう!

  1. 【はじめてのOutlook VBA】Outlookの予定を登録する方法
  2. 【Outlook VBA】エクセルワークシートの内容で予定登録する方法

connpassイベントのドタキャン問題による悲劇とその対策

$
0
0
canceled

photo credit: Daniel Kulinski Canceled via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

先日、「【Google Apps Script完全入門】LT必須輪読会Vol.1」というイベントを開催しました。

このイベントはコミュニティ「ノンプログラマーのためのスキルアップ研究会」の分科会という立ち位置ではあるのですが、IT勉強会支援プラットフォームconnpassを使ってオープンでも申し込みができるようなイベントにしてみました。

イベントとしては無事に開催を終えて、収穫もあったのですが、洗礼を浴びたというか…手痛い学びがあったというか…

ドタキャンが超絶激しかったんですね。

実際どんなもんだったのか、次にどういう対策を打ってみたのか、書いていきたいと思います。

では、connpassイベントのドタキャン問題による悲劇とその対策です。

行ってみましょう!

【Google Apps Script完全入門】LT必須輪読会とは

今回のお話の対象となるイベントは、9/9に開催された「【Google Apps Script完全入門】LT必須輪読会」です。

【Google Apps Script完全入門】LT必須輪読会 Vol.1 (2018/09/09 13:00〜)
# 「Google Apps Script完全入門」LT必須輪読会とは 「詳解!Google Apps Script完全入門」を読み進めながら、Google Apps Scriptを学ぶ勉強会です。 初心者で大歓迎、途中からの参加でもOKです!どうぞお気軽にご参加ください。 ## LTでアウトプットして学ぼう ...

このイベントは、拙著GAS本をみんなで読み進めながらGoogle Apps Scriptを学ぶ勉強会です。

コミュニティ「ノンプログラマーのためのスキルアップ研究会」(通称ノンプロ研)の分科会的なポジションでの開催ではありますが、コミュニティの宣伝や体験も兼ねて、connpassでのオープンイベントとして開催をしました。

教えることは二度学ぶこと

毎回、特定の章を対象に開催前に事前学習と準備をしておいていただいて、当日はその学習成果を全員が5分間のLTとして発表するというスタイルです。

今回は、Vol.1つまり初回でしたので、1,2章を、Vol.2は3,4章を、Vol.3は5章を…というふうに、章単位で進めていくので、毎回参加いただければGAS本の全体を発表できるくらい習得できるということになりますよね!

まさに、「アウトプットファースト」「教えることは二度学ぶこと」なイベントなのです。

著者がイベントに参加する

それで、このイベントの最大のウリは、著者である私自身が参加するという点です。

GASはアップデートが速いので、書籍執筆時点と現在に差分が生まれてしまうという書籍的には悲しい現実があるのですが、どんな差分があるのかとか、書籍に入れ込みきれなかったことなどを、私のほうからも発表させていただきます。

しかも、たった500円(ノンプロ研のメンバーは無料)で参加できてしまうという…!

自分で言うのもなんですが、とても恵まれた場かなと思います。

イベントページ公開後に申し込みが殺到!

イベント自体は9/9開催で、イベントページの公開と申し込み開始はその3週間前くらいの8/21でした。

公開後のイベントページのPVと、申し込みの様子はconnpassの機能で確認できますので、見てみましょう。

こちらです。

GAS輪読会Vol.1のイベントページPVと申し込みの様子

ページ公開は17:38。夕方だったのですが、PV・UU・申し込みともにギューンと伸びてますよね。

ものの3時間くらいで、10枠の参加枠が全て埋まってしまいました。

その後も補欠狙い(キャンセルが発生したら先着順の繰り上がりで参加枠に昇格します)で、たくさん申し込みをいただきまして、最終的には19件の申し込みがありました。

ノンプロ研のメンバーも参加枠に入りれなかったということで、急遽調整をして9/22にも同内容のイベントを追加開催をすることにしました。

追加開催に関しては、Twitterなどでの告知は控えて、先にノンプロ研の希望者が入れるように工夫したくらいです。

【Google Apps Script完全入門】LT必須輪読会 Vol.1 team.B (2018/09/22 13:00〜)
# 「Google Apps Script完全入門」LT必須輪読会とは 「詳解!Google Apps Script完全入門」を読み進めながら、Google Apps Scriptを学ぶ勉強会です。 初心者で大歓迎、途中からの参加でもOKです!どうぞお気軽にご参加ください。 ## LTでアウトプットして学ぼう ...

しかし、これは嬉しい…!

GASの勉強会もそんなに多くないですし、やっぱり著者がいるとなると、参加してみたくなりますよね。

著者冥利につきますよ。ていうか、著者ってチョロいんですよ。

どうチョロいかは、染谷さんのこちらの記事を見ていただければ、わかります。私もそうです。

お目当ての著者と仲良くなる方法
染谷の主観と偏見がたっぷりの記事になっていますがチョロいです。

イベント直前に大量のドタキャンが発生

さて、イベント近くになると、「急遽予定が…」とか、「ちょっと体調がすぐれないので…」といった理由で、何件かキャンセルが発生しました。

まあ、それはイベント運営ではよくあること。

補欠の方からすると繰り上がりで参加できるので、「待ってたかいがありましたね!」とほっこりした気持ちになりました。

それで、以下で赤枠で囲ったように、数日前から徐々にイベントページのPVが上がっていきますね。

GAS輪読会Vol.1のイベントページPVのイベント直前の様子

私のほうで前日に事前のお知らせメールを参加の皆さんに送ったり、参加者の皆さんが場所や時間の確認でご覧に来ているというのもあるのだと思うのですが、別の理由でのアクセスもあったようです。

というのも、前日あたりから、あれよあれよとキャンセルが相次ぎます。

補欠で繰り上がった方も、繰り上がった端から次々とキャンセルをされました。

いざ当日のイベント時間を迎えたときには、こちらのようになりました。

GAS輪読会Vol.1の最終的な申込数

ここまでで12名がキャンセルしたことになります…。

いや、7名だったら、まだカタチになるかな…と思っていたのですが、実際に会場に来たのは私を含めて4名でした。

私、あまり感情が動かないタイプなのですが、さすがにこの日はかなりヘコみました。

著者としての自分、全然人気ないんだな。

connpassイベントのあるあるなドタキャン問題

この状態で、この輪読会イベントを重ねていく…というのはかなり微妙です。

私がヘコむというのもありますが、それよりも真剣に学びたい人の機会が阻害されるほうが、やるせない気持ちでいっぱいになります。

ということで、ボキボキに折れた心を奮い立たせて、このドタキャン問題に立ち向かわなければいけません。

「connpass ドタキャン」

で調べたら、すぐにヒットしたこの記事。

【connpass × のびすけ対談】勉強会あるある!イベントのドタキャンにどう対処する? | dotstudio
イベント当日に参加者が来ない「ドタキャン」に悩まされたことがある方は多いのではないでしょうか。エンジニア向けイベントサービス「connpass」と、1年で100件ほどイベントを開催するエンジニアののびすけ(@n0bisuke)がドタキャン問題の解決策を話します。

connpassを運営している株式会社ビープラウドの社長さんではないですか。

人が集まりやすい仕組みになってるからこそ、勢いでくるというか。ドタキャン率も高い印象です。

なるほど、connpassではドタキャン問題はあるあるなのですね。

connpassでドタキャンが多い理由

上記の記事によると、ドタキャンが発生しやすい理由はいくつかあるようです。

まず、気軽に参加、キャンセルがしやすいこと。「都合が合えば行こう」くらいの軽いノリで参加登録をして、結果行かないという人が一定数いるのだということ。

もしくは、参加申し込みをしておきながら、予定を入れ忘れて、結局イベント自体を忘れる方もいるそう。

また、connpassには事前決済がpaypalしかなく、それだと集客が厳しいので、結果的に事後の会場払い決済を多くのイベント主催者が選択すること(クレジットカード決済…導入して!)。

事後払いなら懐も傷まない、と…。

ちなみにですが、決済に関しては、イベントンを使えばクレジットカード等による事前決済ができますが、connpassの「グループ」に参加者が増えていく仕組みはかなり魅力なので、どちらをとるか…という悩みがあります。

ドタキャンを防ぐべくとった対策

これらを踏まえて、いくつかの対策を打って、Vol.2のイベントを立てました。

実際のイベントページはこちら。

【Google Apps Script完全入門】LT必須輪読会 Vol.2 team.A (2018/10/06 13:00〜)
# 「Google Apps Script完全入門」LT必須輪読会とは 「詳解!Google Apps Script完全入門」を読み進めながら、Google Apps Scriptを学ぶ勉強会です。 初心者で大歓迎、途中からの参加でもOKです!どうぞお気軽にご参加ください。 ## LTでアウトプットして学ぼう ...
【Google Apps Script完全入門】LT必須輪読会 Vol.2 team.B (2018/10/07 13:00〜)
# 「Google Apps Script完全入門」LT必須輪読会とは 「詳解!Google Apps Script完全入門」を読み進めながら、Google Apps Scriptを学ぶ勉強会です。 初心者で大歓迎、途中からの参加でもOKです!どうぞお気軽にご参加ください。 ## LTでアウトプットして学ぼう ...

どんな対策をとったかわかりますか?

イベントの申し込み開始を直前にする

まず、イベントの申し込み開始は1週間前にすること。

connpassのイベントは、イベントページを公開はしながらも、申し込み開始日を別途設定できます。

申し込みからイベント開催日までのスパンを短くすることで、予定忘れや他の予定の割り込みの余地を減らす作戦です。

参加枠を分ける

次に参加枠を分けること。このように分けました。

  • 一般参加枠 1000円(会場払い)先着順 2人
  • 絶対に行くぞ!枠 500円(会場払い)先着順 4人
  • ノンプロ研メンバー限定枠 無料 先着順 3人

「絶対に行くぞ!枠」については、以下のように注意書きを入れています。

体調不良などの予期せぬ理由なくキャンセルした場合、次回の申込みが不利になる可能性があります。 キャンセルする時は、その理由をコメントに残しておいてくださいね。

私はやると言ったら、本当にやります。なにせ「#スーパードライ」な性格なので。

それでいうと、キャンセルしそうな方は、一般参加枠に申し込みをすることになるのですが、そっちは1000円です。

「高くても行きたい、でも本当に調整できるかわからない。」そんな方が来てくださるといいなと思います。

そして、ノンプロ研のメンバーが参加できないという件が発生していたので、それを避けるべくノンプロ研専用枠を用意しました。

いつも、お世話になっている皆さんは当然VIPになるわけです。

どうなるんでしょうか…楽しみですね!

まとめ

イベント運営…ほんと大変なんだなと思い知らされました。

いつもは、ノンプロ研内のクローズドのイベントが多いので、このような悩みがないイベント運営ができていました。

ノンプロ研の皆さんには感謝しなければいけませんね。

あと、この記事を読んだ皆さんにはわかっていただきたい。

ドタキャンは、本当に参加したい人の邪魔をしている行為になっちゃうんですよ。

さて、次回9/22の開催はノー対策なので、どうなるかちょっと不安があるのですが、10月のほうはいくつかの対策によりどんな結果になるか、少し楽しみです。

また、面白い結果が出たら報告したいと思います。

どうぞお楽しみに!

大阪初開催のチャットワークユーザー会「ChatWork Café 大阪Vol.1」参加レポート

$
0
0

ChatWork Café大阪Vol.1のようす

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

さあ、なんと行ってしまいました、大阪!

それも、大阪で初めて開催されるチャットワークのユーザー会「ChatWork Café 大阪 Vol.1」に参加&登壇ためなんですね。

いや~、大阪でも素敵な出会いがたっぷり、そして学びの多い時間を過ごさせていただきました。

行ってよかった…!

ということで、「ChatWork Café 大阪 Vol.1」の参加レポートをお届けてしていきます。

では、行ってみましょう!

ChatWork Café 大阪、初開催!

ChatWork Caféとは、チャットワークユーザーが集まり、チャットワークについて主体的にかつ楽しく学び、共有するためのコミュニティです。

あくまでChatWork社ではなくて、ユーザーが主体となって開催するものです。(いつも、たくさんのご協力をいただいておりますが…ありがとうございます!)

エリアでいうと、札幌、東京、瀬戸内…という3箇所で開催実績があるのですが、今回はその4箇所目となる、大阪での初開催ということになりました。

会場は中央会計セミナールームさん。

ChatWork本社のシアタールームに負けない、素敵な会場でした。

中央会計セミナールーム

ChatWork Café 大阪 Vol.1のプログラム

では、お待ちかねのプログラムとその内容についてレポートしていきますね!

イベントページはこちら。

ChatWork Café 大阪 Vol.1

大阪初のChatWork Caféは、登壇とグループディスカッションを組み合わせたプログラム。

確かに、会場写真でも分かる通り、3つのグループに座っていただいたのでディスカッションしやすい配置なんですね。

ツイートまとめは、以下になりますので、合わせてご覧いただくと臨場感が湧くと思います。

ChatWork Café大阪 Vol.1
\ChatWork Caféが大阪へやってきた!!/ChatWork Caféとはチャットワークユーザーが集まり、チャットワークについて主体的にかつ楽しく学び、共有するためのコミュニティです。集ま..

ChatWork Caféとは

ChatWork Café 大阪Vol.1 ChatWork株式会社藤井さん

まずは、我らがChatWork株式会社の藤井さんから「ChatWork Caféとは」

ChatWork Caféについては前述の通りですが、さすが安定のプレゼンをいただきました。ありがとうございます。

また、今回はお二人の「ChatWorkエバンジェリスト」のご登壇であることを紹介いただきました。

あと、登壇を通して私タカハシはツイートまとめと開催レポートのありがたい任務を拝命いたしました。今、やっております。

しかし、東京の第1回のときは手探り状態…という感じでしたが、わずか9ヶ月そこそこで、どんどん全国に広がっていますね。

まさか、藤井さんと大阪でお会いすることになろうとは…!ちょっと感慨深いです。

介護業界での活用方法について

ChatWork Café 大阪Vol.1 株式会社ライフケア一谷勇一郎さん

次のご登壇は、株式会社ライフケアを経営されている一谷勇一郎さんから、介護業界での活用方法についてお話いただきました。

16.7%と高い離職率になってしまっている介護業界…その中で離職の大きな原因になっているコミュニケーションをいかに改善し、離職率を下げるか…?

たくさんの金言をいただいたのですが、それらを代表するのが、上記写真でも紹介されているこちら。

コミュニケーションは質より量

「双方向的コミュニケーション」が人間の根源的欲求であること、そしてその量を確保するために対面などの既存の方法だけでなく、ツールとしてのチャットワークが有効であるということなんですね。

チャットワークの使い方についてもエモーティコンや、グループ分けの工夫など、わかりやすく教えてくださいました。

これで、なんと…

す、素晴らしいですね。

また、私としては社内導入の際に

  • 数値や研究結果をもとにした客観的な説明
  • トップダウン

この2つがポイントであるということが印象に残りましたね。

導入や浸透に課題がある企業さんは参考になると思います。

主婦の働き方改革

ChatWork Café 大阪Vol.1 株式会社ソレイユ中井さん

続いてのご登壇は、今回の主催でもいらっしゃる株式会社ソレイユの代表中井まひるさん

介護・保育を主軸事業とされていますが、社員・スタッフ30名が「全員主婦」という非常に特徴的な事業運営をされていらっしゃいます。

その中で、どのようにチャットワークを含めたツールを活用しているのか、またオリジナリティあふれる仕組みをとられているのか…という、たいへん興味深いお話でした。

皆さん主婦なので、当然ながら

  • 早く帰って夕食を作らなければいけない
  • 子供をどこかに預けなければいけない
  • 子供の体調や学校の行事で急な休み・遅刻・早退が発生する

ということが全員に起こりうるわけです。

そこで、とられている仕組みが

  • 完全分業制・シフト制→プロジェクトごとにチャットグループとGoogleドライブで常に共有
  • 「シフト調整チャット」でみんなが突発的な調整に協力するお互い様文化
  • 来店型ショールームに子連れで出勤→地域コミュニティの中心的存在に

をはじめ、上記写真画像のリストの数々。たくさんの工夫がありますよね…!

主婦ばかりの職場だからこそ、そこに思い切ってフォーカスした仕組みづくりやツールの活用法が導入できるんですね。

一つの会社の中で多様なスタッフを迎えるのではなくて、むしろ集中することで社会全体で多様化に対応していくというか…これからの社会での経営のあり方を考えさせられました。

日本一やさしいChatWork APIの話

次は私タカハシから「日本一やさしいChatWork APIの話」

スライドはこちらです。

APIとは何か、Web APIとは何か、ChatWork APIでどんなことができるのか、活用の方法としてzapierとGoogle Apps Scriptについて…というような内容をお伝えしました。

皆さん、技術寄りの方々ではなかったので、なるべくわかりやすくお伝えしようと思っていたのですが、いかがだったでしょうか…?

まとめ

以上、ChatWork Café 大阪 Vol.1のイベントレポートをお送りしました。

今回は、一谷さん、まひるさんをはじめ介護・保育といった皆さんが参加者の中心ということもあってか、登壇はもちろん、グループディスカッション、懇親会に至るまで「ハートフル」そしてギブの精神を感じました。

ChatWork Café 大阪Vol.1 懇親会は「スナックかをり」による京丹後の郷土料理

どのようにビジネスを加速するかというよりは、社会や地域、そこに住んでいるまたは働いている人たちが抱えている課題をいかにして解決するか、そこがテーマの中心になっていて、それを解決するツールとしてチャットワークがある、そういうふうに私には見えました。

ちなみに私は当初、チャットワークLive経由でのリモート登壇を予定していたのですが、思い切ってうかがって本当に良かったです。

Vol.2の開催の際は、また呼んでくださいませ~!

ノンプロ研ってどんなとこ?事務職の私がプログラミングを始めてから入会しての感想をお話しします!

$
0
0

ノンプロ研入会アイキャッチ画像

みなさんこんにちは!ノンプロ研メンバーのもり(@excelprog)です!

私は一般企業で事務職として働きながら、ノンプロ研でプログラミングを勉強して会社のルーチン作業をVBAで片づけています。

この記事をお読みのみなさんは、こんな思いをお持ちでしょうか?

  • 事務職だけどプログラミングに興味がある!
  • ノンプロ研ってどんなコミュニティなの?

事務職の私がプログラミングを始めたきっかけから、ノンプロ研に入会~活動しての感想を存分にお話ししていきますよ!

ノンプロ研に興味があるけど入会を迷っている!そんなあなたの参考になればうれしいです。

プログラミングに目覚める!

2017年10月、事務職として転職した会社で、とてつもない単純作業の繰り返しを経験しました。

Excelブックを開いて、指定のシートを選択して、指定のセルに文字を入力して、上書き保存 × 100ブック・・・

毎日単純作業ばかりしている自分がむなしく、「こんなロボットみたいな作業イヤだ…」と思い、この100ブックをやっつけるべくVBAの勉強をはじめました。

すると、自分の書いたコードが動いた!その感動でプログラミングに目覚めました!

それからはネット・書籍で必死に情報を集め、初心者ながらなんとかマクロを完成させると・・・

半日かけていたロボットのような作業が、たったの数分で終わってしまいました。

しかも、実行ボタンを押せば、あとは画面を見ながらコーヒーを飲んでくつろいでいるだけでOKというすばらしさ!

「今日の仕事もう終わっちゃったよ…(笑)」

退屈な作業をマクロで片づけ、空いた時間で勉強する → さらに複雑なマクロが組めるようになり、もっと時間が空く → 勉強する → …という好循環に乗っていくのを感じました。

それから3ヶ月間、会社でも家でもひたすらVBAの勉強をしました。

いざ、ノンプロ研に入会!

ノンプロ研ってなに? 入会に迷いはあった? 雰囲気は? レベルはどれくらい? 初心者でも大丈夫?

ぜんぶお話ししていきますよ~

ノンプロ研とは?

正式名称:「ノンプログラマーのためのスキルアップ研究会」

名前のとおり、ノンプログラマー(非開発職)たちが集まって、プログラミングを武器にすべくスキルを磨いているコミュニティです。

サラリーマン・独立起業家など、メンバーの職種はさまざまです。

詳細はこちらの公式ページをご覧くださいね。

コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。

入会のきっかけは?迷いはあった?

2018年1月、ノンプロ研に入会。迷いなしです!

VBAの勉強中に当ブログにたどりつき、サイドバーのコミュニティ広告を発見。すぐに入会の手続きをしました。

紹介記事のなかで特にピンときたフレーズは、

「プログラミングを教えてもらう」ことよりも、むしろ「自らで学び続ける力をつける」また「教え合うことで学びの価値を上げる」ことを重視しています。

「おもしろそう!とりあえず入会して、もし合わなければやめればいいかな」

そんな軽い気持ちでした。

ノンプロ研の第一印象は?

さて、入会したらびっくり!

その第一印象は、「この人たちノンプログラマーなの?!(レベル高い…)」です。

メンバーの「学習言語(VBA・GAS・Python)」も、その「レベル」もさまざまですが、ひとつたとえるなら、

ノンプロ研メンバーのITリテラシーレベルは、非開発職(事務職)の上位10%に入ると思っています。

「10%?!」と驚かれる人のために、参考までに私の感覚をお伝えしておくと、

もしあなたが、ExcelのVLOOKUP関数をガンガン使いこなせるならば、事務職としてのITリテラシーレベルは、すでに上位1/3(※)に入ります。

(※複数会社での事務職経験にもとづく感覚なので、あくまで参考です)

レベル高そう…初心者は入会できませんか?

ちょっと不安にさせちゃいましたかね。すみません。

結論は、初心者でも大丈夫です!

なぜなら、あえて背伸びをしてレベルの高い集団・環境に身を置いて学習することで「気づいたら自分もそのレベルに達している」からです。

これは、ノンプロ研というコミュニティに限ったことではありません。

逆に、「今はまだ自信ないから、”いつか”スキルが身についてから入会しよう」と思っている場合、相当なスピードでレベルアップをしない限り、その「いつか」はやってきません。

なぜなら、ノンプロ研メンバーも常にレベルアップしているからです。

「一緒にレベルアップしていきたい」という”学ぶ意欲”と”覚悟”さえあれば、スキルの差なんて関係ありません。大丈夫ですよ。

ただひとつ注意してほしいのは、「スクールのようにカリキュラムに沿って一から勉強したい」という趣向の方には、難しいことです。

「自ら学ぶ・教え合う」ことを目的としたコミュニティだからです。

ノンプロ研の雰囲気は?

学びたい!覚悟も決めた! けど・・・

そう、気になるのは、コミュニティの雰囲気ですよね?

ずばり「自由」です。
「来るもの拒まず、去る者追わず」です。

入会・退会が自由なのはもちろん、オフライン・オンライン活動への参加も完全に自由です。

現在、オンライン活動はSlackでの情報交換がメインです。

  • こんなプログラム書いたよ~
  • 今ここでつまずいてるから誰かヘルプ!
  • こんな勉強企画やろうよ!

「学びたい!」その意志さえあれば、コミュニティを自由に活用できます。

ノンプロ研に入会してよかったことは?

ずばりこの2つです!

成長スピードが速くなったこと

ひとりで勉強していたときよりも、成長スピードの速さを体感しています。

お互いが知識のパズルピースを持ち寄って、それを広げていくからです。

ノンプロ研知識の共有

プログラミングの話題に限らず、このアプリ便利だよ!このWebサービスおススメ!など、メンバーの成長につながることはお互い積極的にシェアします。

勉強の習慣が身についたこと

TwitterやSlackを見ればつねに誰かが勉強しているし、何かを投稿すればリアクション(良いね)がもらえます。

孤独なノンプログラマーにとって、勉強を続けられるか・続けられないかは、こういった他者の存在が大きいと思います。

私は入会と同時に勉強のアウトプット用ブログを開始して、月10本のペースで記事を書いてきました。

「ブログを書く」という超孤独な作業が続いているのも、「いつもブログみてるよ」と言ってくれるメンバーの存在が大きいです。

まとめ・次回予告

事務職の私がプログラミングを始めてから、ノンプロ研に入会~活動しての感想をお話しました。

  • 事務職VBAを身につけると、仕事があっという間に片づく!
  • ノンプロ研は初心者でも大丈夫!最初はレベルの高さにビックリするかもしれないけれど、“学ぶ意欲”さえあればOK!
  • ノンプロ研は自由な雰囲気で、勉強仲間がいると成長スピードが速い!

私は迷いなく入会して、本当に良かったと思っています。

さてさて、こんな私はノンプロ研での勉強にとどまらず、お仕事パートナーにも応募しちゃいました。

「お仕事パートナー」に興味がある!在宅ワークで副業収入がほしい!ブログ執筆してみたい!

次回はそんな方々へのメッセージをお届けします。どうぞお楽しみに!

Viewing all 2072 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>