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

App MakerでPage Fragmentによるヘッダーを各ページに配置する手順

$
0
0

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

ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方についてシリーズでお伝えしています。

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

App Makerで使い回しパーツを作るPage Fragmentを作成するはじめの一歩
ノンプログラマー向けにCloud SQLのはじめかた&App Makerアプリの作り方についてお伝えしています。今回は、App Makerで使い回しパーツを作るPage Fragmentを作成するはじめの一歩です。

共通のUIパーツとして機能するPage Fragmentとその作り方についてお伝えしました。

今回は、そのPage Fragmentを使って、各ページにヘッダーを設定していきます。

ということで、App MakerでPage Fragmentによるヘッダーを各ページに配置する手順です。

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

前回のおさらい

シリーズを通して、「従業員データ」の一覧表示および追加・編集をするアプリケーションを作成しております。

前回は各ページで共通で使用するヘッダーを、Page Fragmentのページとして作成する方法をお伝えしました。

完成したヘッダーは、その名も「Header」としていて、以下のようなイメージとなっております。

App MakerのPage Fragmentで作成したヘッダー

設置されているハンバーガーアイコンは、ナビゲーションメニューとして、各ページへ遷移する機能を搭載する予定です。

今回は、このヘッダーを各ページに設定していきます。

ページにヘッダーを配置

まず、従業員データをテーブル表示するページ「TablePage」にヘッダーを配置していきます。

作成したPage FragmentはWidgetsパネルからドラッグして配置することができます。

「Widgets」アイコンでパネルを開くと、一番下の「Your Page Fragments」のエリアに、作成したPage Fragment「Header」があります。

それをページ内にドラッグします。

App MakerでPage Fragmentをページにドラッグする

一応、配置はできましたがサイズが合ってなくて微妙っすよね。

ヘッダーのサイズと位置を調整をする

挿入したPage Fragmentについてサイズや位置を調整していきましょう。

Property EditorのLayoutプロパティグループの各プロパティで設定することができます。

まず、Property EditorのLayoutプロパティグループを見つけてください。

その中のWidthプロパティを「auto」に設定します。

App MakerでヘッダーのWidthプロパティをautoに設定する

つまり、横幅を自動設定にするわけですね。ページいっぱいに広がってくれます。

次に、Leftプロパティ、Topプロパティ、Rightプロパティを0にします。

App MakerでヘッダーのLeftプロパティ、Topプロパティ、Rightプロパティを0に

テーブルのPanelを選択して、ドラッグして位置を調整します。

App Makerでテーブルの位置を調整

これで、TableページのほうはOKです。

EditPageにヘッダーを配置

もう一つ、従業員データを追加・編集するページ「EditPage」がありますので、そちらにも同様の手順でヘッダーを配置します。

App MakerでEditPageにヘッダーを追加する

これで各ページへのヘッダーの配置は完了です。

プレビューをして動作確認する

では、「PREVIEW」ボタンでプレビューをして動作確認をしましょう。

App Makerでヘッダーも含めたページをプレビューする

データ一覧を閲覧する「TablePage」がこちら。

App Makerでヘッダーを追加したTablePage

こちらが、データの追加・編集をする「EditPage」です。

App Makerでヘッダーを追加したEditPage

どちらもいい感じですね!

まとめ

以上、App MakerでPage Fragmentによるヘッダーを各ページに配置する手順をお伝えしました。

各ページ分、ちょっとだけ調整が必要ですが、一度配置してしまえば共通パーツとして管理・編集が可能です。

その証拠に、次回はヘッダーにナビゲーションメニューの機能を追加していきますよ。

どうぞお楽しみに!

連載目次:Cloud SQL&App Makerアプリ開発のはじめかた

App Makerを使うならデータベースはGCPのCloud SQLが第一の選択肢になりました。そこで、ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方を易しく丁寧にお伝えしていきます。
  1. はじめてのCloud SQLによるApp Makerアプリ開発、その概要と経緯と道筋
  2. Google Cloud Platform(GCP)に無料トライアル登録をする方法
  3. G Suite管理コンソールからApp Makerのデータベース設定を行う方法
  4. ノンプログラマー向けApp Maker用のCloud SQLのインスタンスを作成する方法
  5. App Makerのデータベースとして作成したCloud SQLのインスタンスを設定する方法
  6. App MakerではじめてのCloud SQLのモデルを作成する方法
  7. App MakerでCloud SQLをデータベースとしたテーブルをページに配置する方法
  8. App MakerでCloud SQLデータベースにデータ追加するフォーム作成する方法
  9. App Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解く
  10. はじめてのCloud SQLをデータベースとしたApp Makerアプリを公開する方法
  11. App Makerで使い回しパーツを作るPage Fragmentを作成するはじめの一歩

App MakerのPopupページでナビゲーションメニューを作成する方法

$
0
0

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

ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方についてシリーズでお伝えしています。

前回の記事はこちら。

App MakerでPage Fragmentによるヘッダーを各ページに配置する手順
ノンプログラマー向けにCloud SQLのはじめかた&App Makerアプリの作り方についてシリーズでお伝えしています。今回は、App MakerでPage Fragmentによるヘッダーを各ページに配置していきます。

Page Fragmentで作成したヘッダーを各ページに配置する方法をお伝えしました。

ヘッダーを配置したはいいんですが、まだ「メニューボタン」の動作を仕込んでいませんでしたので、その部分を進めていきます。

ということで今回は、App MakerのPopupページでナビゲーションメニューを作成する方法です。

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

前回までのおさらい

このシリーズでは、App Makerで「従業員データ」を一覧表示、追加・編集するアプリケーションを作成しています。

前回は、Page Fragmentページで作成したヘッダーを、一覧表示をするページ「TablePage」と…

App Makerでヘッダーを追加したTablePage

データの追加・編集をするページ「EditPage」に配置したのでした。

App Makerでヘッダーを追加したEditPage

上部の青い部分がヘッダーで、その名も「Header」という名前のPage Fragmentです。

白いハンバーガーアイコンボタンをクリックすると、各ページに遷移するナビゲーションメニューを表示したいのですが、その部分がまだ未実装です。

今回は、その部分を進めていきます。

Popupとナビゲーションメニュー

さて、App Makerで作成できるページには3つの種類があるという話を、以前の記事でも紹介しました。

すなわち

  • Page: いわゆる通常のページ
  • Page Fragment: ページに埋め込める再利用可能なUI
  • Popup: ダイアログやメニューを作る

の3つです。

「Popup」では、モーダルつまりそのダイアログやメニューを閉じないと、他の操作ができないようなUIを作成することができますが、ナビゲーションメニューは「Popup」から作成することができます。

では、実際にその作り方をみていきましょう。

ナビゲーションメニューを作成する

では、実際にナビゲーションメニューを作成してきましょう。

「Popup」もページですので、「PAGES」の「+」アイコンから作成していきます。

App Makerで新たなページを作成する

「Create Page, Page Fragment, or Popup」ではナビゲーションメニューを作成するわけですから「Popup」を選択して「NEXT」です。

App MakerでPopupページを作成する

このダイアログの説明書きにもある通り、Popupページではモーダルまたは非モーダルボックス、ダイアログ、メニュー、通知など様々な表現を実現できます。

A modal or non-modal box in a page, useful for dialogs, menus, notifications, etc.

続く、「Create Popup」でそのうちのどれを作るかを設定します。

ここでは「Navigation menu」を選択して「CREATE」ですね。

App Makerでナビゲーションメニューを作成する

Navigation menum含めて、ここでの選択肢は以下の通りで、バリエーション豊かですね。

  • Empty popup: 空のポップアップ、空白のキャンバスとして使用する
  • Navigation menu: ナビゲーションメニュー
  • Confirmation dialog: 確認ダイアログ
  • Notification dialog :通知ダイアログ
  • Modal loading indicator: モーダルローディングインジケーター
  • Snackbar: スナックバー、画面下部に操作についての1行テキストによる説明を表示

作成したナビゲーションメニュー

これで、新たなページとして「NavigationMenu」が追加されます。

見るとわかるのですが、実は挿入しただけで、いくつかのラベルとそのバインディングが自動で設定されます。

App Makerで作成したナビゲーションメニュー

青い上部のエリアのLabelには、ユーザー名とメールアドレスに以下のようなバインディングが割り当てられてます。

@user.username

@user.email

つまり、現在のユーザーの名前とメールアドレスが反映されるわけですね。

また、メニュー部分のPanelのonClickプロパティには、各ページへ遷移するアクション(Navigate to Page)が、あらかじめ割り当てられています。

…優秀ですね!

ヘッダーのmenuボタンのアクションを設定

これで、ナビゲーションメニュー「NavigationMenu」が完成したので、このナビゲーションメニューをヘッダーメニューボタンクリックで表示するように設定をしていきます。

まず、「Header」の「menu」ボタンを選択し、そのプロパティをProperty Editorに表示します。

クリックしたときのアクションを決めたいので、onClickプロパティでしたね。「Show Popup…」→「NavigationMenu」と選択します。

App Makerでmenuボタンでナビゲーションメニューが表示されるように設定する

これで準備は完了です。

プレビューをして動作確認する

では、プレビューして動作確認をしていきましょう。

「PREVIEW」ボタンをクリックです。

App Makerでプレビューする

プレビュー画面で、ハンバーガーアイコンの「menu」ボタンをクリックします。

App Makerのプレビューでmenuボタンをクリック

すると、今回作成したナビゲーションメニューが表示されます。

ユーザー名やメールアドレスも表示されていますね。

現在「TablePage」にいますので、「EditPage」をクリックしてみましょう。

App Makerのナビゲーションメニューを操作する

すると、以下のように「EditPage」が開きます。

App Makerのナビゲーションメニューで画面を切り替えた

ナビゲーションメニューから「TablePage」への遷移も可能なので確認してみてください。

まとめ

以上、App MakerのPopupページでナビゲーションメニューを作成する方法をお伝えしました。

作成した時点でバインディングや、onClickプロパティによるアクションがすでに設定されているの、秀逸ですよね…!

次回はいよいよこの修正内容を反映して公開していきます。

どうぞお楽しみに!

連載目次:Cloud SQL&App Makerアプリ開発のはじめかた

App Makerを使うならデータベースはGCPのCloud SQLが第一の選択肢になりました。そこで、ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方を易しく丁寧にお伝えしていきます。
  1. はじめてのCloud SQLによるApp Makerアプリ開発、その概要と経緯と道筋
  2. Google Cloud Platform(GCP)に無料トライアル登録をする方法
  3. G Suite管理コンソールからApp Makerのデータベース設定を行う方法
  4. ノンプログラマー向けApp Maker用のCloud SQLのインスタンスを作成する方法
  5. App Makerのデータベースとして作成したCloud SQLのインスタンスを設定する方法
  6. App MakerではじめてのCloud SQLのモデルを作成する方法
  7. App MakerでCloud SQLをデータベースとしたテーブルをページに配置する方法
  8. App MakerでCloud SQLデータベースにデータ追加するフォーム作成する方法
  9. App Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解く
  10. はじめてのCloud SQLをデータベースとしたApp Makerアプリを公開する方法
  11. App Makerで使い回しパーツを作るPage Fragmentを作成するはじめの一歩
  12. App MakerでPage Fragmentによるヘッダーを各ページに配置する手順

App Makerでアプリを再公開して修正内容を反映する手順

$
0
0
deployment

photo credit: U.S. Pacific Fleet 191003-N-HD110-1055 via photopin (license)

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

ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方についてシリーズでお伝えしています。

前回の記事はこちら。

App MakerのPopupページでナビゲーションメニューを作成する方法
ノンプログラマー向けにCloud SQLのはじめかた&App Makerアプリの作り方についてシリーズでお伝えしています。今回は、App MakerのPopupページでナビゲーションメニューを作成していきます。

Popupページを使ってヘッダーにナビゲーションメニューを作成する方法をお伝えしました。

さて、前回修正をしましたので、その修正を反映すべく、再度公開をしていきます。

ということで、App Makerでアプリを再公開して修正内容を反映する手順をお送りします。

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

前回までのおさらい

このシリーズでは従業員データを扱う「従業員データベース」というアプリを作成しています。

メインのページは

  • データ一覧を閲覧する「TablePage」
  • データを追加・編集する「EditPage」

の2つから構成されています。

これらのページの共通のヘッダーとしてPage Fragmentを用いて「Header」を作成しました。

それが以下の図に表す部分です。

App MakerでPage Fragmentを使用して配置したヘッダー

さらに、そのハンバーガーアイコンは「menu」ボタンになっていて、クリックすると以下のようなナビゲーションメニューが開きます。

App MakerでPopupを使用して配置したナビゲーションメニュー

このナビゲーションメニューはPopupを使用して作成したもので、ログインしているアカウント名の表示と、各ページへのリンクを機能として持っています。

前回、このヘッダーとナビゲーションメニューの動作をプレビューで確認しましたが、本番に適用するには再度「公開」をする必要がありますので、その作業を進めていきます。

アプリを公開して修正を反映する

では、再度のアプリ公開作業を進めていきましょう。

右上の「PUBLISH」をクリックします。

すると、初回の公開時とは異なりメニューが表示されます。

ここでは「Publish to deployment Test」を選択します。

App Makerでアプリを再公開する

「Test」というのは初回に公開したときに定めた「Deployment name」ですね。

すると、「Are you sure?」というダイアログで以下のように「deploymentを最新バージョンに置き換えますか?」と尋ねられますので、「YES」としちゃいましょう。

Do you want to replace the deployment with the latest version?

App Makerのアプリのdeploymentを置き換えてよいか回答する

ちなみに、公開が完了したときにアプリを開きたい場合は「Open app when complete」にチェックを入れてくださいね。

公開したアプリを開く

ではアプリを開いて確認していきましょう。

アプリの公開URLは以前公開したときのものと同じですが、歯車アイコン「App settings」→「DEPLOYMENTS」→「Test」からアプリを開くこともできます。

App Makerで公開したアプリを開く

以下のようにアプリを開くことができました。

App Makerでアプリを開いた

従業員データベースアプリの動作

では、従業員データベースアプリの動作を確認していきましょう。

まず、公開したアプリはデータが空です。

公開アプリのデータベースは、プレビューで投入したときのデータベースとは別のものになりますので、データの投入は公開後に行う必要があります。

ですから、ヘッダーの「menu」ボタンから、「EditPage」にアクセスをしていきます。

App Makerでヘッダーのmenuボタンをクリックする

ナビゲーションメニューが開きますので「EditPage」をクリックします。

App Makerでナビゲーションメニューのパネルをクリックする

EditPageに遷移しますので、「CREATE」からフォームにデータを入力していきます。

App Makerでフォームにデータを入力する

再びナビゲーションメニューを開いて、今度は「TablePage」を選択して戻ってみると…以下のようにテーブルで先ほど入力したデータを確認できます。

App Makerで入力したデータをテーブルで確認する

うまく動いていますね。

まとめ

以上、App Makerでアプリを再公開して修正内容を反映する手順をお送りしました。

さて、ここまで作成してきた「従業員データアプリ」ですが、実はメニューとドラッグ&ドロップとプロパティ設定だけで、できちゃいました。

もちろん、より複雑なことや高度なことが、紹介していない機能やスクリプトを組むことで実現できます。

App Maker恐るべし…!

さて、次回ですがCloud SQLに結局どれくらいお金がかかるのか…について紹介します。

どうぞお楽しみに!

連載目次:Cloud SQL&App Makerアプリ開発のはじめかた

App Makerを使うならデータベースはGCPのCloud SQLが第一の選択肢になりました。そこで、ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方を易しく丁寧にお伝えしていきます。
  1. はじめてのCloud SQLによるApp Makerアプリ開発、その概要と経緯と道筋
  2. Google Cloud Platform(GCP)に無料トライアル登録をする方法
  3. G Suite管理コンソールからApp Makerのデータベース設定を行う方法
  4. ノンプログラマー向けApp Maker用のCloud SQLのインスタンスを作成する方法
  5. App Makerのデータベースとして作成したCloud SQLのインスタンスを設定する方法
  6. App MakerではじめてのCloud SQLのモデルを作成する方法
  7. App MakerでCloud SQLをデータベースとしたテーブルをページに配置する方法
  8. App MakerでCloud SQLデータベースにデータ追加するフォーム作成する方法
  9. App Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解く
  10. はじめてのCloud SQLをデータベースとしたApp Makerアプリを公開する方法
  11. App Makerで使い回しパーツを作るPage Fragmentを作成するはじめの一歩
  12. App MakerでPage Fragmentによるヘッダーを各ページに配置する手順
  13. App MakerのPopupページでナビゲーションメニューを作成する方法

【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法

$
0
0

ユーザーフォーム,コマンドボタン,イベント

皆様こんにちは、ノグチです。

前回は、ユーザーフォームにいくつかコントロールを追加して、そのユーザーフォームをワークシートから呼び出す方法をご紹介しました。

【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
エクセルの便利機能、ユーザーフォームの作り方と使い方を、連載記事でご紹介しています。今回は、ユーザーフォームにラベルやテキストボックスといったコントロールを追加する方法と、作成したユーザーフォームをワークシートから呼び出す方法をご紹介しています。

今回からは、作成したユーザーフォームと各コントロールのプロパティやイベントを使って、色々な動作をさせていきましょう!

本稿では、コマンドボタンのイベントをご紹介していきますよ。

前回までのおさらい

まずは、前回作成したユーザーフォームがこちら。

ユーザーフォーム,オブジェクト名

ユーザーフォームにテキストボックスやコマンドボタンといったコントロールを配置して、ユーザーフォーム自体のオブジェクト名を、「MyForm」という任意の名前に変えたのでした。

今回は、このフォーム上にある、コマンドボタンが主役です。

コマンドボタンのオブジェクト名を変更する

コマンドボタンも、ユーザーフォーム同様に、任意のオブジェクト名にすることができます。

VBAコード内での記述し易さと分り易さのために、オブジェクト名を判別しやすいものに変えておきましょう。

コマンドボタンのプロパティシートを開いて…

コマンドボタン,プロパティシート

(オブジェクト名)」という項目の値を変えれば、コマンドボタンのオブジェクト名を変更することができます。

今回は、「btnOK」としておきましょう。

コマンドボタンのイベントに任意の処理をセットする

コマンドボタンのオブジェクト名を変更したところで、コマンドボタンのイベントを使ってみましょう。

イベントは、コントロールに対して特定の操作が行われた時に実行されるもので、各イベントに対応したイベントプロシージャに処理を記述することで、そのイベントが実行された時に任意の処理をさせることができます。

イベントに対応したイベントプロシージャを開く

イベントに処理を追加する場合は、対応したイベントのイベントプロシージャ内に処理を記述していきます。

VBEでユーザーフォームを開き、コマンドボタンをダブルクリックするか、コントロールを選択して右クリック>「コードの表示」をクリックすると、自動的にコマンドボタンのイベントプロシージャが表示されます。VBE,イベント,Click

自動的に表示されたイベントプロシージャ以外のイベントを使いたい場合は、画面右側にあるドロップダウンリストの中から、使いたいイベントを選択すれば、選択したイベントプロシージャが自動的に表示されますよ。

VBE,イベント

Clickイベント

コマンドボタンのイベントに、Clickイベントがあります。

このイベントは、コマンドボタンがクリックされた時に実行されるイベントで、コマンドボタンのイベントとして使われる頻度が最も高いものでしょう。

ユーザーフォームでコマンドボタンを配置したら、必ず使うと言っても過言ではありません。

Clickイベント時に何らかの処理をさせたい場合、例えばこんな風に記述します。

Private Sub btnOK_Click()
    MsgBox "ボタンがクリックされました!"
End Sub

コマンドボタンがクリックされたら、メッセージを表示する、というコードです。

このコードを保存して、ユーザーフォーム上のコマンドボタンをクリックしてみると…

DblClickイベント

この通り、Clickイベントプロシージャ内に記述した処理が実行されます。

DblClickイベント

コマンドボタンのイベントには、ボタンをダブルクリックした時のイベント、DblClickイベントもあります。

このイベントを使うには、Clickイベント同様に、対応したイベントプロシージャに処理を書き込めばOK。

例えばこんな風に。

Private Sub btnOK_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    MsgBox "ダブルクリックされました!
End Sub

そしてコマンドボタンをダブルクリックすると、イベントプロシージャ内に記述した処理が実行されますよ。

注意点

ClickイベントとDblClickイベントをご紹介しましたが、この2つのイベントを同一のコマンドボタンに対して使おうとする場合は、注意が必要です。

Clickイベントは、ボタンがクリックされれば即実行されます。

Clickイベントでユーザーフォームを閉じたり、メッセージを表示したりといった、操作の主体がユーザーフォームでなくなる処理をさせると、ユーザーフォームが2回目のクリックを認識することができず、DblClickイベントが実行されません

同一のコマンドボタンに対してはClcikイベントとDblClickイベント両方を使わないようにするか、処理の内容や順番を考える必要がありますね。

クリックしてユーザーフォームを閉じる

Unloadステートメントでユーザーフォームを閉じる

コマンドボタンのイベントが使えるようになったので、コマンドボタンをクリックしたらユーザーフォームを閉じる、という処理をさせてみましょう。

ユーザーフォームを閉じるには、Unloadステートメントを使います。

記述方法はこちら。

Unload UserFormオブジェクト

例えば、「MyForm123」というユーザーフォームを閉じたい場合、

Unload MyForm

と記述すればOKです。

Clickイベントプロシージャに処理をセットする

次はこのUnloadステートメントを、コマンドボタンのイベントプロシージャの中に記述しましょう。

コマンドボタンのClickイベントプロシージャに、このように記述します。

Private Sub btnOK_Click()
    Unload MyForm
End Sub

そしてユーザーフォームを一旦開いて、コマンドボタンをクリックすると…

ユーザーフォーム,Hideメソッド

ユーザーフォームが閉じられましたね。

最後に

今回は、コマンドボタンのClickイベントDblClickイベントをご紹介しました。

今回ご紹介したように、ユーザーフォームの各コントロールのプロパティとイベントを使えば、様々な動作をさせることができますよ。

次回は、テキストボックスのプロパティとイベントをご紹介していきます。

それでは、最後までお読みいただき有難うございました!

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!

App Makerでテストアプリを作成したらCloud SQLはいくらの課金が発生するのか?

$
0
0
payment

photo credit: QuoteInspector.com Stacked quarters on wood with bokeh via photopin (license)

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

ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方についてシリーズでお伝えしています。

前回の記事はこちらでした。

App Makerでアプリを再公開して修正内容を反映する手順
ノンプログラマー向けにCloud SQLのはじめかた&App Makerアプリの作り方についてシリーズでお伝えしています。今回は、App Makerでアプリを再公開して修正内容を反映する手順をお送りします。

アプリとしては一通り完成したのですが、ちょっと気になることがありますよね。

そうです、Cloud SQLの課金です。

ということで今回は、App Makerでテストアプリを作成したらCloud SQLはいくらの課金が発生するのか?についてお伝えします。

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

App Makerを取り巻く課金について

では、シリーズの中でも触れてきていますが、App Makerを使うにあたり必要となるお金について、おさらいをしておきましょう。

G Suite Business以上の登録が必要

まず、App Makerを使用するためには、1アカウントあたり1360円/月のG Suite Business以上の登録が必要になります。

お支払いプラン | G Suite
G Suite のプランは、ユーザーあたり月額 とお手頃な価格でご利用いただけます。ご利用になるプランをお選びのうえ、G Suite のコラボレーション アプリや生産性向上アプリをご活用ください。

G Suite Basicの倍しますが、それだけでドライブの容量が無制限になり、かつApp Makerが使えるようになるわけですね。

Cloud SQLの利用に応じた課金が必要

これで、App Makerは使えるようになるのですが、データを格納するための「データベース」を使用するアプリを作りたい場合は、Cloud SQLが「ほぼ必須」になります。

そこをケチってスプレッドシートをデータベースに…という考え方もなくはないですが、その分、スクリプトをめちゃめちゃ書かないといけなくなります。

以下の記事ではじまるシリーズで紹介していますので、ご興味ある方はどうぞ。

App Makerでスプレッドシートをベースにモデルを作成する方法
Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。今回は、シリーズ初回としてApp Makerでスプレッドシートをベースにモデルを作成する方法をお伝えします。

で、「そのCloud SQLを使うにはいくらかかるんだ?」というのは、知りたいところですし、社内で偉い人に説明をしなくちゃいけません。

その課金体系は

  • インスタンスの料金: マシンタイプとリージョンにより1分ごとに課金される
  • ストレージの料金: 容量とストレージ種類に応じて課金される
  • ネットワークの料金: リージョンと下り容量に応じて課金される

の合算で算出されます。

…って、いくらや!?

ということで、今回テスト用の一番安いインスタンスですが、実際にいくらかかったかお知らせしますので、ご参考くださいませ!

Cloud SQLの利用料金は?

では、実際にCloud SQLの利用料金をお見せしましょう。

GCPでプロジェクトのお支払いを確認する

Google Cloud Platformのコンソールにログインします。

Google Cloud プラットフォーム
Google Cloud Platform では、Google と同じインフラストラクチャでアプリケーション、ウェブサイト、サービスを構築、導入、拡大することができます。

ダッシュボードにいろいろ表示されてますが、今回は「お支払い」のコーナーにある「請求の詳細を表示」を選択していきます。

GCPのダッシューボードから請求の詳細を表示

「レポート」のメニューから、お支払いについて色々なレポートが見られると思ったのですが、キャンペーンで相殺されてしまっているので、グラフは見られず…

GCPのお支払いレポート

Cloud SQLテストインスタンスの料金

仕方なく、「料金の履歴」から頑張って集計したのが過去3ヶ月の実績がコチラです。

App Makerで使用したCloud SQLのお支払い

だいたい、900~1000円/月くらいといったところですね。

条件としては以下のとおりです。

  • このプロジェクトはApp Makerのテストにしか使用していない
  • このプロジェクトは7月の途中に作成、以降停止せずにずっと稼働させてる
  • 以下記事でお伝えしているテスト用インスタンスを使用
ノンプログラマー向けApp Maker用のCloud SQLのインスタンスを作成する方法
ノンプログラマー向けにCloud SQLのはじめかた&App Makerアプリの作り方についてシリーズでお伝えしています。今回は、GCPコンソールでCloud SQLのインスタンスを作成する方法をお伝えします。

GCPのドキュメントでは、テストインスタンスの1ヶ月の費用は「$9」と算出されているので、だいたいそのとおりになっていますね。

Cloud SQL の料金  |  Cloud SQL ドキュメント  |  Google Cloud

テストをするのであれば、月1000円くらいがスタートと思って良さそうですね。

インスタンスを停止して価格を抑える

テスト期間の料金ですが、使用していないときはインスタンスを停止することで、料金を抑えることができます。

GCPのドキュメントによると「$3」になるとのこと。やってみる価値はありますね(私はやってませんが…)。

インスタンス停止の手順

では、インスタンスの停止の手順を見ていきましょう。

GCPコンソールから「ナビゲーショメニュー」→「SQL」または、「SQLダッシュボードへ移動」を選択します。

GCPコンソールでSQLダッシュボードへ

次に、停止したいインスタンスを選択します。今回は「app-maker-test」です。

GCPで停止するインスタンスを選択する

表示された「インスタンス詳細」画面の上部、「停止」をクリックすると「データベースインスタンスを停止しますか?」というダイアログが表示されますので、「停止」をします。

GCPでCloud SQLインスタンスを停止する

また、開発をするときは、インスタンスの詳細画面の上部で「開始」とすることで、再稼働をさせることができます。

停止や再稼働には、それぞれ数分かかりますが、コスト削減にはつながるので知っておいて損はないと思います。

本番ではいくらを想定しておけばよいのか?

実際、本番で使用するときはどうなんだ?というのが気になりますよね。

インスタンスの設定や、ストレージ容量に関しては、使用しながら変更することができます。

ですから、テスト用の一番低いところからスタートして、アプリの利用状況や効果に応じて、トライしながら調整をしていけば良いものと思います。

そして、それをトライアルで$300ドルがゲットできるので、その課金を使用して、徐々に本番に近いところまでテストをしてみるのが良いかと思います。

まとめ

以上、App Makerでテストアプリを作成したらCloud SQLはいくらの課金が発生するのか?についてお伝えしました。

テスト段階では、月1000円ほどを覚悟しておけば良さそうです。

そして、トライアルを使いながら徐々にトライ!

課金も気になりますが、UIも含めてノンコーディングでアプリを開発できるというのは、かなり価値が高い体験になると思いますので、ぜひ活用してみてください。

App Makerについては、また面白い事例が出てきましたら紹介していきますね。

どうぞお楽しみに!

連載目次:Cloud SQL&App Makerアプリ開発のはじめかた

App Makerを使うならデータベースはGCPのCloud SQLが第一の選択肢になりました。そこで、ノンプログラマー向けにCloud SQLのはじめかた&それによるApp Makerアプリの作り方を易しく丁寧にお伝えしていきます。
  1. はじめてのCloud SQLによるApp Makerアプリ開発、その概要と経緯と道筋
  2. Google Cloud Platform(GCP)に無料トライアル登録をする方法
  3. G Suite管理コンソールからApp Makerのデータベース設定を行う方法
  4. ノンプログラマー向けApp Maker用のCloud SQLのインスタンスを作成する方法
  5. App Makerのデータベースとして作成したCloud SQLのインスタンスを設定する方法
  6. App MakerではじめてのCloud SQLのモデルを作成する方法
  7. App MakerでCloud SQLをデータベースとしたテーブルをページに配置する方法
  8. App MakerでCloud SQLデータベースにデータ追加するフォーム作成する方法
  9. App Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解く
  10. はじめてのCloud SQLをデータベースとしたApp Makerアプリを公開する方法
  11. App Makerで使い回しパーツを作るPage Fragmentを作成するはじめの一歩
  12. App MakerでPage Fragmentによるヘッダーを各ページに配置する手順
  13. App MakerのPopupページでナビゲーションメニューを作成する方法
  14. App Makerでアプリを再公開して修正内容を反映する手順

【エクセルVBA】テキストボックスのプロパティで入力を便利にしよう

$
0
0

ユーザーフォーム,テキストボックス,プロパティ

皆様こんにちは、ノグチです。

エクセルのユーザーフォームを作って、VBAで動かす方法を連載記事でご紹介しています。

前回は、コマンドボタンのイベントとUnloadステートメントで、ユーザーフォーム上のコマンドボタンをクリックしたらフォームを閉じる、という方法をご紹介しました。

【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法
エクセルのユーザーフォームを作成したり、VBAで操作する方法を連載でご紹介しています。本稿では、コマンドボタンのClickイベントとDblClickイベントのご紹介と、Clickイベントでユーザーフォームを閉じる方法を説明しています。

今回からは、フォーム上の各コントロールのプロパティやイベントをご紹介していきます。

本稿では、テキストボックスのプロパティをご紹介していきますよ!

前回までのおさらい

前回までの記事で作成したユーザーフォームがこちら。

ユーザーフォーム,オブジェクト名

ユーザーフォームにコントロールを配置して、コマンドボタンのClickイベントで、コマンドボタンををクリックしたらフォームを閉じる、という状態にしているのでした。

テキストボックスのプロパティ

テキストボックスを便利に使えるように、プロパティでオブジェクト名や文字の大きさ、配置などを設定していきましょう。

プロパティは数多くありますが、その中でも使うことが多いものをいくつかご紹介します。

オブジェクト名をつける

まずは、テキストボックスをVBAで扱いやすくするために、オブジェクト名をつけてしまいましょう。

テキストボックスも、オブジェクト名に任意の名前を付けることができますよ。

テキストボックスのプロパティシートを開いて、「(オブジェクト名)」という項目の値が、VBAでこのテキストボックスを操作する際に使うオブジェクト名になります。

テキストボックス,オブジェクト名

今回は、「TextItem」という名前にしました。

Fontプロパティでフォントを設定する

Fontプロパティで、テキストボックスに表示される文字のフォントや、大きさを変えることができます。

プロパティシートの「Font」という項目の右端にあるボタンをクリックすると、フォント設定のウインドウが表示されます。

テキストボックス,Font

このウインドウ上で、フォントや文字の大きさ、斜体や太字といったスタイルも設定することができますよ。

画像では、初期値のフォントサイズは「9」となっていますね。

「9」では、今回のユーザーフォーム上に配置したテキストボックスのサイズに対して小さすぎるので、フォントサイズを「14」に変更してみましょう。

フォントサイズを変更して、ユーザーフォームを開いてテキストボックスに文字を入力してみると…

テキストボックス,Font,変更後

このように、テキストボックスに表示される文字の大きさが変更されて、テキストボックスの大きさに対して丁度いい感じになりました。

TextAlighnプロパティで文字の配置を設定する

TextAlignプロパティで、テキストボックスに表示される文字列の位置を設定することができます。

テキストボックス,textalighn

プロパティシートの「TextAlighn」項目の値を、下記3つのいずれかから選択します。

指定する値 設定内容
fmTextAlignLeft テキストボックスの文字列を左揃え表記にする
fmTextAlignCenter テキストボックスの文字列を中央揃え表記にする
fmTextAlignRight テキストボックスの文字列を右揃え表記にする

MaxLengthプロパティで入力できる文字数を制限する

MaxLengthプロパティで、テキストボックスに入力する文字数を制限することもできますよ。

プロパティシートの「MaxLength」の値に数値を指定すると、全角半角の区別なく、指定した数までしか文字を入力できないようにすることができます。

例えば、「10」と指定すれば、そのテキストボックスには10文字までしか入力できなくなるのです。

郵便番号のように、桁数が決まっているような項目の場合は、このプロパティを使うと良いかもしれません。

ControlTipTextプロパティでフォーム上にテキストを表示する

テキストボックスにマウスカーソルを合わせた時、ちょっとしたメッセージを表示させるようにできるのが、このControlTipTextプロパティです。

プロパティシートの「ControlTipText」の値に、ユーザーフォーム上に表示したい文字列を指定すると…

このように、テキストボックスにフォーカスがあたると、プロパティシートで指定した文字列が表示されます。

テキストボックスに入力して欲しい値の補足を表示してあげるなど、ちょっとしたヘルプ機能として使えますね。

TabStopプロパティでフォーカスを当てるかどうかを設定する

フォーム上でキーボードのEnterキーやTabキーを押すと、フォーカスをフォーム上のコントロール間で移動させることができます。

TabStopプロパティは、このキーボードのEnterキーやTabキーを押したときに、そのテキストボックスにフォーカスをあてるかどうかを設定するプロパティです。

例えば、フォーム上に必須入力項目と、任意入力の項目があったとします。

フォーカスが当たるのは必須項目だけにしたい…というときにプロパティシート上でTrueを指定すれば、そのコントロールにはフォーカスがあたるようになりますし、Falseを指定すればキーボードのEnterキーやTabキーでのフォーカス遷移からは除外されますよ。

テキストボックス,tabstop

TabIndexプロパティでフォーカスの順番を制御する

TabStopプロパティとセットで設定しておきたい、TabIndexプロパティ。

このプロパティは、フォーム上でキーボードのEnterキーやTabキーを押した時の、フォーカスが当たる順番を指定するものです。

例えば、フォーム上に3つテキストボックスがあって、1番目のテキストボックス、3番目、2番目…という順番でフォーカスが当たってほしい場合。

3つのテキストボックスそれぞれのTabIndexプロパティに、フォーカスが当たってほしい順番を指定すれば、でキーボードのEnterキーやTabキーを押した時に指定した順番でコントロールを遷移させることができます。

テキストボックス,tabindex

このプロパティで指定するフォーカスの順番はテキストボックス以外のコントロールとも共通なので、順番をつける際は注意が必要ですね。

フォーム上に複数項目がある場合は、TabStopプロパティとTabIndexプロパティで入力のしやすさをぐっと向上させることができますので、是非使っていただきたいプロパティです。

タブオーダーで纏めてフォーカス順を設定する

コントロール1つずつTabIndexプロパティで順序を指定するのは、はっきり言って面倒臭すぎますよね。

実は、フォーム上のコントロールのTabIndexプロパティは、タブオーダーで纏めて設定することができます。

フォーム上で右クリック>「タブオーダー」を選択すると、フォーム上のコントロールが全て表示された、タブオーダーの画面が開きます。

コントロール,タブオーダー

この画面上で、フォーカスがあたる順序を変えたいコントロールを選択し、右側にある「上に移動」「下に移動」ボタンでリスト上の順番を変えることができます。

タブオーダー

リストに表示されている順序が、そのままフォーカスがあたる順序になりますので、各コントロールのTabIndexプロパティを一つずつ更新していくよりも楽且つ、分り易いですね。

最後に

今回は、テキストボックスのプロパティをご紹介しました。

一見、プロパティシート上では項目が沢山並んでいて、しかも英語表記なので、「設定が難しいのでは…」と思ってしまうかもしれません。

しかし、ユーザーフォームの使いやすさ、特に項目への入力のし易さを求める場合、今回ご紹介したプロパティを使ってみると良いかもしれませんよ。

次回記事では、テキストボックスのイベントをご紹介していきます。

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

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
  3. 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法

書籍「パーフェクトExcel VBA」発売についてのお知らせ

$
0
0

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

パーフェクトExcel VBA」が技術評論社さまから、いよいよ発売となります!

11/25発売予定で、Amazon・楽天ブックスでは予約が可能となっております。

さて、本ページですが、書籍「パーフェクトExcel VBA」の様々な情報を発信していく特集ページです。

お知らせ、関連記事、書評のご紹介など随時更新していきますので、どうぞよろしくお願いいたします。

「パーフェクトExcel VBA」とは

本書は、VBAの構造と体系を基礎から徹底的に大解剖をしている本格的な解説書です。

本書は、以下のような背景から生まれています。

私はこれまで何年かかけて、いくつかの書籍を活用してVBAを学んできていますが、VBAの体系や法則に触れながら、一気通貫して学べるものはありませんでした。

「クラス」とは何か、「VBA関数」とは何か、「メソッド」や「プロパティ」とは何か、そういうものが存在していること、そしてその使い方以上の理解はなかなか得られません。

なぜ「Propertyプロシージャ」は紹介されていないのか、体系をつかむという視点では疑問に思います。

そんな問い受けて、VBAの体系や考え方の全貌が一気通貫して学べる解説書を書きたいと思いました。

なぜ、Excel VBAの本格解説本を書く必要があるのか
3冊目となる書籍の企画が通過しました。Excel VBAの本格解説本です。なぜあえて今からVBAの本格解説本を書く必要があるのかについて、出版社さんに企画の際に送った文面をだいたいそのまま記事として公開します。

上記の問いに対して、本書「パーフェクトExcel VBA」の全14章、576ページの中で、すべての答えを出せたはずです…!!

そして、少しでもVBAに興味ある方、使っていらっしゃる方は手にとってみてください。

・これからのVBAの学習コストがめちゃめちゃ下がる
・VBAの構造が腑に落ちる、全体像が見渡せる、見通しが良くなる
・あちこちに存在する落とし穴にハマらなくなる
・どこに何を書けばいいかわかる、迷わなくなる
・リーダブルでメンテンナスしやすいコードがかける

こんな、新しいVBAの世界を体験いただけるようになると思います。

目次一覧

  • Part1 Excel VBA~overview
    • 1章 イントロダクション――VBAの概要
  • Part2 Excel VBAの言語仕様
    • 2章 式と値
    • 3章 ステートメント
    • 4章 制御構造
    • 5章 プロシージャ――手続きに名前をつける
    • 6章 モジュール――プログラムを部品ごとにまとめる
    • 7章 プロジェクトとライブラリ
  • Part3 ライブラリ
    • 8章 VBAライブラリその1――VBA関数
    • 9章 VBAライブラリその2――コレクション
    • 10章 配列の操作
    • 11章 Excelライブラリ
    • 12章 MSFormsライブラリ
    • 13章 Scriptingライブラリ
  • Part4 実践Excel VBAプログラミング
    • 14章 アプリケーション開発

近況

11/25発売予定です!!

Amazon、楽天ブックスなどで予約が可能ですので、こちらからどうぞ!

技術評論社さまのページはこちらです。

パーフェクトExcel VBA
VBAは,表計算ソフトExcelがインストールされていれば,開発環境の準備といった技術的なハードルも低く,気軽に使用できるプログラミング言語です。ITエンジニアだけでなく,すべてのビジネスマンに門戸を開き,その仕事の価値を高めるチャンスを提供している,希少なプログラム言語の一つです。そして一般的にはプログラミング初心者...

書評募集中!

書評を書いていただけるライターさん、ブロガーさん、いらっしゃいましたら、ぜひタカハシ(@ntakahashi0505)までご連絡を頂ければと思います。

書評については本ページについて紹介をさせていただきます。

ドシドシ、お願いします!

書籍「パーフェクトExcel VBA」関連記事

書籍「パーフェクトExcel VBA」に関連して、本書自体や、執筆に関する裏話や出来事、ノウハウ、イベントレポートなどを連載していきます。
  1. 書籍「パーフェクトExcel VBA」発売についてのお知らせ
  2. なぜ、Excel VBAの本格解説本を書く必要があるのか
  3. 11/25発売「パーフェクトExcel VBA」のまえがきを全文無料公開
その他、本書に関する情報を随時更新していきますね。 どうぞお楽しみに!

ノンプロ研初心者講座GASコース第3期でチャレンジしたこと、学んだこと

$
0
0
study

photo credit: Filippo M. Conte Dawn via photopin (license)

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

「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。

先日開催された定例会は「初心者講座GAS第3期卒業LT大会」ということで、初心者プログラミング講座GASコースの第3期に参加された皆さんに登壇いただきました!

GASの初心者講座ももう3回も終えたんですね~感慨深いです。

ということで、ノンプロ研初心者講座GASコース第3期でチャレンジしたこと、学んだことについてお伝えします。

ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

ノンプロ研定例会Vol.24「初心者講座GAS第3期卒業LT大会」
今回は、「ノンプロ研初心者講座GASコース第3期」の卒業発表LT大会です!講座を受講された皆さん(できる限り全員)に5~10分程度のLTプレゼンにより講座参加の成果を発表していただくという素敵企画..

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

ノンプロ研講座の新しい取り組みとは

この初心者講座GASコース第3期は、実は初のチャレンジもありました。

講師を、ノンプロ研のGASの守り人 etauさんにお願いしたんです。

それで、私は最高に良い指導を展開してくださった yusaさんとともに、TA(ティーチング・アシスタント)を担当させていただきました。

受講者数は17人、うちリモート(札幌、福岡、香港(!))が3名。

今回のイベントでは、講師のetauさんをはじめ、9名の皆さんにLTをしていただきました。

そしてなんと、札幌から TSUJI KENZO さんもご登壇、もういつもSlackでは盛り上げていただいているのですが、わざわざ足を運んでくださって…ほんと感謝!

マルセイのバターサンド、最高です。今度、お寿司食べに行きます。

他言語の習得のススメ

ノンプロ研で神と崇められている セラエノ さんはじめ、今回は「複数のプログラミング言語」に言及される方が多かったと思います。

私の知る限り、今回登壇された9名の皆さんのうち、7名もの方が複数の言語について講座に参加したり関わっていたりします。

すごい。

私もそれは良いと思っていて、例えばVBAしか学んでない方は、「クラス」や「オブジェクト」、あとは「配列」の概念を学ぶ機会が少ないと感じています。

(そういうこともあり、「パーフェクトExcel VBA」の執筆に至ったのですが、それはまた別の話)

一方で、GASを学ぶと「配列」の習得は必須です。しかし、スコープの概念を学ぶには、「Public」「Private」など明確なキーワードを持っているVBAのほうがわかりやすかったりします。

Pythonを学ぶと、クラスの話は、比較的多くの書籍で語られますが、泥臭いロジックに取り組む機会に恵まれなかったりします。

二言語目の学習コストは低いですし、「プログラミング」の知識習得の上では、各言語の知識の差分が補完し合うことになります。

ちょっと前を行っている先輩が熱量を込めて教える

冒頭でもお伝えしましたが、講師やTAを、フレッシュな方にお願いするのはとても良いと思いました。

というのも、やはり私一人で同時に受け持てる講座は、せいぜい1~2本が限界なんです。

もっと多くの講座を開催しようと思ったら、私以外の誰かにお願いするしかない。

そういう意味では、講師ができる方を増やすのは、「日本の働く価値を上げる」をモットーにしている弊社としては、当然の動きであります。

また、今回etauさんは、すごく過去の動画を研究されたとおっしゃってました。

教える立場になると、またさらに学ぶ必要があり、より一層の学びがあるわけです。

ここは賛否あると思うのですが、たとえ荒削りだったとしても、一生懸命学んだ上でのギリギリのアウトプットには、その時点でしか出せない独特のエネルギーがある気がします。

ブログを書いてて思うのですが、慣れ親しんだこをを、「これ、すげー!」って熱量込めて伝えるのって、すごく難しくて、どうしても淡々としてしまうのです。それと一緒かなと思っています。

もちろん、熟練のプロが提供する講座はもちろん価値が高いと思うのですが、コミュニティであるノンプロ研的には、ちょっと前を行っている先輩が、熱量込めて「すげー感動するから、一緒にやろうよ!」と手を差し伸べる、そんなスタイルが心地良いかなと思っています。

まとめ

以上、ノンプロ研初心者講座GASコース第3期でチャレンジしたこと、学んだことについてお伝えしました。

というわけで、ノンプロ研講座については、初心者Pythonコースと中級VBAコースが第1期で進んでおります。

そして、1月から中級GASコースが開催されます。

さらにさらに、1月から初心者講座のVBA・GAS・Pythonのいずれかを開講を目指して、仮申込受付中です。

詳しくはこちらへどうぞ。

コミュニティ連携型!ノンプロ向けプログラミング講座開講のお知らせ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」と連携した、VBAおよびGoogle Apps Script初心者講座(全6回)を開催させていただくことになりましたのでお知らせします。

ということで、引き続きノンプロ研講座、良い学びの場を提供すべく頑張っていきますので、どうぞよろしくお願いいたします!

「ノンプログラマーのためのスキルアップ研究会」について

コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。
コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」(略して「ノンプロ研」)。このページはその活動レポートまとめページです。コミュニティ活動の一気読みをされたい方、ぜひご活用くださいませ。
ぜひ、皆様のご参加をお待ちしております!
コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。

Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識

$
0
0

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

csvファイルをスプレッドシートに展開したいときってどうしてますか?

スプレッドシートでは、「ファイル」メニューのインポートからcsvファイルをアップロードして、展開することができるのですが

  1. メニュー選んで…
  2. アップロードタブ開いて…
  3. ファイルをアップロードして…
  4. インポートの設定してデータをインポート

みたいに、ちょっと手順がありまして、頻繁に行う作業だとすると、ちょっとだけ面倒です。

そこで、本シリーズでは、GASの独自ダイアログを作成する機能を使って、csvファイルアップローダーを作る方法をお伝えします。

csvアップロードの手順が減らせますし、他の処理を追加することもできます。

シリーズ初回の今回は、GASでダイアログの作るためのいくつかの方法とその概要についてをお送りしていきます。

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

ダイアログとは

ダイアログというのは、G Suiteのアプリケーションで作成して、作業画面で表示できるポップアップ画面のことです。

例えば、今回のシリーズで目標とするファイルアップローダーであれば、このような画面です。

GASのダイアログで作るファイルアップローダー

ダイアログは一般的には「モーダル」という表示形式で、表示中は他の操作ができないようになっています。

ファイルアップロードが終わったり、「×」ボタンを押すと、ダイアログが閉じて、他の作業ができるようになります。

ダイアログを作れるサービス

GASでダイアログを作成できるのは、以下の4つのサービスです。

  • スプレッドシート
  • ドキュメント
  • スライド
  • フォーム

作成する場合は、上記サービスのコンテナバインドスクリプトで作る必要がありますよ。

GASでダイアログを作成するいくつかの方法

ちょっと詳しい方なら、「え?ダイアログなら、BlowserクラスのmsgBoxメソッド&imputBoxメソッド、またはUiクラスのalertメソッド&promptメソッド使えばいいじゃん」と思われると思います。

ですが、これらのメソッドにはいくつかの制約があります。

Blowserクラスはスプレッドシート専用

なのですが、まずBlowerクラスは、「スプレッドシート専用」です。

ドキュメントやスライド、フォームでは使用できませんので、同じことをやるのであれば、他のサービスでも汎用的に使用できるUiクラスのメソッドを使うのが有効です。

Uiクラスのalertメソッドとpromptメソッド

例えば、メッセージを表示したい場合は、Uiクラスのalertメソッドを使って

function alert()
{
  var ui = SpreadsheetApp.getUi();
  var title = 'Hello, dialog';
  var prompt = 'ダイアログを確認したらボタンを押してください'
  ui.alert(title, prompt, ui.ButtonSet.YES_NO);
  SpreadsheetApp.getUi().prompt('何か入力してみて');
}

として、これを実行すれば、こんなメッセージダイアログを表示できます。

GASのUiクラスのalertメソッドで表示したダイアログ

また、テキストを入力してもらいたい場合は

function prompt(){
  
  var ui = SpreadsheetApp.getUi();
  var title = 'Hello, dialog';
  var prompt = '何か入力してみてください'
  ui.prompt(title, prompt, ui.ButtonSet.OK_CANCEL);

}

とすれば、以下のような入力ダイアログを表示することができます。

GASのUiクラスのpromptメソッドで表示したダイアログ

alertメソッドやpromptメソッドは、簡単にダイアログが作れるのですが、それぞれメッセージの表示とテキストの受け付けしかできません。

また、ボタンの配置も、いくつか用意されている固定のものなんですね。

なので、ファイルを選択してアップロードするとか、チェックボックスやプルダウンで選択するといった、複雑な操作はできません。

今回やりたいのはダイアログでcsvファイルをアップロードすること…どうしたら実現できるでしょうか?

HTMLサービスを使ってダイアログを作る

そんなときのために、GASではHTMLサービスを使ってダイアログを作るという方法が用意されています。

HTMLファイル(.html)を用意して、そこに「ファイル選択」と「ボタン」を部品として配置します。

表示したダイアログで、ファイルを選択して「アップロード」ボタンを押すことで、GASにファイルを渡し、スプレッドシートに展開する…そんなことが実現できるわけです。

ですから、プロジェクトの構成としては以下のようになります。

  • index.html: 部品を配置して画面を作る&ボタンを押したらサーバー側にファイルを渡す
  • main.gs: 受け取ったcsvファイルを解析してスプレッドシートの展開する

意外とできそうですね!

まとめ

以上、今回はGASでダイアログを作成する場合の基礎知識と、ファイルアップローダーを作成するための方向性についてお伝えしました。

次回から、いよいよファイルアップローダーを具体的に作成していきますよ。

GASで最も簡単なHTMLサービスによるダイアログを作成する方法
Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。今回は、GASで最も簡単なHTMLサービスによるダイアログを作成する方法をお伝えします。

どうぞお楽しみに!

連載目次:GASのダイアログでcsvファイルアップローダーを作ろう

Google Apps Scriptでダイアログを作成する方法はいくつかありますが、HTMLサービスとUiサービスを組み合わせると自由で多機能なダイアログが作れます。このシリーズではそんなダイアログの作り方を易しく紹介していきます。
  1. Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識
  2. GASで最も簡単なHTMLサービスによるダイアログを作成する方法

GASで最も簡単なHTMLサービスによるダイアログを作成する方法

$
0
0

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

Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。

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

Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識
GASの独自ダイアログを作成する機能を使って、csvファイルアップローダーを作る方法をシリーズでお伝えします。今回は、GASでダイアログの作るためのいくつかの方法とその概要についてをお送りしていきます。

GASでダイアログを作成するための基礎知識についてお伝えしました。

いよいよダイアログを作成していきますよ。

今回は、GASで最も簡単なHTMLサービスによるダイアログを作成する方法をお伝えします。

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

プロジェクトを準備する

では、まずプロジェクトを作成していきます。

前回お伝えした通り、ダイアログを作成するにはコンテナバインドスクリプトである必要があります。

今回は、アップロードしたcsvファイルはスプレッドシートに展開したいので、スプレッドシートのコンテナバインドスクリプトを作成していきます。

スプレッドシートの「ツール」メニューから「スクリプトエディタ」ですね。

スプレッドシートからスクリプトエディタを開く

すると、スクリプトエディタが開きますので、プロジェクト名をクリックして「FileUploader」などと編集しておきます。

GASのプロジェクト名をFileUploderに変更する

HTMLファイルを作成する

今回作成するファイルアップローダーのダイアログはHTMLファイルを使用して作成していきますので、プロジェクトの新しいHTMLファイルを作成します。

スクリプトエディタの「ファイル」メニューから「New」→「HTMLファイル」とたどります。

GASでHTMLファイルを作成する

すると、「Create File」というダイアログが開きますので、ファイル名を「dialog」などとして「OK」です。

GASで作成するHTMLファイルの名前を決める

これで、以下のように「dialog.html」というHTMLファイルがプロジェクトに追加されます。

GASのプロジェクトに追加したHTMLファイル

HTMLファイルを作成した場合、ご覧の通り、ある程度のコードが作成されてますね。

ダイアログを表示する

では、続いて「コード.gs」のほうにスクリプトを作成して、この「dialog.html」をダイアログとして表示してみましょう。

以下の関数showDialogを作成して実行します。

function showDialog(){
  var html = HtmlService.createHtmlOutputFromFile('dialog');
  SpreadsheetApp.getUi().showModalDialog(html, "CSVアップロード");
}

いくつか認証に関するウィンドウが開くと思うので、認証を進めてください。

実行後、ブラウザでスプレッドシートのタブに切り替えると、以下のようにダイアログが表示されているはずです。

GASのHTMLサービスによる最も簡単なダイアログ

HtmlOutputオブジェクトを作成する

まず、2行目は「HtmlOutputオブジェクト」というHTMLを表示するためのオブジェクトを生成するところです。

HTMLファイルを引数にして、HtmlServiceのcreateHtmlOutputFromFileメソッドを使用します。

HtmlService.createHtmlOutputFromFile(ファイル名)

このあたりは、以下の記事もご参考ください。

GASでWebページを表示するdoGet関数のスクリプトについて丁寧に解説
GASユーザーのためのHTML・CSSによるWebページ制作入門を伝えしています。今回は、GASでWebページを表示するdoGet関数のスクリプトとその仕組について丁寧に解説をしていきますよ!

HtmlOutputオブジェクトをダイアログとして表示する

これにより生成したHtmlOutputオブジェクトを、スプレッドシートのUiオブジェクトに「ダイアログとして表示してくださいな」と渡すことで、ダイアログを表示することができます。

まず、スプレッドシートのUiオブジェクトはのgetUiメソッドで取得できます。

SpreadsheetApp.getUi()

そして、UiオブジェクトにHtmlOutputオブジェクトを渡してダイアログとして表示してもらうメソッドがshowModalDialogメソッドです。

Uiオブジェクト.showModalDialog(HtmlOutputオブエジェクト, タイトル)

実は、この一連の命令は、サイドバーを作成するときのそれととても似ています。

ぜひ、合わせてマスターすると良いと思います。

Google Apps Scriptで最も簡単なサイドバーを作成する方法
Google Apps Scriptでサイドバーを作る方法についてシリーズでお伝えしております。今回は、新規のプロジェクトの作成から最も簡単なサイドバーをドキュメントに表示するところまでを紹介します。

まとめ

以上、GASで最も簡単なHTMLサービスによるダイアログを作成する方法をお伝えしました。

文中でもお伝えしましたが、サイドバーの作り方とかなり類似していますので、合わせて覚えていくと良いと思います。

次回は、ダイアログの部品を作っていきます。

どうぞお楽しみに!

連載目次:GASのダイアログでcsvファイルアップローダーを作ろう

Google Apps Scriptでダイアログを作成する方法はいくつかありますが、HTMLサービスとUiサービスを組み合わせると自由で多機能なダイアログが作れます。このシリーズではそんなダイアログの作り方を易しく紹介していきます。
  1. Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識
  2. GASで最も簡単なHTMLサービスによるダイアログを作成する方法

11/25発売「パーフェクトExcel VBA」のまえがきを全文無料公開

$
0
0
preface

photo credit: marianbijlenga via photopin (license)

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

さて、本記事を執筆しておりますのが2019/11/18です。ちょうど一週間後の11/25に「パーフェクトExcel VBA」が発売されます。

今回、出版をお願いしております技術評論社さまのご厚意により、当ブログに「パーフェクトExcel VBA」のまえがきを全文掲載しても良いと許諾をいただきました。

これで、Amazonや楽天ブックスで注文される方も、事前予約されるかたも、その判断材料である「まえがき」をしっかり読んで購入検討できるというもの…

ということで、本記事では「パーフェクトExcel VBA」のまえがき全文を掲載させていただきますね。

まえがきには、以下のようなことをコンパクトにまとめてお伝えしていますので、ぜひご一読くださいませ。

  • 現在のExcel VBAを学ぶ環境と、その抱えている課題
  • その課題を解決するためにVBAユーザーにどのような「再学習」を提案しているのか
  • その提案に基づく本書の構成と読み方、そして得られるもの

そして、興味あるな!と思われたら、手にとっていただければ幸です。

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

まえがき

Excel VBAをスキルとして身につけたいというのであれば、大きな書店やAmazonを覗けば分かるとおり、とてもたくさんの中から書籍を選ぶことことができます。Excel VBAに関して調べたいことがあれば、Googleで検索をすることで多くの解決策を見出すことができます。

私自身、これまでExcel VBAを学ぶ過程でそれらの情報源を大いに活用させていただきましたし、今も活用させていただいています。それにより、Excelを中心とした様々な作業の自動化を実現でき、VBAとそのスキルは「働く」の心強い右腕として力を発揮してくれています。

しかし、学習を進めていくにしたがって、VBAには他のプログラミング言語では、それほど目立たない、いくつかの「弱点」があるように見えてきました。

  • 理解があやふやなのに動いてしまっているため、エラーや仕様変更が発生したときの対応に大変な労力がかかる
  • 同じ目的に対して、それを実現するための書き方がいくつも存在していて混乱する
  • たくさんの「自己流」が存在していて、他のVBAユーザーとの協力体制を築きづらい
  • クラスやオブジェクトモジュールなどの概念について学ぶ機会がないため、他の方法で実現してしまっている

なぜ、このような弱点が生まれるかというと、それはVBAという言語の特性であったり、VBAの主なユーザーが専門のプログラマーではないことが多いという事実であったり、様々な要素に起因していると考えています。

この問題を解決するために、本書は以下のステップでVBAというプログラミング言語を再学習することを提案します。

  1. 言語としてのVBAとその学習環境の特徴を知る
  2. プログラミング言語VBAの体系を学習の土台として整える
  3. その土台の上に、主要なライブラリについての知識を乗せ直す

VBAはプログラマーではない多くの方も活用されているので、「初心者向けの簡単に身につけられる言語」と捉えられがちですが、決してそうではありません。まずは、その事実を確認しつつ、学習をする上での心構えを整えます。その役割は1章が担っています。

その上で、値、式、ステートメント、プロシージャ、モジュール、プロジェクトとライブラリという、言語を構成するレイヤーを正しく理解して、言語の構造と体系を理解します。多くの場合、プロシージャやモジュール、ライブラリといった上位レイヤーの理解が不足がちです。しかし、皆さんがExcel VBAを使う目的は、セルやワークシートを操作すること、つまり「Excelライブラリ」の活用です。ライブラリとは何か、どのように作られているのかといった理解は、「Excelライブラリ」について理解を深め、その活用をする上で道標のような役割を果たします。2章から7章までは、下位の小さなレイヤーから最上位のレイヤーまで順番に理解していただくように構成しています。土台を作ることが最大の目的なので、読み飛ばしをせずに、すべてのコードを写経し、理解してください。

8章以降は、主要なライブラリの紹介をします。ライブラリがどういう構成になっているか、また主なクラスやモジュールを使う際のポイントとともに、リファレンス的に主なメンバーとその紹介をしています。紹介しているライブラリはいずれも重要なものなので、すべてをご覧いただければと思います。

しかし、本書は「パーフェクトExcel VBA」というタイトルはついていながらも、ライブラリに含まれるすべてのメンバーとその使い方を網羅的に掲載することはしていません。

VBAの体系が土台として身についているのであれば、効果的に知識を取り入れ、活用することができるため、その役割はMicrosoftによる公式ドキュメント、既存のWebページ、および逆引き辞典などにお任せしています。

14章は、アプリケーション開発の例を紹介しています。13章までの知識の実務への活用イメージを持っていただくとともに、実際に活用するからこそ出てくる問題やその解決の考え方についても触れています。

お手にとっていただいたとおり、本書を読破し、土台を整えて、知識を取り入れるには、それなりの時間を要するものと思います。しかし、それを乗り越えた先、Excel VBAの学習と活用にかかる労力は大きく軽減でき、新たなExcel VBAの世界を魅力的に感じていただけるはずです。

本書を活用することで、ひとりでも多くのExcel VBAユーザーの学習時間、活用時間の価値が高まってくれることを期待しています。

2019年10月 著者

書籍「パーフェクトExcel VBA」関連記事

書籍「パーフェクトExcel VBA」に関連して、本書自体や、執筆に関する裏話や出来事、ノウハウ、イベントレポートなどを連載していきます。
  1. 書籍「パーフェクトExcel VBA」発売についてのお知らせ
  2. なぜ、Excel VBAの本格解説本を書く必要があるのか
  3. 11/25発売「パーフェクトExcel VBA」のまえがきを全文無料公開
その他、本書に関する情報を随時更新していきますね。 どうぞお楽しみに!

GASのダイアログで作成するファイルアップローダーの部品を配置する方法

$
0
0

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

Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。

前回の記事はこちら。

GASで最も簡単なHTMLサービスによるダイアログを作成する方法
Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。今回は、GASで最も簡単なHTMLサービスによるダイアログを作成する方法をお伝えします。

GASで最も簡単なHTMLサービスによるダイアログの作り方を紹介しました。

まあ、のっぺらぼうですけどね。

なので、今回は、ダイアログに要素を乗っけていきたいと思います。

ということで、GASのダイアログで作成するファイルアップローダーの部品を配置する方法です。

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

前回のおさらい

前回作成した、のっぺらぼうのダイアログはこちらですね。

GASのHTMLサービスによる最も簡単なダイアログ

GASで、このダイアログを表示するのは、以下のスクリプトになります。

function showDialog(){
  var html = HtmlService.createHtmlOutputFromFile('dialog');
  SpreadsheetApp.getUi().showModalDialog(html, "CSVアップロード");
}

プロジェクト内のHTMLファイル「dialog.html」をダイアログとして表示するスクリプトになりますね。

それで、そのHTMLファイルは現時点では、新規作成したときの初期状態で、以下のような内容でした。


  
    
  
  
    
  

なので、今回はこのHTMLファイル「dialog.html」を、ファイルをアップロードできるように要素を追加していきたいと思います。

こちら、初期状態に挿入されているタグがどういう意味を持つものなのか…それについては、以下の記事で復習をよろしくお願いいたします。

Google Apps Scriptでサイドバーを作るための初めてのHTML基礎知識
Google Apps Scriptでサイドバーを作る方法をお伝えしています。今回は、GASでサイドバーを作るための初めてのHTMLの基礎知識として、HTMLの記述やタグの基本について解説します。

ファイルアップローダーのHTMLファイルを作る

目指すダイアログは以下のようなものです。

GASのダイアログで作るファイルアップローダー

「ファイル選択」というボタンと、「アップロード」というボタンですね。

この2つをファイルアップローダーの部品として追加してきます。

ボタン

ボタンを作るタグはbuttonタグですね。

<button>ボタンの表示内容</button>

ですから、こいつを2つセットすればOK…と思いきやそうはいきません。

「アップロード」のほうは

で、良いのですがファイルアップロードは実は、それとは別の表現が用意されています。

ファイルアップロードボタン

ファイルアップロードボタンを作成するには、実はinputタグを用います。

type属性を「file」にするのです。

<input type=”file” >

ファイルアップローダーの部品配置を確認する

ということで、「dialog.html」を以下のように変更して、コード.gsのshowDialogを実行してみましょう。


  
    
  
  
          
     
  

スプレッドシートには、以下のダイアログが表示されます。

GASで作成するファイルアップローダーダイアログ

少ししかコードを追加していないにも関わらず、いい感じですね!

まとめ

以上、GASのダイアログで作成するファイルアップローダーの部品を配置する方法についてお伝えしました。

ファイルアップロードの部品、type属性をちょろっと変えるだけで作れるんですね。

便利ですね。

さて、次回はボタンを押したときの動作を作っていきます。

どうぞお楽しみに!

連載目次:GASのダイアログでcsvファイルアップローダーを作ろう

Google Apps Scriptでダイアログを作成する方法はいくつかありますが、HTMLサービスとUiサービスを組み合わせると自由で多機能なダイアログが作れます。このシリーズではそんなダイアログの作り方を易しく紹介していきます。
  1. Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識
  2. GASで最も簡単なHTMLサービスによるダイアログを作成する方法

【エクセルVBA】テキストボックスでよく使う3つのイベントを使ってみよう

$
0
0

テキストボックス,アイキャッチ

皆様こんにちは、ノグチです。

ユーザーフォームを作成して、使ってみることを目標に、ユーザーフォームのプロパティやイベントを、連載形式でご紹介しています。

【エクセルVBA】テキストボックスのプロパティで入力を便利にしよう
エクセルのユーザーフォームを作って、使ってみることを目標に、フォームやコントロールのプロパティやイベントをご紹介しています。今回はテキストボックスのプロパティをいくつかご紹介しています。プロパティの設定によってユーザーフォームの使い勝手は大きく変わってきますよ!
今回は、テキストボックスのイベントをいくつかご紹介していきますよ。

前回までのおさらい

前回までに作成したユーザーフォームがこちら。

ユーザーフォーム,オブジェクト名

前回の記事では、このフォームの上側のテキストボックスのプロパティを変更したのでした。

今回は、同じくフォーム上側のテキストボックスのイベントを使ってみましょう。

テキストボックスのイベント

テキストボックスにも、便利に使えるイベントが多く用意されています。

そのイベントの中で、使いどころが多そうな、EnterExitChangeの3つをご紹介します。

コントロールのイベントに対応したプロシージャをVBEで開く方法は、こちらの記事の「イベントに対応したイベントプロシージャを開く」でご紹介していますので、併せてご覧ください。

【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
エクセルの便利機能、ユーザーフォームの作り方と使い方を、連載記事でご紹介しています。今回は、ユーザーフォームにラベルやテキストボックスといったコントロールを追加する方法と、作成したユーザーフォームをワークシートから呼び出す方法をご紹介しています。

Enterイベント:テキストボックスにフォーカスが当たるとき

まず、Enterイベントからいきましょう。

Enterイベントは、テキストボックスにフォーカスが当たったタイミングで実行されるイベントです。

ユーザーフォームが開いたとき、このEnterイベントがセットされているテキストボックスに最初にフォーカスがあたっている場合は、処理の順番をざっくり言うと、ユーザーフォームの読み込み、初期処理→フォーカスがあたっているコントロールのEnterイベントの処理、となります。

テキストボックスにフォーカスがあたったら背景色を変える

Enterイベントに、テキストボックスにフォーカスが当たったらテキストボックスの背景色を変える、という処理をセットしてみましょう。

テキストボックスの背景色は、BackColorプロパティを使って変えることができますよ。

コードはこちら。

Private Sub TextItem_Enter()
    With TextItem
        .BackColor = RGB(255, 0, 0)
    End With
End Sub

テキストボックスにフォーカスが当たったら、背景色を赤色に変える、というコードです。

実際に使ってみましょう。

ユーザーフォームを開いて、下のテキストボックスにあたっているフォーカスを、上のテキストボックスをクリックすることで移してみると…

イベント,enter

このように、背景色がプロパティで指定した色に変わっていますね。

Exitイベント:フォーカスがテキストボックスから外れる時

お次はExitイベント。

このイベントは、フォーカスがテキストボックスから外れる時に実行されるイベントです。

フォーカスが外れたら背景色を変える

Enterイベントでご紹介した、テキストボックスにフォーカスがあたったら背景色を変えるというイベントの逆を、このイベントでやってみましょう。

フォーカスが外れるタイミングで、テキストボックスの背景色をもとの色に戻す、というコードです。

Private Sub TextItem_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With TextItem
        .BackColor = RGB(255, 255, 255)
    End With
End Sub

早速試してみましょう。

テキストボックスからフォーカスを外すと…

イベント,exit

この通り、背景色が元の白に戻っています。

テキストボックスに入力された値が指定した文字数かチェックする

テキストボックスに入力された値が、入力して欲しい形式になっているのか?をチェックするのも、このイベントが使えます。

このイベントには、引数Cancelがあります。

このCancelにTrueを指定すれば、フォーカスが次のコントロールに移ることをキャンセルさせることができます

例えば、テキストボックスに5文字以上を入力して欲しい場合、テキストボックスに入力された文字数が指定した数に満たない場合、メッセージを出して、テキストボックスからフォーカスが移動しないようにさせることもできます。

テキストボックスに入力された文字数が5文字以下だったら、メッセージを表示してイベントをキャンセルする=フォーカスを他のコントロールに移動させない、という処理だと、こんなコードになります。

Private Sub TextItem_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   
If Len(TextItem.Value) < 5 Then
    MsgBox "5文字以上で入力してください"
    Cancel = True
Else
    With TextItem
      .BackColor = RGB(255, 255, 255)
    End With
End If

End Sub

引数CancelにTrueを指定しても、イベントプロシージャ内の処理は一旦最後まで実行されますので、フォーカスが外れてよい場合の、背景色が変わる処理部分はIF文を使って分岐するようにしています。

実際にこの処理をさせてみましょう。

ユーザーフォームを開いて、テキストボックスに4文字入力します。

そして、次のテキストボックスにフォーカスを移そうとすると…

テキストボックス,exit

この通り、メッセージが表示されて、フォーカスがテキストボックスに残ったままになっていますね。

Changeイベント:テキストボックスの値が変更された時

Changeイベントは、テキストボックスの値が変更されたタイミングで実行されるイベントです。

キーボードでの文字入力はもちろん、Back spaceキーやDeleteキーでの文字の削除もこのイベントの対象になりますよ。

入力の都度文字数をフォーム上に表示してみる

このChangeイベントを使って、ユーザーフォーム上に入力されている文字列を、テキストボックスの値をそのまま表示させてみましょう。

フォームの右上に、「txtboxCopy」というラベルを追加して、そこにテキストボックスに入力された文字列を入力する都度表示させます。

コードはこちら。

Private Sub TextItem_Change()
    txtboxCopy.Caption = TextItem.Value
End Sub

そしてユーザーフォーム上で、テキストボックスに値を入力してみると…

テキストボックス,change

この通り、テキストボックスに値が入力される都度Changeイベントが実行されて、ラベルの文字列が更新されます。

使いどころは注意が必要

Changeイベントは、テキストボックスの値が変わったら実行されるとご紹介しました。

このイベント、テキストボックスの値が変わる都度実行されますので、メッセージを出すような処理はさせないのがよいでしょう。

というのもこのイベント、テキストボックスの値が変わる都度実行されますので、1文字入力したり文字を削除したりする都度メッセージが出てしまうことになって非常に鬱陶しいのです。

Changeイベントを使って何か処理をさせたい場合は、注意が必要ですね。

最後に

今回はテキストボックスにフォーカスが当たるときに実行されるEnterイベント、フォーカスが外れるときに実行されるExitイベント、値が変更された時に実行されるChangeイベントの3つをご紹介しました。

ユーザーフォームを作成するにあたって、このイベントを知ることは避けて通れません。

イベントが実行される条件やタイミングなど、「難しいのでは?」と思ってしまうかもしれませんが、わかってしまえばユーザーフォームでできることの幅がぐっと広がりますよ。

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

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
  3. 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法

書籍「パーフェクトExcel VBA」で書いた文字数とかかった時間を晒します

$
0
0

パーフェクトExcel VBAの校正

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

さて、本記事を執筆しておりますのが2019/11/21です。あと数日後の11/25に「パーフェクトExcel VBA」が発売されます。

というか、紀伊國屋書店さま、ジュンク堂書店さまなどでは、先行して発売されているという情報もございますね…!

本作は、私の3冊めの書籍となるのですが、前作・前々作と何文字書いて、何時間かけたかというレポートをしました。

ExcelVBA本を一冊書くには、どれだけの文字数と、どれだけの時間が必要だったか
書籍「ExcelVBAを実務で使い倒す技術」が発売されました。今日は発売記念ということで、本を一冊書くのに、どれだけの文字数を、どれだけの時間をかけて書いたのか、晒したいと思います。なかなか過酷です。
GAS本を書き上げるのに、どれだけの文字数書いて何時間かけたのか
「詳解!GoogleAppsScript完全入門」が発売されることになりました。この記事では本書を書き上げるのに、どれだけの文字数書いたのか、またどれだけの時間をかけたのか、ババンと晒したいと思います。

ちょっと、今回は結果を見るのが怖いですが…いちおう、記録ということでレポートをしたいと思います。

ということで、本書「パーフェクトExcel VBA」を書き上げるのに、どれだけの文字を書いて、どれだけの時間をかけたのか、晒していきます。

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

「パーフェクトExcel VBA」にかけた時間と書いた文字数

では、早速ですが「パーフェクトExcel VBA」の各パートでかかった時間と、文字数についてまとめましたのでご覧下さい。

内容 時間数 文字数
企画 52:30
1章 イントロダクション 46:15 18,004
2章 データ型と式 29:15 15,111
3章 ステートメント 39:15 21,172
4章 制御構造 26:00 16,524
5章 プロシージャ――手続きに名前をつける 31:15 18,683
6章 モジュール――プログラムを部品ごとにまとめる 73:45 40,250
7章 ライブラリの種類と構造 28:15 15,404
8章 VBAライブラリその1~VBA関数 44:15 25,616
9章 VBAライブラリその2~コレクション 15:15 6,280
10章 配列 1:30 1,793
11章 Excelライブラリ 95:15 72,173
12章 MSFormsライブラリ 34:30 22,996
13章 Scriptingライブラリ 20:45 21,820
14章 アプリケーション開発 21:15 18,443
その他の執筆 3:00 3,353
校正 47:15
販促 1:30
合計 558:30 317,622

過去の書籍と比べるとこんな感じです。

書籍名 ページ数 時間数 文字数 時間あたり文字数
Excel VBAを実務で使い倒す技術 292ページ 343:25 138,450 403
詳解!Google Apps Script完全入門 464ページ 396:24 185,469 468
パーフェクトExcel VBA 576ページ 558:30 317,622 569

ちなみに、時間数や文字数はカレンダーに記録をしていまして、以下の記事の方法で書き出して集計しています。

仕事の生産性を測定して振り返るためのGoogleカレンダーの使い方
過去に何の仕事にどれだけ時間をかけてきたか、振り返ったことはありますか?Googleカレンダーを上手に記録しておくことで、これまでの仕事の生産性を測定するための貴重なデータになります。

かけた時間について

558時間もかけてしまいました…!

営業日換算では、約70日。つまり、3.5ヶ月程度を本書にかけたことになりますね。

1時間あたりの文字数は、かなりアップしていますが、まあ文字数も圧倒的に増えてますからね…

良いのか悪いのか。

書いた文字数について

その文字数ですが、31.7万文字も書いてしまいました。

ブログ記事でいうと、だいたい1記事あたり2500文字程度なので、130記事弱くらいですかね。

「パーフェクト」の名に恥じない文字数でお送りしました。

なぜ、儲からないのに書籍を書くのか

夢がない話をしちゃうと、執筆はこんなに時間がかかっちゃう一方で、技術書は大当たり&印税ガッポガッポとはなりづらいので、生産性は高くありません。

場合によっては、ちょっといいバイトのほうが時間あたりの収入は多いかも知れません。

では、なぜやるか?

3冊目になると、それはもう確信に変わっているのですが、お金以外の価値が非常に高いからです。

それでしか得られない体験とスキル

VBAについては、当然ある程度の知識と経験はあったつもりだったのですが、いざ本格解説本を書くとなると、まあ抜け漏れが多いことに気づきますよ。

おかげさまで、VBAに関して、より一層詳しくなることができました。

あと、ブログと違って、単発の知識なくて、書籍で伝えるものは「大量の知識が連結した状態のまとまり」になります。

今回でいうと、VBAというプログラミング言語の「筋」はどうなっているのか?どんな、ポリシーでできあがっているのか?というのを、かなり頑張って解明したつもりであります。

VBAの学習をしている人は世の中にたくさんいるとは思うのですが、この研究に携われる機会を得る人は、世の中に何人いるのでしょうか?

そう考えると、とても価値のある体験になりますよね。

ポジショニング

VBAに関しては、日本でも書籍は多数出ていますが、どちらかというと初心者向けだったり、すぐに使えるものが多い印象です。

それはそれで必要なのですが、長い目で学習効果や開発・運用効率を良くするためには、言語の体系や構造、琴線に触れるような深い理解があったほうが、良いのではないかと感じるようになりました。

JavaScriptとかPythonとか他の言語では、例えばオブジェクト指向も含めて言語体系を伝えるようなゴリっとした書籍もけっこう充実していますし、オンライン学習でもそういうことを学べるコンテンツがあります。

ただ、VBAに関しては、日本にはそういう本や機会がなくて、やろうとすると以下のような洋書になってしまいます。

Amazon | VBA Developer's Handbook | Ken Getz, Mike Gilbert | Visual Basic
Amazon配送商品ならVBA Developer's Handbookが通常配送無料。更にAmazonならポイント還元本が多数。Ken Getz, Mike Gilbert作品ほか、お急ぎ便対象商品は当日お届けも可能。

そういうニーズがあるのに、日本でそれが満たされていないのであれば、それはそのポジションをとるチャンス!

ということで、企画提案をしたのですが…まあ大変でしたね。

ただ、こうして無事に出版までこぎつけることができました。

つまり、今までなかったポジションに手をかけることができたわけです。

うまく生活や収入をやりくりして、VBAについてコツコツ書き続ける…それができれば、そのチャンスを得られます。

そこからどう未来につながっていくのか…今後に期待していただければと思います。

まとめ

以上、「パーフェクトExcel VBA」を書き上げるのに、どれだけの文字を書いて、どれだけの時間をかけたのかについてお伝えしました。

実感値としては、本書はすごく執筆ペースは遅いのではないか?という気がしていましたが、思ったよりも良いペースで書いていたんですね。

なぜ、そういう感覚を持っていたかと言うと、全体で2年くらいも付き合ってしまっていたということと、あとは実際…かなり苦しかったんです。

けっこう、悩みが多く、進んだり戻ったりしながら書いていました。

そのあたりは、また機会があればお伝えしたいと思います。

書籍「パーフェクトExcel VBA」関連記事

書籍「パーフェクトExcel VBA」に関連して、本書自体や、執筆に関する裏話や出来事、ノウハウ、イベントレポートなどを連載していきます。
  1. 書籍「パーフェクトExcel VBA」発売についてのお知らせ
  2. なぜ、Excel VBAの本格解説本を書く必要があるのか
  3. 11/25発売「パーフェクトExcel VBA」のまえがきを全文無料公開
  4. 書籍「パーフェクトExcel VBA」で書いた文字数とかかった時間を晒します
その他、本書に関する情報を随時更新していきますね。 どうぞお楽しみに!

本日発売「パーフェクトExcel VBA」のあとがきを全文無料公開

$
0
0
conclusion

photo credit: frucht1991 Bleistift schwarz weiß via photopin (license)

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

さて、本記事を執筆しておりますのが2019/11/25、いよいよ本日「パーフェクトExcel VBA」が発売**されます。

今回、出版をお願いしております技術評論社さまのご厚意により、当ブログに「パーフェクトExcel VBA」のあとがきを全文掲載しても良いと許諾をいただきました。

まだ、本書をご覧になっていらっしゃらない方がほとんどかと思いますが、著者としては書き終わっているので「おわりに」の気分なのであります。

いずれにしても、書き切った今、本書の発売に際して、どう考えているのかを書かせてもらってますので、ぜひご一読くださいませ。

ということで、本記事では「パーフェクトExcel VBA」のおわりに全文を掲載させていただきますね。

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

おわりに

本書の企画について、技術評論社さんに最初に提案をさせていただいたのは、2017年12月でした。 そこから、編集さんと何度も企画のやり取りを行い、実際に企画が通過したのは2018年7月。そして、 現在執筆が完了した今は、2019年7月です。つまり、企画に8か月を費やし、執筆に1年を費やしたことになります。

私は過去に2冊のプログラミング本を執筆していますが、本書『パーフェクトExcel VBA』はそれらの何倍もの時間がかかりました。執筆にかけた時間は550時間を超えました。事前にある程度想定はしていましたが、ここまで大変な作業になろうとは……。

公式ドキュメントはもちろん、信頼できる書籍やWebサイト、もしくは実際に検証用のコードを書いて実行する、そのようないくつもの方法を組合せてエビデンスをとり、一つひとつの項目を解説し、それを体系としてまとめる。つまり、時間がかかったという事実は、それだけ「Excel VBAについて体系的な知識を得ることが難しかった」ということを表しています。

しかし、これはよいことで、本書として出版できた今、皆さんが同じような苦労を同じような時間をかけて行う必要はなくなりました。皆さんには、本書の購入と、学習時間というリソースを投資いただく必要がありますが、その投資後のExcel VBAの学習と活用をする時間は、より価値ある時間になるはずです。そして、結果として皆さんや、皆さんが所属するチームの「働く」の価値が上がります。

さらに、そのような成果があちこちで見られるようになったとき、Excel VBAをはじめとするノンプログラマーのプログラミング学習やその仕事での活用が、より評価され、その地位が向上することにつながるのではないかと期待しています。

そのチャンスをつかめたという意味では、私の550時間程度はたいしたことではありませんね。

さて、最後になりますが、長い期間にわたって生活面や精神面で支え続けてくれた家族、暖かくそして力強く応援をしてくださったコミュニティ「ノンプロ研」の皆さん、そして企画から出版まで根気よく伴走をしてくださった編集部の皆さんに心から感謝いたします。

「おわりに」の後に思っていること

書籍を執筆するということは、とても特別なことと感じています。

自分の脳みその中を全部さらけ出したものであり、どれだけ売れるのか、どういう反応があるのか、フィードバックはリアルにどストレートにやってきます。

ブログのように「あ、間違い見つけた。やべやべ」と即座に修正できません。

関わってくださった皆さんも多く、責任も重いです。

そのクセ、収益的にめちゃくちゃ儲かるというわけではありません。それは、以下の記事でもお伝えしているとおりです。

書籍「パーフェクトExcel VBA」で書いた文字数とかかった時間を晒します
2019/11/25に「パーフェクトExcel VBA」が発売されます。3冊目の著作となった本作。この記事では、それを書き上げるのに、どれだけの文字を書いて、どれだけの時間をかけたのか、晒していきます。

では、なぜ出すのか…というのは前述の「おわりに」に書いてある通りでありますが、VBAの枠を超えて表現をするならば、『「知識のアップデート」に貢献したいから』に他なりません。

執筆に2年もかかってしまいましたが、日本語ではなかなか簡単には入手できない「知の塊」を、まとめることができ、書店さんに並べることができたのではないかと思います。

本書を手にとった皆さんの、これからの「働く」の価値を上げるに少しでも貢献できれば嬉しく思います。

書籍「パーフェクトExcel VBA」関連記事

書籍「パーフェクトExcel VBA」に関連して、本書自体や、執筆に関する裏話や出来事、ノウハウ、イベントレポートなどを連載していきます。
  1. 書籍「パーフェクトExcel VBA」発売についてのお知らせ
  2. なぜ、Excel VBAの本格解説本を書く必要があるのか
  3. 11/25発売「パーフェクトExcel VBA」のまえがきを全文無料公開
  4. 書籍「パーフェクトExcel VBA」で書いた文字数とかかった時間を晒します
  5. 本日発売「パーフェクトExcel VBA」のあとがきを全文無料公開
その他、本書に関する情報を随時更新していきますね。 どうぞお楽しみに!

GASのダイアログでボタンをクリックしてアラート表示を動作させる方法

$
0
0

button

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

Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。

前回の記事はこちら。

GASのダイアログで作成するファイルアップローダーの部品を配置する方法
Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。今回は、GASのダイアログで作成するファイルアップローダーの部品を配置する方法です。

ダイアログにファイルアップローダーに必要な要素を配置する方法をお伝えしました。

ただ、ボタンを配置しただけで、ファイルを選択してボタンをクリックしても何も起きません。

今回は、その部分を進めていきますよ。

ということで、GASのダイアログでボタンをクリックしてアラート表示を動作させる方法です。

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

前回のおさらい

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

まず、ダイアログの見栄え部分はHTMLで作成する必要がありましたが、以下のdialog.htmlとして作成しておきます。


  
    
  
  
          
     
  

その上で、以下のコード.gsのshowDialogを実行すると、ダイアログを表示できるわけですね。

function showDialog(){
  var html = HtmlService.createHtmlOutputFromFile('dialog');
  SpreadsheetApp.getUi().showModalDialog(html, "CSVアップロード");
}

実行すると、以下のダイアログが表示されます。

GASで作成するファイルアップローダーダイアログ

ボタンクリックで動作をさせたい

それで「ファイル選択」ボタンを押すと、以下のようにファイル選択ができる「開く」ダイアログが表示されます。

GASのファイルアップローダーから表示した「開く」ダイアログ

ただ、ファイルを選択して「開く」をすると、以下のようにファイルがアップされている風ですが、「アップロード」ボタンを押しても何も起きないんですね。

GASのファイルアップローダーでファイルを選択した

ということで、この「アップロード」ボタンを押下して反応するように組んでいきたいと思います。

イベントとクリックイベントの作成

HTMLで作成したボタンを押して、何らかの動作をさせるには「イベント」という仕組みを使用する必要があります。

イベントというのは、HTMLがWeb表示されている際の「発生した出来事」のことです。

例えば、以下のようなものが「イベント」となります。

  • ボタンがクリックされた
  • カーソルが特定の要素にホバーした
  • テキストボックスに何かが入力された

それで、そのイベントが発生したことをキャッチする「イベントハンドラ」という仕組みがあります。

それを使えば、ボタンが押されたときに、何らかの動作を発生させることができるというわけです。

onclick属性でクリックイベントをキャッチする

今回の場合、「アップロード」ボタンを表すbutton要素に、そのクリックをキャッチするイベントハンドラを仕込めば良いということになります。

button要素に限らずですが、要素をクリックしたことをキャッチするにはonclick属性を使います。

<タグ onclick=”JavaScriptのコード”>タグの内容</タグ>

onclick属性に指定する部分に、JavaScriptのコードを入力しておくことで、クリックされたときにそれを動作させることができます。

alertメソッドでアラートを表示する

今回は、クリックされたことを簡単に確認するための「アラート」を使用します。

アラートを表示するにはalertメソッドを使います。

alert(メッセージ)

つまり、dialog.htmlのbuttonタグを以下のようにすればよいわけです。

アラート表示を実行確認する

では、実際に実行してアラート表示を確認してみましょう。

コード.gsのshowDialogを実行して、表示されたダイアログの「アップロード」ボタンを押下すると、以下のようにアラートが表示されるはずです。

GASのダイアログでボタンをクリックしてアラートを表示する

無事に動作していることを確認できますね。

まとめ

以上、GASのダイアログでボタンをクリックしてアラート表示を動作させる方法をお伝えしました。

HTML側でJavaScriptを動作させるイベントとその仕組を簡単ですが、理解いただけたと思います。

次回は、このボタンクリックを元にサーバー側を呼び出す方法を見ていきましょう。

どうぞお楽しみに!

連載目次:GASのダイアログでcsvファイルアップローダーを作ろう

Google Apps Scriptでダイアログを作成する方法はいくつかありますが、HTMLサービスとUiサービスを組み合わせると自由で多機能なダイアログが作れます。このシリーズではそんなダイアログの作り方を易しく紹介していきます。
  1. Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識
  2. GASで最も簡単なHTMLサービスによるダイアログを作成する方法
  3. GASのダイアログで作成するファイルアップローダーの部品を配置する方法

【エクセルVBA】Initializeイベントでワークシートの値をユーザーフォームの初期値にセットする

$
0
0

ユーザーフォーム,initialize,アイキャッチ

皆様こんにちは、ノグチです。

ユーザーフォームを作って使ってみるまでを目標に、コントロールのプロパティやイベントを、連載記事でご紹介しています。

前回は、テキストボックスのイベントをいくつかご紹介しました。

【エクセルVBA】テキストボックスでよく使う3つのイベントを使ってみよう
ユーザーフォームを作成して、使ってみるところまでを連載形式でご紹介しています。今回は、テキストボックスのEnter,Exit,Changeの3つのイベントをご紹介していますよ。イベントは各コントロールに数多く用意されていますが、各イベントの実行タイミングとできることを知って、便利に使ってしまいましょう!

今回は、ユーザーフォームのInitializeイベントで、ユーザーフォームを開くと同時に、ワークシート上の値をユーザーフォームのテキストボックスに表示する方法をご紹介します!

前回までのおさらい

まず、前回までに作成したユーザーフォームがこちら。

テキストボックス,オブジェクト名

「品目」というラベルの下にある、TextItemというオブジェクト名のテキストボックスを用いて、テキストボックスのプロパティやイベントをご紹介してきたのでした。

今回も、こちらのテキストボックス「TextItem」を使っていきますよ。

ワークシートの値をユーザーフォームに表示する

Valueプロパティに値をセットする

まず、ユーザーフォームのテキストボックスに値を表示するには、テキストボックス のValueプロパティに表示したい値をセットします。

テキストボックスにワークシートの値を表示したいのなら、テキストボックスのValueプロパティに、ワークシートのCellオブジェクトまたはRangeオブジェクトのValueプロパティをセットすることになりますね。

例えば、TextItemというオブジェクト名のテキストボックスに、ワークシートのA1セルの値をセットしたいなら、こんなコードになります。

TextItem.Value = ActiveSheet.Cells(1, 1).Value

これを、テキストボックスのEnterイベントに入れて、動かしてみましょう。

Private Sub TextItem_Enter()
    TextItem.Value = ActiveSheet.Cells(1, 1).Value
End Sub

ユーザーフォームを開いて、テキストボックスにフォーカスを当ててみると…

テキストボックス,value

この通り、ワークシートの指定したセルから値をもってきて、ユーザーフォーム上のテキストボックスに表示してくれていますね。

ユーザーフォームの値をワークシートに転記する

ユーザーフォームで入力した値を、ワークシートに転記することもできますよ。

上でご紹介したのと逆で、ワークシートのCellオブジェクト、RangeオブジェクトのValueプロパティに、コントロールのValueプロパティをセットすればよいのです。

試しに、テキストボックスのExitイベントを使って、ワークシートに値を転記してみましょう。

こんなコードができます。

Private Sub TextItem_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveSheet.Cells(1, 1).Value = TextItem.Value
End Sub

ユーザーフォームのテキストボックスに値を入力して、フォーカスをテキストボックスから離すと…

ワークシート,value

この通り、ユーザーフォームの背後で、テキストボックスに入力した値が、ワークシートに転記されていますね。

Initalizeイベントでワークシートの値をユーザーフォームの初期値にセットする

Initializeイベント:ユーザーフォームが開くタイミングで実行される

ユーザーフォームで画面を作っていると、マスタやワークシートの値など、ユーザーフォームを開くと同時に読み込んでおいて、フォーム上のコントロールに初期値として表示したい、という場面が出てくることがあります。

そんな時に使えるのが、ユーザーフォームのInitializeイベントです。

このイベントは、ユーザーフォームが開くタイミングで実行されるイベントなので、例えば、

  • ユーザーフォーム上の背景やコントロールの色やサイズなどを初期値用に変更する
  • マスタやワークシートの値をユーザーフォーム上に表示する

といった、初期化処理をしたい場合はこちらのイベントプロシージャに処理を書き込むことになります。

Initalizeイベントでワークシートの値をユーザーフォームの初期値にセットする

では早速、Initializeイベントを使って、ユーザーフォームを開いたときに、ワークシートの値をユーザーフォーム上のテキストボックスに初期値としてセットしてみましょう。

コードはこちら。

Private Sub UserForm_Initialize()
    TextItem.Value = ActiveSheet.cells(1, 1).Value
End Sub

ユーザーフォームを開いたとき、ワークシート上のA1セルの値を、ユーザーフォームのTextItemというオブジェクト名のテキストボックスに転記する、というコードです。

ワークシートのA1セルに値を入力しておいて…

initialize,初期値,ワークシート

ユーザーフォームを開いてみると…

initialize,初期値

この通り、ワークシートの値が初期値としてテキストボックスに表示されていますね。

最後に

今回は、テキストボックスに入力した値をワークシートに転記する方法と、ユーザーフォームのInitializeイベントで、ワークシート上の値をユーザーフォームの初期値にセットする方法をご紹介しました。

このイベントは、ユーザーフォームでツールを作る場合、マスタシートの読み込みなどで何かと使うことになるイベントですので、是非使ってみてくださいね。

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

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
  3. 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法
  4. 【エクセルVBA】テキストボックスでよく使う3つのイベントを使ってみよう

「パーフェクトExcel VBA」発売記念!11の大型書店を行脚したよレポート東京編

$
0
0

パーフェクトExcel VBAのPOPその1

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

いよいよ発売されました「パーフェクトExcel VBA」!

書店さまにちゃんと並んでいるのか…ドキドキ心配になる時期であります。

さて、そんなドキドキを抱えながら、2日間かけまして都内の大型書店さまにご挨拶まわりしてまいりましたので、レポートをしたいと思います。

ということで、「パーフェクトExcel VBA」発売記念!大型書店を行脚したよレポート東京編です。

都内でコンピューター関連をの技術書を扱うオススメ大型書店11選、としてもどうぞご活用くださいませ。

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

秋葉原エリア

書泉 ブックタワー

トップバッターは秋葉原駅から徒歩1分、書泉 ブックタワーさまです。

「趣味人専用」をうたっていますが、コンピュータ関連の技術書も豊富に取り揃えています。

さて、コンピュータフロアは4F。

はい、バッチリ平積み…POPもすぐ掲載いただいてパシャリ。ありがとうございます!

書泉ブックタワー

書泉ブックタワー
東京都千代田区神田佐久間町1-11-1

有隣堂 ヨドバシAKIBA店

有隣堂 ヨドバシAKIBA店は、秋葉原駅直結のヨドバシカメラの7Fにあります。

駅直結って、便利すぎっすね。

さて、こちらもありました~平積み。ありがとうございます!

有隣堂 ヨドバシAKIBA店

ちなみに、2Fにヨドバシカメラのコンピュータ関連書籍コーナーがあるのですが、そちらは面積が限られるので、技術書が必要なら7Fにお越しいただくのが良いかなと思います。

有隣堂 ヨドバシAKIBA店
東京都千代田区神田花岡町1-1 ヨドバシAKIBA7F

東京エリア

八重洲ブックセンター 本店

八重洲ブックセンターは、その名の通り東京駅の八重洲南口からすぐにある大型書店です。

バスターミナルを抜けると、道路の反対側にすぐに見えますね。

コンピュータ売り場は3階になります。

パーフェクトExcel VBAは、はい平積み!そして落ちそうw!

八重洲ブックセンター 本店

八重洲ブックセンター 本店
東京都中央区八重洲2-5-1

丸善 丸の内本店

丸善 丸の内本店は、八重洲ブックセンターのある八重洲南口から駅を挟んで反対側、丸の内北口の丸の内オアゾ内にあります。

「Book Museum」をコンセプトにされているということで、すごく素敵な雰囲気、そしてまあとにかく広い!

3Fがコンピュータも含む一般書・専門書フロアなのです。

パーフェクトExcel VBA…ありました!平積み!

かなり売れていて、棚差し含めて3冊しか残ってないとのこと…ありがたし!!

丸善 丸の内本店

丸善 丸の内本店
東京都千代田区丸の内1-6-4 丸の内オアゾ1階~4階

神保町エリア

三省堂書店 神保町本店

本と楽器の町、神保町。

古書が多いイメージですが、その中で最新の技術書がほしければ**三省堂書店 神保町本店
**ですね。

昔、職場が近かったこともあり、個人的にはたいへんお世話になっている書店さんです。

コンピュータ関連は5Fですね。

ありました!パーフェクトExcel VBA、面出しありがとうございます!

三省堂書店 神保町本店

三省堂書店 神保町本店
東京都千代田区神田神保町1-1

池袋エリア

ジュンク堂書店 池袋本店

さて、自宅も近いこともあり、池袋の書店さんはたいへんお世話になっております。

我らがジュンク堂書店 池袋本店

池袋東口を出て、明治通り沿いに雑司が谷のほうに歩くと、道の向かい側に大きなジュンク堂ビルを見つけることができます。

コンピュータ関連は6F。

「全ての書籍を揃える」をモットーにされていることもあり、充実のラインナップです。

パーフェクトExcel VBAは面出し!そして、POPと一緒に写真を撮らせていただきました。

ジュンク堂書店 池袋本店

後ほど、ちゃんとメッセージとともに貼っていただき、ツイート頂戴しました。ありがとうございます!

ちなみに、詳解!GoogleAppScript完全入門も面出しいただいてました…ありがとうございます!!!

ジュンク堂書店 池袋本店GAS1

ジュンク堂書店 池袋本店GAS2

ジュンク堂書店 池袋本店
東京都豊島区南池袋2-15-5

三省堂書店 池袋本店

池袋駅直結の西武百貨店の端っこ、書籍館が三省堂書店 池袋本店です。

ジュンク堂と近いので、両方ハシゴするのも楽ちん。

コンピュータコーナーは4Fにあります。

パーフェクトExcel VBA、面出しいただいてました!

三省堂書店 池袋本店

ちなみに、書店さんって、「本店」があちこちにあったりするんですね。

三省堂書店 池袋本店
東京都豊島区南池袋1-28-1

新宿エリア

紀伊國屋書店 新宿本店

紀伊國屋書店 新宿本店は、地下通路の直通の紀伊国屋ビルです。

4Fがコンピュータ関連で、エレベーター降りて向かい側の棚をぐるりと回ると、みんな大好きExcelコーナーです。

はい、パーフェクトExcel VBAありました!平積み!

紀伊國屋書店 新宿本店

紀伊國屋書店 新宿本店
東京都新宿区新宿3-17-7

ブックファースト 新宿店

西口にまわって、独特のフォルムの「モード学園コクーンタワー」を目指します。

その地下にあるのが、ブックファースト 新宿店です。

地下2階のGゾーンがコンピューターのコーナー。

入ると、オライリーとかがズバババと並んでいるので、洗練された雰囲気です。

Excelコーナーを除くと、ありました!パーフェクトExcel VBA、面出しです!

ブックファースト 新宿店

ブックファースト 新宿店
東京都新宿区西新宿1-7-3 モード学園コクーンタワー 地下1階・地下2階

渋谷エリア

MARUZEN&ジュンク堂書店 渋谷店

さて、MARUZEN&ジュンク堂書店 渋谷店は、渋谷駅から文化村通りを上った東急bunkamuraの7Fです。

丸善書店とジュンク堂書店がダブルネームで出店した第1号のお店とのこと。

ワンフロアですが、とにかく広いです。

パーフェクトExcel VBA…ありました!面出し!

しかも、Excel VBAを実務で使い倒す技術も…ありがとうございます~

MARUZEN&ジュンク堂書店 渋谷店

さらに、詳解!GoogleAppsScript完全入門も面出しいただいていて、面出しコンプリートです…ありがたし…!

MARUZEN&ジュンク堂書店 渋谷店GAS

ジュンク堂書店 渋谷店
東京都渋谷区道玄坂2-24-1 東急百貨店本店7階

品川エリア

くまざわ書店 品川店

品川駅の港南口、インターシティの2Fにあるのが、くまざわ書店 品川店です。

すごく大きいというわけではありませんが、品川で書籍を買うときはこちらになる感じでしょうか。

パーフェクトExcel VBAもバッチリ面出しでありました!

Excel VBAを実務で~も2冊ありますね。

くまざわ書店 品川店

くまざわ書店 品川店
東京都港区港南2-15-2 品川インターシテイ-2F

番外編: 宮脇書店 総本店

私は直接おうかがいしていないのですが、高松の宮脇書店総本店をご紹介します。

以前イベントなども開催させていただきました経緯もあり、POPをデータでお渡ししていたんですね。

なぜ、高松でコミュニティ「ノンプロ研」のイベントを開催したのか
コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、先日ノンプロ研 in 高松「AI時代に元気よく生き残るためのプログラミングとその身につけ方」というイベントを開催しました。本記事はそのレポートです。

そしたら、写真を撮って送っていただきました!

パーフェクトExcel VBA面出し、そしてPOP3種類とも、使用いただいています!

宮脇書店 総本店

ありがとうございます!!

宮脇書店 総本店
香川県高松市朝日新町3-4

まとめ

「パーフェクトExcel VBA」発売記念!大型書店を行脚したよレポート東京編をお送りしました!

都内11店舗の大型書店のすべてで平積みか、面出しをいただいていました。

Amazonのランキングである程度良い反応は期待していましたが、想像以上というか、上出来すぎて怖いくらいです。

これから、たくさんの方が本書を手にとって、ご活用いただけることを楽しみにしています!

書籍「パーフェクトExcel VBA」関連記事

書籍「パーフェクトExcel VBA」に関連して、本書自体や、執筆に関する裏話や出来事、ノウハウ、イベントレポートなどを連載していきます。
  1. 書籍「パーフェクトExcel VBA」発売についてのお知らせ
  2. なぜ、Excel VBAの本格解説本を書く必要があるのか
  3. 11/25発売「パーフェクトExcel VBA」のまえがきを全文無料公開
  4. 書籍「パーフェクトExcel VBA」で書いた文字数とかかった時間を晒します
  5. 本日発売「パーフェクトExcel VBA」のあとがきを全文無料公開
その他、本書に関する情報を随時更新していきますね。 どうぞお楽しみに!

GASのダイアログのボタンクリックでサーバー側の関数を呼び出すgoogle.scripot.run

$
0
0

button-call

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

Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。

前回の記事はこちら。

GASのダイアログでボタンをクリックしてアラート表示を動作させる方法
Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズ。今回は、GASのダイアログでボタンをクリックしてアラート表示を動作させる方法です。

ダイアログのボタンクリックでアラートを表示させる方法をお伝えしました。

アラートを表示することはできたのですが、本当はファイルをアップロードして、スプレッドシートやらドライブやらに渡したいわけです。

そして、そのスプレッドシートやらドライブやらに渡すには、サーバー側の関数を呼び出さなければいけません。

ということで、今回はGASのダイアログのボタンクリックでサーバー側の関数を呼び出すgoogle.scripot.runの使い方です。

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

前回のおさらい

まず、ダイアログの表示部分を作るHTMLファイルですが、以下の「dialog.html」として作成してきました。


  
    
  
  
          
     
  

この、HTMLファイルを使って、ダイアログ表示をするコードがこちら「コード.gs」のshowDialog関数です。

function showDialog(){
  var html = HtmlService.createHtmlOutputFromFile('dialog');
  SpreadsheetApp.getUi().showModalDialog(html, "CSVアップロード");
}

そして、このshowDialog関数を実行すると、スプレッドシート上に以下のようなダイアログが表示されます。

GASで作成するファイルアップローダーダイアログ

「ファイルを選択」のボタンは、「dialog.html」の7行目にあるtype属性fileのinputタグの本来の機能で既に搭載されていて、クリックすることでローカルにあるファイルをダイアログにわたすことができます。すごい。

ただ、「アップロード」のボタンは、「dialog.html」の8行目、buttonクリックのonclickイベントに仕込んでいる通り、単にアラートを表示するのみ…ここを修正していく、というのが目下の目標となります。

サーバーとクライアント…2つの実行場所

GASでダイアログを作成するときに、強く意識しなければならないことがあります。

それは、処理がブラウザ側で動いているのか、サーバー側で動いているのかです。

基本的に、GASは「.gs」という拡張子のファイルに書き込んでいますが、このファイルが実行されるのはGoogleのサーバー内です。

インターフェースとして私たちのPCのブラウザを使ってGASを記述していますが、あくまでGASのスクリプトが実行されるのはサーバー側なのです。

一方で、「dialog.html」に記述した「alert(‘クリックされました’)」という処理は、PCのブラウザ上で実行されています。

つまり

  1. ボタンクリックを待ち構えて、それに反応する
  2. アラートを表示する

という動作は、Googleのサーバーには何の連絡もしていなくて、あなたのPCのブラウザで全て完結している処理にになります。

ブラウザで行われる処理はクライアントで行われる、などともいいます。

「.html」というファイルに記載された処理は、クライアント側の処理となります。

ということで、ダイアログを使ったアプリケーションの場合、対象となる処理をサーバー側に書くべきものか、クライアント側に書くべきものかを判断して、それぞれに記述していく必要があるわけです。

ダイアログだけでなく、サイドバーやWebアプリを作るときも同様に、サーバー側・クライアント側に命令を書き分けて開発を進めます。

google.script.runでサーバー側の関数を呼び出す

では、前回まで作成したものについて、アラート表示のかわりに、サーバー側で動作するログ出力に処理を変更してみましょう。

クリックイベントのキャッチは、クライアント側の仕事ですから、それをキャッチしたらサーバー側のいずれかの関数を呼び出すという動作が必要になります。

その際に、使用するのがgoogle.script.runです。

以下のようにすることで、同じGASプロジェクト内の「.gs」ファイルに記載されたサーバー側の関数を呼び出します。

google.script.run.関数名(引数1, 引数2,…)

では、「dialog.html」のbuttonタグのonclick属性を以下のように修正して、サーバー側の「logTest」という関数を呼び出すようにします。

この際、引数を渡すことができますので「クリックされました」というテキストを渡します。

サーバー側ですが、呼び出される関数として以下のlogTest関数を作ります。

function logTest(text){
  Logger.log(text);
}

サーバー側の呼び出しの動作確認

では、実行して、サーバー側の呼び出しを動作確認してみましょう。

ダイアログを表示して「アップロード」ボタンをクリックします。

GASのダイアログで「アップロード」ボタンをクリックする

なんにも起きませんが、スクリプトエディタに切り替えて、 Ctrl + Enter でログを表示すると以下のように、テキストが出力されているはずです。

GASのダイアログから渡されたテキストをログ出力

まとめ

以上、GASのダイアログのボタンクリックでサーバー側の関数を呼び出す方法をお伝えしました。

ここでは、スクリプトが実行される場所としてクライアント側・サーバー側の2つがあり、処理に応じてどちらかに書き分ける必要がある**ということをよく押さえておきましょう。

また、クライアント側からサーバー側を呼び出すgoogle.script.runについてもお伝えしました。

次回、ファイルをサーバー側に渡すようにしていきましょう。

どうぞお楽しみに!

連載目次:GASのダイアログでcsvファイルアップローダーを作ろう

Google Apps Scriptでダイアログを作成する方法はいくつかありますが、HTMLサービスとUiサービスを組み合わせると自由で多機能なダイアログが作れます。このシリーズではそんなダイアログの作り方を易しく紹介していきます。
  1. Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識
  2. GASで最も簡単なHTMLサービスによるダイアログを作成する方法
  3. GASのダイアログで作成するファイルアップローダーの部品を配置する方法
  4. GASのダイアログでボタンをクリックしてアラート表示を動作させる方法

GASのダイアログのデータをフォーム要素を渡すことでまとめてサーバー側に渡す方法

$
0
0
button

photo credit: dejankrsmanovic Old Elevator Button via photopin (license)

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

Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えするシリーズです。

前回の記事はこちら。

GASのダイアログのボタンクリックでサーバー側の関数を呼び出すgoogle.scripot.run
Google Apps Scriptでダイアログを使ったcsvファイルアップローダーを作成する方法をお伝えしています。今回はダイアログのボタンクリックでサーバー側の関数を呼び出すgoogle.scripot.runの使い方です。

作成したダイアログのボタンから、サーバー側のGASを呼び出す方法をお伝えしました。

ただ、呼び出してログ出力しただけでしたので、もう少し先に進めていきますよ。

今回は、GASのダイアログのデータをフォーム要素を渡すことでまとめてサーバー側に渡す方法をお伝えします。

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

前回のおさらい

前回までのおさらいをしておきましょう。

まず、ダイアログの表示部を作るHTMLファイル「dialog.html」ですが、以下のコードです。


  
    
  
  
          
     
  

8行目ですが、onclick属性にサーバー側のlogTest関数に「クリックされました」という文字列を渡しつつ呼び出すスクリプトを仕込んでいます。

サーバー側のgsファイル「コード.gs」がこちら。

function showDialog(){
  var html = HtmlService.createHtmlOutputFromFile('dialog');
  SpreadsheetApp.getUi().showModalDialog(html, "CSVアップロード");
}

function logTest(text){
  Logger.log(text);
}

showDialog関数は実行すると、以下のようなダイアログを表示します。

GASで作成するファイルアップローダーダイアログ

logTest関数はクライアント側からgoogle.script.runで呼び出されるもので、うまく呼び出された後にログを確認すると、こうなります。

GASのダイアログから渡されたテキストをログ出力

今回は、ボタンクリックでフォームの内容をサーバー側に渡す

フォームを使ってデータを渡す

formタグとその役割

クライアント側にあるデータをサーバー側に渡すときには、formタグを使うと便利です。

formタグはフォームを作る際に使用するタグで、以下記述のformタグに挟まれたinputタグなどの内容をまとめてサーバー側に渡すことができます。

<form>フォームの部品となる要素</form>

サーバー側にデータを渡すには、フォーム要素自体を渡した上でそれに含まれるデータを取り出すという段取りをとります。

フォーム要素をサーバー側に渡す

今回は、フォームに含まれるbutton要素のonclick属性からgoogle.script.runでサーバー側を呼び出していますよね。

その場合は、以下の記述でフォーム要素をサーバー側に渡すことができます。

え?type属性がtextのinputタグがしれっと追加されているですって?…まあ、これは今回の検証で使うので、まあ気にしすぎずに進めみましょう。

ここで「this」はbutton要素自身を表します。

ですから、以下はその直近の親要素、すなわち今回の場合はフォーム要素となります。

HTML要素.parentNode

サーバー側でフォーム要素からデータを取り出す

次に、GAS側でフォーム要素を受け取ったら、そのフォーム要素の中からデータを取り出す必要があります。

その場合は、各要素に付与したname属性を使って、以下のように記述します。

フォーム要素.name属性

つまり、logTest関数を以下のようにすれば、受け取ったフォーム要素から、name属性myTextの要素のデータを取得できるというわけですね。

function logTest(form){
  Logger.log('送信したテキストは %s', form.myText);
}

フォーム要素を渡す動作確認

では、フォーム要素を渡す動作確認をしていきましょう。

「dialog.html」は2つのinputタグにname属性を付与して、以下のようにしました。

フォームを表示すると以下のようになります。

「ファイルを選択」はいったん無視して、テキストボックスに「テスト用のテキスト」と入力、その上で「アップロード」をクリックします。

GASのダイアログにテキストを入力してボタンをクリック

スクリプトエディタでログを確認すると、以下のように「テスト用のテキスト」というデータを取り出せていることが確認できます。

GASのダイアログで渡したフォーム要素からテキストを取り出す

まとめ

以上、GASのダイアログのデータをフォーム要素を渡すことでまとめてサーバー側に渡す方法をお伝えしました。

フォーム要素の渡し方と、取り出し方について、ばっちりですね。

次回は、フォーム要素に「ファイル」を渡して、それを取り出していきます。

どうぞお楽しみに!

連載目次:GASのダイアログでcsvファイルアップローダーを作ろう

Google Apps Scriptでダイアログを作成する方法はいくつかありますが、HTMLサービスとUiサービスを組み合わせると自由で多機能なダイアログが作れます。このシリーズではそんなダイアログの作り方を易しく紹介していきます。
  1. Google Apps Scriptでダイアログを作るいくつかの方法と基礎知識
  2. GASで最も簡単なHTMLサービスによるダイアログを作成する方法
  3. GASのダイアログで作成するファイルアップローダーの部品を配置する方法
  4. GASのダイアログでボタンをクリックしてアラート表示を動作させる方法
  5. GASのダイアログのボタンクリックでサーバー側の関数を呼び出すgoogle.scripot.run
Viewing all 2077 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>