ブログトップ

カクレ理系のやぶにらみ

tamm.exblog.jp

時間のある方はお読みください。軽い気持ちで読み始めると頭が痛くなります。

<   2012年 04月 ( 7 )   > この月の画像一覧

 前回ご説明したように、Excelでは、マクロを使うことで繰り返し行う処理を自動化することができます。
 マクロを使うと作業の効率が嘘みたいにアップするので、今後もマクロの活用方法(というよりは考えかた)について書いていくことにしますが、今回は、印刷範囲がその都度異なる表を自動的に印刷する方法についてご説明します。

 なお、今回のサンプルファイルもインターネットディスクに公開しています。ファイル名は「成績通知票・成績一覧表(マクロ).xslm」としていますので、下記のリンクからご覧ください。

http://bit.ly/JmX4VJ

 
c0136904_1044677.jpg



 この図は、前回使った表に、生徒の人数を増やしたものです。このクラスでは生徒が11人いる!と思ってください。実際に、クラスによって生徒の人数が異なるのは普通ですから、その都度範囲を指定してから印刷するということをしなければなりません。しかし、それでは手間がかかるので、なんとか自動化できないかというものです。そのためには、そもそも印刷範囲が変わるとはどういうことなのかを考えてみる必要があります。

(印刷範囲が変わるとはどういうことなのか)
 上の図をもう一度ご覧ください。クラスによって生徒の人数が変わっても、印刷する範囲の先頭は変わらないことに気づきます。それでは何が変わるのかというと、生徒の人数が変わることで印刷範囲の最後が変わるわけです。
 この図では、生徒が11人いるので、印刷範囲の最後はセルE15になります。(生徒が10人の場合はセルE14が最後になります。)
 したがって、印刷範囲の最後をマクロに教えてやれば、生徒の人数が変わっても自動印刷することが可能になるわけです。

(印刷範囲の最後の情報を取得するには)
 印刷範囲は、先頭セルの行列番号と末尾のセルの行列番号の2つを使って、範囲として指定します。先頭セルは変わらず、末尾のセルだけが変わるのですから、変数を使って末尾のセルの行列番号を指定することができれば印刷が可能になるはずです。
 本稿では、末尾のセルの行列番号を取得して印刷する方法と、最終行の番号を取得して印刷する方法の2種類をご紹介することにします。


1.末尾のセルの行列番号を取得して、マクロで印刷する方法
 
(マクロ作成の前準備)
 印刷範囲の末尾のセルの行番号を求めるには、次の3つのステップで計算式を設定します。

(1)クラスの生徒の人数を数える
 上の図のセルJ3には、=COUNTA(D5:D24)というふうに、生徒の氏名が入力されている数を数えるというものです。
    
(2)(1)に基づいて、最後の生徒の行番号を計算する
 上の図では、最初の生徒が入力されているのは5行目ですから、生徒の人数+4で最終行を求めることができます。ゆえに、セルj4には、=J3+4という式が入力されています。

(3)(2)の行番号の頭に列名をつける
 セルj4で求めた最終行を用いて、その頭に列名(ここではe列)をつけます。セルj7には、="e"&J4という式が入力されています。このように、文字列は " " で囲み、式とくっつけるときには&という記号(正確には「演算子」といいます。+や-と同じ類のものです。)を使います。

 以上で準備は完了ですので、いよいよマクロのコードを作成することにします。

(新しいマクロのコードを記述するには)
 Excel2010の「開発」タブからVisual Basic をクリックして、VBAエディター(Microsoft Visual Basic for Application )を開きます。Excel2003以前では、「ツール」メニューの「マクロ」から開くことができます。
 VBAエディターの左側のウィンドウから、「標準モジュール」の下位にある「Module1」をクリックして、「表示」メニューから「コード」を選択します。
 そうすると空白のウィンドウが表示されるので、そこに下記のコードを入力していきます。入力が面倒くさい人は、下記のコード(赤い文字の部分)をコピペしてください。

【マクロの記述】 マクロ名「成績表印刷2」


Sub 成績表印刷2()
'
' 成績表印刷2 Macro

Dim 最終セル As String

最終セル = Range("j7").Value

'
'印刷範囲を選択状態にします
Range("b2", 最終セル).Select

'選択した範囲を印刷します
Selection.PrintOut , , Copies:=1

End Sub



(コードの解説)
・Sub 成績表印刷2()
 Excelでは複数のマクロを記述することができるので、それぞれマクロのくくりを示す目印が必要になります。先頭の目印として、このように、Sub マクロの名称() という書き方をするように決められています。また、マクロの最後には、End Subという目印をつけることになっています。

・Dim 最終セル As String
 印刷範囲の末尾のセルは生徒の人数によって変わるので、変数を用いて行列番号をマクロに教えることにしています。Dimというのは、これから変数を定義する(変数の名前と型を決める)という定型句です。その次に変数の名前(ここでは「最終セル」というのが変数の名前になります)を記述してから、As と続けて、その変数の型を指定します。変数の型には数種類あり、ここではセルの行列番号を扱うので、文字型を示す Stringを指定しています。変数が数値であれば、前回用いたInteger(整数型)がよく使われます。他にも、後で出てきますが、Variant(何でもOK)という便利なオールマイティ型もあります。

・最終セル = Range("j7").Value
 変数「最終セル」に、セルj7の値を代入するためのコードです。Rangeでセルj7を指定して、Valueでその値を取得しています。なお、VBAでは単語と単語の間をピリオドでつなぐのが約束となっています。

・Range("b2", 最終セル).Select
 範囲を指定する際に用いるのがRangeで、それを選択するのがSelectです。範囲の指定のしかたには2種類の方法があり、通常は、("範囲の先頭セルの行列番号:範囲の最後のセルの行列番号")というように、カッコの中に文字列で範囲を指定するやり方がとられます。しかし、このコードのように、("先頭セルの行列番号","最後のセルの行列番号")と、コンマでつなぐこともでき、このやり方は状況に応じてセルの番地が変わる場合に便利です。
 なお、今回はRange().Selectとして範囲を選択しましたが、Range().Deleteとすれば範囲内の値の消去、Range().Copyとすれば範囲内の値のコピーとなります。
 このように、VBAでは用いられる用語はあらかじめ決められていて、Rangeとセットで用いられる語句も決まっています。たとえば、コードを入力しているときに、Range("b2", 最終セル).とピリオドを打ち込むとリストが表示されます。これを自動メンバ表示といい、Rangeの次に指定する語句としてあらかじめ登録されている一覧が表示されます。このリストを無視して、selectと入力すると、途中でリストもselectが反転表示されるので、Tabキーを押して確定すると打ち間違いを防ぐことができます。

・Selection.PrintOut , , Copies:=1
 選択した範囲を1部だけ印刷するコードです。Copies:=2とすれば2部印刷することができます。

・End Sub
 マクロの最後には必ずこのコードが記述されます。ですから、Sub マクロの名称()とこのEnd Subはセットで用いられると覚えた方がよいでしょう。
 End Subの入力が終わったら、VBAエディタのウィンドウの右上の×ボタンをクリックして、エディタを閉じればコードは自動的に保存されます。
 なお、Subで始まりEnd subで終了する一連のコードの塊を「プロシージャ」と呼ぶこともあります。


【印刷ボタンの配置】
 ここで登録したマクロ(プロシージャ)は、「マクロ」の一覧に「成績表印刷2」として表示されるようになります。これを選択して実行すれば、その通りの処理をしてくれます。しかし、いちいちメニューからのマクロの一覧を開くのも手間ですので、ボタンをクリックすれば印刷が実行されるようにした方が使い勝手がよくなります。

 Excel2007以降では、リボンの「挿入」タブから「図形」をクリックして、四角形を選択します。ワークシートの好きな位置でマウスをドラッグすると四角形が作図されるので、これを右クリックして「テキストの編集」を選ぶと、四角形の中に文字列を打ち込むことができます。ここでは、マクロ(プロシージャ)の名称である「成績表印刷2」と入力しておきます。
 次に、ボタンの見栄えをよくするために、四角形を再び右クリックして、「図形の書式設定」から「配置」で文字列の配置を縦横中央揃えにしておきます。
 さらに、もう一度右クリックして「マクロの登録」を選択すると、マクロの一覧が開くので、「成績表印刷2」を選択します。
 こうしておくと、マウスをこのボタンの上に持ってきたときに、ポインターの形が指先マークに変わり、そのままクリックすると登録されたマクロが実行されるようになります。
 なお、マクロの実行ボタンが印刷範囲内にあり、ボタンを印刷したくないときは、右クリックした上で「図形の書式設定」から「プロパティ」を選択し、「オブジェクトを印刷する」のチェックを外しておきます。


 印刷範囲が変化する表を、マクロを使って自動的に印刷する方法の1番目はこの通りとなります。説明は長くなりましたが、コードそのものは短く単純なものですので、その分応用も利くはずです。色々な場面で試してみてください。


2.印刷する最終行の番号を取得してマクロで印刷する方法
 いつも申し上げるように、Excelでは唯一の正解というものはありません。結果が同じになるのであれば、どのようなやり方をしても構わないのであり、むしろ複数のやり方を知っておいた方が、それだけExcelを使いこなせるようになるといえます。
 ここで、ご紹介するのは、もう一つの方法であり、最初のマクロに比べるとやや複雑になりますが、マクロを応用して使う際によく用いられる手法が使われています。

 1番目の印刷方法と、発想を変えてもう一度上の図を眺めてみると、次のことがわかります。


(1)クラスによって生徒の人数は変わりますが、もっとも生徒数が多いクラスを基準に考えると、他のクラスはそれよりも人数が少ないことになります。

(2)そこで、印刷範囲は生徒数が最大のクラス(上の図では最大が20人)のものに固定しておきます。

(3)それよりも人数が少ないクラスの場合は、表に生徒の名前が載らないことになるので、空白の行として非表示にしてしまえば問題なく印刷できることになります。

(4)そのためには、そのクラスの生徒の人数と表の最終行の番号を取得する必要があります。

(5)上の図では、セルJ3で生徒の人数を、セルJ4で最終行の番号を計算しています。

(J3の計算式) =COUNTA(D5:D24)

 氏名欄に乗っている名前をCOUNTA関数を使って数えています。

(j4の計算式) =j3+4

 最初の生徒は表の5行目に乗っているので、印刷すべき最終行は(生徒の人数+4)という式で求めることができます。

(J5の計算式) =J4+1&":24"

 表の最後の行は24行目であることはおわかりいただけると思います。したがって、この表で非表示にすべき行の範囲は、表示されている最後の生徒の行+1である16行目から表の最終行である24行目であることになります。
 つまり、16行目から24行目までを非表示にしてしまおうというわけです。


(マクロの構成)
 以上の準備ができたら、クラスごとの成績一覧表を印刷するには、最低限次の処理が行わなければなります。

(1)空白行を非表示にする
(2)印刷する(印刷範囲は最大のものに固定)
(3)非表示とした部分を再表示する

 これら一連の処理を一つのマクロ(プロシージャ)にまとめてもよいのですが、そうするとやたら長くなってしまいます。以前も申し上げましたが、コンピューターを扱うときは、細かいパーツに分けて考えるというのが鉄則ですので、これら3つの処理をそれぞれ独立したマクロとしてコードを記述することにします。

 なお、そのクラスの生徒数が最大である20人の場合は、非表示と再表示の処理は不要になり、いきなり印刷しても構いません。

 これら一連の処理の流れを図にすると下図のようになります。


c0136904_10475542.jpg




 このように、一連の処理を図にすると、どのようにマクロを構成すればよいのかがわかるようになり、ミスの予防にも役立ちます。

 以下、順番にマクロのコードについてご説明します。



(新しいマクロのコードを記述するには)
 Excel2010の「開発」タブからVisual Basic をクリックして、VBAエディター(Microsoft Visual Basic for Application) を開きます。左側のウィンドウから、「標準モジュール」の下位にある「Module1」をクリックして、「表示」メニューから「コード」を選択します。
 そうすると空白のウィンドウが表示される(すでにプロシージャが登録されている場合は、一番最後のプロシージャのEnd Subの後ろでEnterキーを押して改行します)ので、そこに下記のコードを入力していきます。入力が面倒くさい人は、下記のコード(赤い文字の部分)をコピ-&ペーストしてください。

 
【マクロ1】マクロ名「成績表印刷」
 全体の処理のスタートにあたるマクロです。ここでは、生徒の人数が20人なのか、それともそれ未満なのかによって、処理が分かれます。


Sub 成績表印刷開始()

' 成績表印刷開始 Macro

'人数が20人のときは非表示を行なわず、いきなり印刷を行います

If Range("j3").Value = 20 Then

Call 成績表印刷

'人数が20人未満のときは、非表示の処理を行ってから印刷します

Else


Call 非表示

Call 成績表印刷

Call 再表示

End If


Range("e2").Select


End Sub



(コードの解説)
・If Range("j3").Value = 20 Then
 これは、ExcelのIF関数のようなもので、指定した条件が成立するときは処理1を、そうでないときは処理2を行うというものです。コードの書き方(文法)は決まっており、下記の通りとなります。

  IF(条件)Then(処理1)else(処理2)End If

 こうしてみると、IF関数によく似ていることにお気づきのことと思います。IFで条件を指定し、その条件が成立したとき(Then)に処理1を行い、そうでないときには(else)処理2を行うというものです(これを条件分岐といいます)。IF関数と異なるのは、最後にEnd Ifと記述して、条件分岐が完了したことを明示しなければならないということです。
 本来は、一つの命令文なのですが、コードの内容によっては長くなるために、区切りやすいところで次の行に改行した方が見やすくなります。この命令文(これをステートメントといいます)の場合、IfからThenまでを1行にして、処理1を次の行に、その次の行に、elseと記述して、さらに改行して処理2を記述するのが一般的です。そして最後に、もう一度改行してEnd Ifと記述すれば完了です。

 この例では、生徒数であるセルJ3の値 Range("j3").Value が20人であったならば、直接印刷して構わない(処理1)けれども、そうでない場合は、(非表示)(印刷)(再表示)を順番に行う(処理2)ということにしています。

付記
 プロシージャの中で、If関数を使いたい(条件によって値を変化させたい)という場合は、IIF関数を使えば同じことができるようになります。


・Call 成績表印刷
・Call 非表示
・Call 再表示


 Callというのは、他のマクロ(プロシージャ)を呼び出すためのコードです。このように、一連の処理を分解してそれぞれのくくりごとにマクロとして登録しておいたほうがわかりやすくなりますし、後のメンテナンスもやりやすくなるというメリットがあります。


・Range("e2").Select
 セルE2を選択状態にするというコードです。Rangeは範囲を指定するときに用い、セルの行列番号は、このように必ず " "で囲まなければなりません。


・End Sub
 マクロ(プロシージャ)の終了を示す必須のコードです。



【マクロ2】マクロ名「非表示」

Sub 非表示()
'
' 非表示 Macro

'データのない行を印刷範囲から除外するため非表示とします
'そのため、まず除外する範囲を取得するための変数を定義します
Dim 除外範囲 As Variant

'除外する範囲を変数に代入します
除外範囲 = Range("j5").Value2

'除外する範囲を選択状態にします
Rows(除外範囲).Select

'選択した範囲を非表示にします
'シートが保護されているとマクロが正常に動作しません
Selection.EntireRow.Hidden = True

End Sub



(コードの解説)
・Dim 除外範囲 As Variant
 非表示にする範囲をExcelに教えるために、変数「除外範囲」を使います。Dimというのは、これから変数を定義する(変数の名前と型を決める)という定型句です。また、As Variant というのは数値でも文字でも構わないというオールマイティ型になります。前回は、変数の型として Integer(整数型)を用いましたが、どちらでも構いません。他によく使われる型として、String(文字列型)があります。

・除外範囲 = Range("j5").Value2
 変数「除外範囲」にセルJ5の値を代入するためのコードです。Rangeでセルj5を指定し、Value2でその値を取得しています。変数に値を代入するというのはよく使われるだけに、このような書き方をするのだと覚えておいた方がよいと思います。

・Rows(除外範囲).Select
 Rowsは行番号を指定するコードです。最初の行と最後の行を指定してその間にあるすべての行を指定することができます。ただし、1行だけ指定する場合は、"2:2"というように、始まりと終わりの行番号を同じにしておきます。
 また、連続せずに飛び飛びの行を指定する場合はRangeを使い、たとえば、Range("1:3,5:7")という書き方をします。この場合だと、1行目から3行目、4行目を抜かして5行目から7行目を指定するということになります。
 Selectは指定された範囲を選択するというコードです。

・Selection.EntireRow.Hidden = True
 Selectionというのは、直前で選択されたものを指します。また、EntireRowは選択された行を示すコードです。そしてHiddenは表示と非表示を切り替えるコードで、Hidden = True であれば非表示となりますし、Hidden = False とすれば再表示となります。

・End Sub
 マクロ(プロシージャ)の終了を現すコードです。


【マクロ3】マクロ名「成績表印刷」

Sub 成績表印刷()
'
' 成績表印刷 Macro
'
'印刷範囲を選択状態にします
Range("b2:e24").Select

'選択した範囲を印刷します
Selection.PrintOut , , Copies:=1

End Sub



(コードの解説)
・Range("b2:e24").Select
 生徒数が20人(表の大きさが最大)である場合の範囲 b2:e24を指定し、Selectで選択しています。

・Selection.PrintOut , , Copies:=1
 選択した範囲(Selection)を印刷(PrintOut)するためのコードです。Copies:=2とすれば2部印刷することになります。


【マクロ4】マクロ名「再表示」

Sub 再表示()
'
' 再表示 Macro

'先ほど非表示とした範囲を再表示します
'そのため、まず再表示する範囲を取得するための変数を定義します
Dim 除外範囲2 As Variant

'再表示する範囲を変数に代入します
除外範囲2 = Range("j5").Value2

Rows(除外範囲2).Select

'選択した範囲を再表示します
Selection.EntireRow.Hidden = False

End Sub



(コードの解説)
 マクロ「非表示」と基本的には一緒ですが、Selection.EntireRow.Hidden = Falseというところが異なります。


3.まとめ
 状況に応じて印刷範囲が異なるというのはよくあることですが、今回ご紹介したマクロを使うと、自動的に印刷することが可能になります。
 また、マクロの中で他のマクロを呼び出して処理を行うというやり方を組み合わせると、かなり複雑な操作・処理でも自動的に実行させることができるようになります。その場合、今回示したように、処理の流れを図にしておくとわかりやすくなりますし、ミスもぼうしすることができます。
by t_am | 2012-04-29 10:52 | Excel のあの手この手
 前回は、条件付き書式を使って、指定した出席番号の生徒の成績と順位だけを表示させるシートを作成しました。これを生徒に配布するには、人数分この表を作成しなければなりません。出席番号を1から順番に入れて、その都度印刷すればよいのですが、人数が多くなると手間がかかって大変です。
 Excelには繰り返し行う処理を自動的に実行してくれるマクロという機能があるので、今回はこれを活用する方法について書くことにします。



(付記)
 本稿で紹介しているサンプルファイルをインターネット上で公開しています。「成績通知表(条件付き書式・マクロ)」というファイル名です。Excel2003以前のもの(拡張子xls)と、Excel2007以降のもの(拡張しxlsm)と2種類あります。興味のある方は下記のリンクをクリックしてダウンロードしてください。


http://bit.ly/JmX4VJ


(完成形)
c0136904_20462070.jpg




(マクロについて)
 Excelもしょせんはプログラムなのですから、ユーザーがExcelに実施させるプログラムを書くことも理論的には可能です。しかし、一般のユーザーにはプログラムを書く知識はないので、素人でも手軽に扱えるように「マクロ」という機能が用意されています。
 マクロの基本的な使い方は、ユーザーがExcelに覚えさせたい一連の操作を1度やってみせるというものです。もう少しわりやすく説明すると、Excelに対し、「これからやってみせるからね」という合図をした後、一連の操作を実施します。それが終わったら、「これで終わりだよ」とExcelに教えてやることで、Excelはその操作の内容を記憶します。
 これが基本的な使い方なのですが、本稿では単純なマクロしか扱わないので、いきなりコートを書くことにします。
 なお、本稿ではExcel2010での操作を前提としていますが、Excel2003以前でも基本的な操作は同じです。操作方法が異なる場合は、その都度説明を加えます。

(手順1)ExcelでVisualBasicを起動させます
以下は、新規にExcelファイルを作成した場合の手順です。
(1)Excelでリボンのところある「開発」タブをクリックします。
 「開発」タブが表示されていないときは、「ファイル」タブをクリックして「オプション」を選択肢、「リボンのユーザー設定」をクリックします。右側にある「メイン・タブ」の中にある「開発」のチェックをオンにすると、リボンに「開発」タブが表示されるようになります。



c0136904_2047634.jpg



なお、Excel2003 以前では、「ツール」メニューの「マクロ」から「Visual Basic Editor」を選択します。


(2)「開発」タブの一番左端にある「VisualBasic」をクリックすると、「Microsoft Visual Basic For Application」(以下「VBA」)が起動するので、「挿入(I)」メニューから「標準モジュール」を選択すると、下図のように空白のウィンドウが開きます。


c0136904_20475424.jpg


(付記)
本稿で説明するExcelのマクロは、どのワークシートでも使えるようにするために、「標準モジュール」に登録することにしています。



(手順2)印刷するマクロのコードを入力します
(1)コード・ウィンドウに、次のように入力します。(面倒だという人は、コピー&ペーストしてください)

Sub 印刷()
'
' 印刷 Macro
'
'印刷範囲を選択状態にします
Range("b2:e13").Select

'選択した範囲を印刷します
Selection.PrintOut , , Copies:=1

End Sub



(手順2)入力したマクロの保存
コード・ウィンドウを閉じれば、入力したまくろは自動的に保存されます。

(解説)
・Sub印刷() と End Sub
 マクロの最初には必ず「Sub」を記述することになっており、これはマクロの開始の合図だと思っていれば間違いありません。始まりの合図なのですから、当然マクロの名前も指定することになります。この場合「印刷」というのがマクロの名前になり、()を最後につけることになっています。
なお、Sub マクロ名() というコードを入力すると、自動的にEnd Sub というコードが挿入されます。これはマクロがこれで終了するという合図になります。したがって、マクロで実行する処理は、Subマクロ名() の次の行から、End Subの間の行に記述することになります。

・Range("b2:e13").Select
 印刷する範囲を選択するコードです。前半のRange("b2:e13")で範囲を指定し、後半のSelectは選択せよという指示となります。

・Selection.PrintOut , , Copies:=1
 選択した範囲を印刷するコードです。Selection(選択範囲)をPrintOut(印刷せよ)ということなのですが、末尾の , , Copies:=1は1部だけ印刷するという意味です。

 マクロには独特の文法がありますが、基本はコンピュータに対する命令形です。したがって、何を、どのように、●●せよ、という要素がコードとして記述されることになります。

 マクロのコードは上の行から順番に実行されていきますが、行の先頭に「’」がついている場合、その行に書かれていることは無視されます。マクロのコードは、基本的にはExcelに対する指示書ですが、こうすることで、ユーザーが自分宛にマクロのコードの説明(コメント)を書き込むことができるようになります。なぜこんなことをするのかというと、後でコードを修正する際に便利になるからです。


(手順3)出席番号を順番に入力するコードを記述します
 セルE2に出席番号を順番に入力していくためのコードを入力します。

(1)新しいマクロの記述
 印刷マクロの最後の行のEnd Subの次の行に、Sub 印刷開始()というコードを入力します。こうすると、前の行のEnd Subとの間に線が引かれ、別のマクロであることがユーザーにもわかるようになります。

(2)コードを記述します
 新たに入力するコードは次の通りです。面倒だという方はコピー&ペーストしてください。

Sub 印刷開始()
'
'印刷開始 Macro

'
'出席番号という変数を定義します

Dim 出席番号 As Integer

'マクロ実行中は画面の更新を停止します

Application.ScreenUpdating = False


'セルE2、に1から順番に数値をあてはめ、その都度印刷をします

For 出席番号 = 1 To 9

Range("e2").Value = 出席番号

Call 印刷


Next 出席番号

'セルE2の値を0にします

Range("e2").Value = 0


'画面の更新停止を解除します
Application.ScreenUpdating = True


End Sub  


(解説)
・Dim 出席番号 As Integer

 セルE2に順番に数値を入力していくために、変数というのを使います。変数というのは文字通り値が変化する(この場合は1から9まで)ものという意味であり、どの値になるのかはその都度ユーザーが指示することになります。
 変数を使うには、その変数がどのようなものであるかをあらかじめExcelに教えることが必要で、これを変数の定義と呼んでいます。
 このコードでは、先頭にDimという文字列を配置することで、「出席番号」という名前の変数が、整数型(Integer、少数や文字列は扱わない)であることを、Excelに教えているわけです。
 構文は決まっていて、Dim 変数の名前(漢字OK)As 変数の型 という書き方をします。


・Application.ScreenUpdating = False

 Excelは、マクロの記述されているコートを順番に実行していくので、画面にもその作業の進捗状況が逐一反映されることになります。画面の更新は素早く行われるのですが、今回のように全体の作業量が多い場合は、画面の更新をしないように設定した方が早く処理が終わります。
 そのため、マクロの最初の部分でこのコードを記述しておいて、それ以降の画面の更新を禁止するわけです。
 なお、一連の処理が完了したら、画面の更新を再開させるためのコードを記述しておきます。その場合、末尾のFalseをTrueに変更したものを記述します。

 Application.ScreenUpdating = True  ←画面の更新を再開するコード


・For 出席番号 = 1 To 9
    Range("e2").Value = 出席番号
Call 印刷
 Next 出席番号


 For~Next は同じ処理を一定回数繰り返すときに使うコードです。その構文は、

For 変数=初期値(最初の値) to 最後の値
(処理)
Next


となります。
すなわち、変数が初期値のときに(処理)を行ったら、Nex変数名で変数の値を1つ増やしてから元(For以下)に戻り、同じ(処理)を実行します。以下同じことを変数が最後の値(この場合は9)になるまで繰り返すという意味です。つまり、生徒が9人いるので、同じ処理を全部で9回繰り返せばよいということになるので、それをExcelに命じているわけです。

・Range("e2").Value = 出席番号
これは、セルE2の値として、変数「出席番号」の値を代入せよ、という意味です。前回ご説明したように、セルE2に出席番号を入力すると、その生徒の氏名と成績だけが表示され、他の生徒の氏名と成績は非表示となります。そのうえで、次の印刷処理を行うわけです。
なお、2回目以降は、「Next 変数」 によって、変数の値が1つ増えた状態で処理が行われます。

・Call 印刷
これは、既に登録してあるマクロ「印刷を呼び出して実行するという意味のコードです。以前も申し上げているように、Excelでは細かいパーツに分けて考えるというのが鉄則ですから、指定した範囲を印刷するマクロをあらかじめつくっておき、必要なときにそれを呼び出して実行させるという方法をとっているわけです。

印刷が完了すると、一連の(処理)が完了するので、次の行にある、「Next 変数」によって、変数の値が1つ増えたうえで、最初に戻り、同じ処理が行われます。このマクロでは、それを9回(生徒の人数分)繰り返すことになります。
  
・Application.ScreenUpdating = True

9人分の処理が完了すると、For ~ Nextの処理が完了するので、Excelはその次の行に書かれているコードを実行します。
この例では、画面の更新禁止を解除するという命令が実行され、これで一連の処理がすべて完了することになります。

(手順4)マクロの保存
コード・ウィンドウを閉じて、入力したマクロを保存します。


(手順5)ボタンを配置して、これをクリックすればマクロが実行されるようにする
(1)「挿入」タブで「図形」を選択し、四角形を選びます。

(2)シート上の好きな位置をドラッグして、四角形を配置します。

(3)四角形の上で右クリックし「テキストの編集」から、「印刷開始」という文字列を入力します。これで四角形の上に「印刷開始」という文字列が表示されるようになります。」

(4)もう一度四角形の上で右クリックし、「マクロの登録」を選択します。「マクロの登録」ウィンドウで「印刷開始」を選択します。これは、この四角形とマクロ(印刷開始)をリンクさせるために行うものであり、この登録が完了すると、以後四角形はボタンとなり、マウスでクリックできるようになります。


(手順6)Excelファイルを保存する
マクロの登録が完了したら、Excelファイルを保存します。Excel2010では、マクロが含まれたファイルを登録するには、拡張子を「xslm」に変更しなければなりません。パソコンの設定によっては、拡張子を表示させないようになっている場合もあるので、マクロを含むファイルを保存する場合には、ファイル名も(マクロあり)というふうに変更した方がわかりやすくなると思います。


(おさらい)
(1)マクロとは、Excelに対する、一連の処理の指示書のようなものです。
(2)そのため、「何に対して」「どのように」「○○をせよ」という形で、命令文(これを「ステートメント」といいます)を記述していきます。
(3)命令文で用いる用語と構文は独特なものがありますが、落ち着いてみると、どれも高校程度の英語力で理解できるものばかりです。
なお、記述方法は基本的には次の順番となります。

(処理の対象).(処理)= (処理方法)
※「 = 」の代わりに「 , 」が用いられることもあります。



(次回の予告)
同じ処理を繰り返して実施する場合、マクロを利用すると圧倒的に手間隙を省くことができるようになることがおわかりいただけたことと思います。
今回ご紹介した事例は、生徒数が9人に固定されているので、印刷範囲が変化することはありません。ところが、実際には、クラスが異なれば生徒の人数が変わるように、ケース・バイ・ケースで印刷範囲が変わってくる場合もあります。
そういう場合にはどうしたらよいかについて解説している本は、私が知るかぎり、見たことがありません。そこで、次回は印刷範囲が変わる場合に、(ユーザーの手を煩わせることなく)自動的に処理ができるようにする方法をご紹介することにしたいと思います。
by t_am | 2012-04-22 20:54 | Excel のあの手この手
Excel には条件付き書式という便利な機能があります。計算式や関数が「セルに表示させる値を決めるための取り決め」であるとするならば、セルの書式設定は「セルの内容をどのように表示させるかという取り決め」になります。
これに対して、条件付き書式というのは「条件によってセルの見せ方を変更させる」機能です。したがって、発想を変えると「ある条件の下ではセルの内容を見せないようにする」という使い方も可能となります。もちろん、複数の条件を組み合わせることも可能です。


(付記)
 本稿で紹介している画像のサンプルファイルをインターネット上で公開しています。「成績通知表(条件付き書式)」というファイル名です。Excel2003以前のもの(拡張子xls)と、Excel2007以降のもの(拡張しxlsx)と2種類あります。興味のある方は下記のリンクをクリックしてダウンロードしてください。


http://bit.ly/JmX4VJ



(例題)テストの成績通知表を作成する。
永田町高校では、この前行ったテストの成績表に基づいて、一人一人の生徒の渡す成績通知表を作成しています。その際に、生徒のプライバシー保護のため、自分の順位はわかるようにするものの、他の生徒の順位はわからないようにして成績通知表をつくらなければなりません。(下図参照)


c0136904_18121186.jpg



セルの内容が見えないようにする方法として Excelには下記のように2種類の方法があります。

1)「セルの書式設定」の「表示形式」→「ユーザー定義」で「;;;」(半角セミコロンを3つ)入力する方法
2)文字の色を白にする方法(白い紙に白い色で文字を書いても読むことはできないという理屈です)

1)の方法だと、画面上でドラッグして反転表示させると文字を読むことができるようになりますが、紙に印刷してしまえば1)でも2)でも同じ結果になります。いつも申し上げるように、Excelでは唯一の正解というのはないのですから、むしろ発想を柔軟にしておいた方が、自分で作表する際には有利になります。
考えかたとして、セルE2に入力した出席番号の生徒の成績だけを表示させ、そうでない生徒は見えないようにするということになります。
なお、自分が全体の中でどの位置にいるのかが視覚的にわかるようにするために、表の左端にある順位の数字は表示させたままにしておきます。
したがって、第2列目以降に条件付き書式を設定すればよいことになります。

(Excel2003以前の場合)
セルC5をクリックしてから、「書式」メニューを開き「条件付き書式」をクリックします。表示されたダイヤログボックスで「セルの値が」を「数式が」に変更してから、次の式を入力します。

=$C5<>$E$2

次に、書式を設定するのですが、「ユーザー定義」が利用できない場合は、文字の色を白くするというやり方で対応します。

(Excel2007-2010の場合)
セルC5をクリックしてから、「ホーム」タブにある「条件付き書式」をクリックして「新しいルール」を選択します。「数式を使用して、書式設定するセルを決定」を選択します。「次の数式を満たす場合に値を書式設定」の欄に、条件式を入力します。(条件式はExcel2003以前の場合と同じです)


c0136904_1816731.jpg




「書式」ボタンをクリックすると「セルの書式設定」ダイヤログボックスが開くので、「表示形式」タブから「ユーザー定義」をクリックし、「種類」の欄に「;;;」と半角セミコロンを3つ入力します。(その結果、すぐ上の「サンプル」欄が空白になることをご確認ください。)


c0136904_18163796.jpg


(ここから先は共通の操作となります)
セルC5で右クリックし、コピーしてから、残りのすべてのセルに「形式を選択して貼付」→「書式」を行います。
条件式で、「=$C5<>$E$2 」としたように、$C5は混合参照であり、$E$2は絶対参照としています。書式のみのコピー&ペーストした場合、列が変わっても条件式は変わりませんが、行が変わった場合、条件式のうち「$C5」は「$C6」「$C7」「$C8」というふうに変化していきます。一方参照先であるセルE2については変わっては困るので絶対参照にしています。


このようにして、成績通知表ができあがりましたので、あとはこれを印刷して生徒に渡すだけでよいことになります。けれども、手作業でそれを行うのも手間なので、Excelに全部やらせることができれば非常に楽になります。
次回は、そのやり方について書くことにしたいと思います。
by t_am | 2012-04-21 18:18 | Excel のあの手この手
このブログをご覧いただきありがとうございます。これも何かとご縁と思い、「Excelのあの手この手」で取り上げたExcelのサンプルファイルを公開したのでご案内いたします。下記のリンクをクリックのうえ、お好きなファイルをダウンロードしてください。
拡張子が「xls」のものはExcel97-2003形式ファイルです。Excel2007、Excel2010をお使いの方は拡張子が「xlsx」のファイルをダウンロードなさることをお勧めします。


http://bit.ly/JmX4VJ



著作権などという野暮なことは申しませんので、編集・再配布等ご自由にどうぞ。
by t_am | 2012-04-19 23:03 | Excel のあの手この手
4月13日に行われた北朝鮮の「ロケット」の打ち上げがについて、日本政府の発表が、午前7時38分に行われた打ち上げの45分後である午前8時23分となったことが批判されています。韓国国防省の発表が午前8時頃だったそうで、それと比較すると遅すぎるというものです。

同日行われた藤村官房長官の会見の要約は次の通りです。(NHK News Webより)

(1)午前7時40分ごろ、防衛省に、アメリカ軍の早期警戒衛星を通じて、「北朝鮮から何らかの飛翔体が発射された」という情報が入り、藤村官房長官には、7時42分に報告された。

(2)日本は、レーダーで飛翔体の軌道の探知を始めていたが、1分ほどで軌道を見失った。同じころ、アメリカ側からも「北朝鮮から発射された飛翔体の軌道を見失った」という情報がもたらされた。

(3)日本政府は、アメリカの早期警戒衛星が誤って探知した可能性も捨てきれず、さらなる確認が必要だったことに加え、レーダーから飛翔体が消え、日本の領域に被害を及ぼす可能性はないと判断したことから、この段階では発射の発表は見送った

(4)誤まった情報を出さないために、必ずダブルチェックをするというのが当初からの対処方針だった。レーダーなどあらゆる情報手段を活用して、もう一つのルートを確認していた。

(5)Em-Netによる自治体・報道機関向けの午前8時3分の通知
北朝鮮が、人工衛星と称するミサイルを発射したとの一部報道があるが、我が国としては、発射を確認していません。(これと同じものが8時6分に首相官邸からツイートされました。

(6)午前8時23分に行われた田中直樹防衛大臣の会見の要約
何らかの飛翔体が発射されたという情報があり、1分以上飛行し、洋上に落下した模様だ。わが国の領域への影響は一切ない


政府発表が遅れた理由として、このような経緯があったことを説明した上で(4)のダブルチェックをしたうえで発表するという方針によるものだと述べているわけです。しかしながら、こうして並べてみると、(2)では日本も「飛翔体の軌道の探知を始めていたが、1分ほどで軌道を見失った」と述べているのですから、ダブルチェックができたいたことがわかります。しかも探知後1分ほどで軌道を見失ったことまでアメリカからの通報と一致しているわけです。
にもかかわらず、(3)において、「アメリカの早期警戒衛星が誤って探知した可能性も捨てきれ」ないと述べているのはなぜでしょうか? 日本のレーダーとアメリカの衛星が同じ出来事を探知しているのに、なぜアメリカの衛星の探知ミスを心配する必要があるのでしょうか?
さらに、(3)で、アメリカの衛星の探知ミスの可能性に触れておきながら、レーダーから飛翔体が消えたという出来事を無条件で信用しているのも不思議です。存在しないものが表示される恐れがあるのならば、存在するものが表示されなくなるという可能性も否定できないはずだと思うのですが・・・・

もう一度藤村官房長官の会見を読みかえしてみると、(2)がなければ、一連の流れは辻褄が合うように思われます。すなわち、日本のレーダーが起動の探知を始めていたという部分が事実と違うのではないかということであり、言い換えれば、日本のレーダーは北朝鮮の「ロケット」を探知できないまま終わったのではないかということです。

日本のレーダーが探知していたというのであれば、午前8時3分のEm-Netの通報(我が国としては、発射を確認していません)は事実と異なります。

以下は推測となりますが、日本では北朝鮮の「ロケット」の打ち上げから墜落までをレーダーで探知することはできず、アメリカからの情報しか得ることができなかったのでしょう。また、2009年の打ち上げの際に、誤報を犯し責められたことから、今回は誤報だけは避けたいと考えたのではないかと思われます。そのため政府の発表が遅れるうちに韓国国防省が発表し、さらにマスコミもニュースとして流し始めたことで、政府は慌てたのでしょう。発射を追認すれば、今まで何をしていたのだと言われるのは目に見えていますし、かといって現在確認中ですと発表しても、何をもたもたしているのだと非難されるだけです。そんなみっともないことはできないので、「我が国としては、確認していません」という言葉になったのだと思います。こうしておけば、後で「ダブルチェックをしないうちは軽々しく発表できないと考えていました」と言い訳できるというのもあります。もっとも、「レーダーから飛翔体が消え、日本の領域に被害を及ぼす可能性はないと判断した」というのは口が滑ったのでしょう。また、「日本は、レーダーで飛翔体の軌道の探知を始めていたが、1分ほどで軌道を見失った」というのも、日本のレーダーが探知できなかったと認めるわけにはいかないという事情が言わせたのだと思われます。人間、嘘や言い訳をしようとすると、つい余計なことまで口走ってしまうものであり、藤村官房長官も例外ではなかったということなのでしょう。(そうではなく、藤村官房長官が発表したことがすべて事実であった場合、当日首相官邸に詰めていた皆さんは揃いも揃って無能無策であったということになります。だとしたら、すみやかに辞表を提出された方が、これ以上恥を晒す必要がなくなるので、ご本人のためであると思います。)


なぜ日本のレーダーが北朝鮮の「ロケット」を探知できなかったのでしょう? この疑問に対する軍事専門家の答えは、レーダーを搭載したイージス艦の位置が発射場から遠く離れたいたことが原因であるというものです。どれほど高性能のレーダーであっても水平線の下にある物体を探知することはできません。地球は丸いのですから、日本海に展開しているイージス艦にとって、北朝鮮の発射場は水平線の下にあることになります。したがって、「ロケット」が発射され、イージス艦と水平の位置に達するまでは、イージス艦からは「見えない」ことになるわけです。万一、「ロケット」がその高度に達するまでに爆発してしまえば、結局イージス艦は探知することができないという理屈です。

この問題を解決するには、日本のレーダー(すなわちイージス艦)を可能な限り北朝鮮の発射場に近いところで待機させる以外にありません。それがどのあたりになるのかは計算によって求めることができます。そういうことをしていたにもかかわらず、探知できなかったというのであれば、今後のためには、違った方策も考えなければならないでしょう。

自民党の石原幹事長は、今回の40分について真相を究明すると述べていますが、権力闘争を念頭に置いた魔女狩りのようなことを行なうのは害の方が大きいといえます。むしろ、今回の一連の「騒動」によって明らかになったのは、日本の有事対応として決められていることが現実の前には無力であるということなのですから、それを改める方が優先するはずです。
今回は北朝鮮が発射する時間帯を予告していたために、朝の7時前に関係閣僚が首相官邸に集まるということができたわけです。けれども、あらかじめ予告して有事が起こるわけではありません。むしろ突然に起こるのが当然だと考えるべきでしょう。したがって、有事の際に、どれだけ短時間で初動体制をとることができるかポイントになります。(小沢一郎は、有事は、のこのことPAC3を沖縄まで運んでいくのを待っていてくれるはずがないという意味のことを述べていたそうです。)

日本の自衛隊は装備も充実しており、隊員も優秀であることは東日本大震災の際に証明されています。ところが日本では、有事にあたって自衛隊をどのように活用するのがいいのかについてこれまで真剣に検討されたことがないように思います。議論されていたとしても、自衛隊を出動させる手続きをどうするかという類のものばかりですから、今回のように政府が無様な姿を晒すわけです。

石原幹事長が目論むように魔女狩りを行っても、問題の本質は改善されません。それならば、いっそのこと有事の際には米軍の指揮下に入るとしておいた方が、被害を最小限にくい止めることができるはずです。
独立国家としてそんなことができるかと思うのであれば、自分たちで日本の防衛を行うという覚悟を固める以外に選択肢はありません。というよりは、それが当たり前なのです。 それも嫌だというのであれば、現在のように誰が日本を防衛するのかについて曖昧なままにしておくというのがベストでしょう。その代わり、いつまで経っても外交オンチの国民のまま(代表的なのがイランに行ったあの人)ですし、有事に際してまともな判断ができないリーダーばかり登場するのは避けられないと思います。
ただし、これは個人の資質の問題ではありません。普段考えていないことを突然やれといわれてできる人間などどこにもいないというだけのことです。その典型的な例が田中防衛大臣であることはいうまでもないでしょう。
by t_am | 2012-04-15 00:41 | その他
北朝鮮の「ロケット」打ち上げが失敗したとのことです。国力というのはこういうところに現れるのかもしれません。国民の飢えを解消できない国にとって「ロケット」(弾道ミサイルでもいっしょ)というのは、やはり高い買い物なのでしょう。

 北朝鮮は既に核兵器を持っていますが、持っているだけでは意味がありません。核兵器は敵国で爆発させなければならないのですから、どうやって核兵器をそこまで運ぶかということが課題となります。宅配便で送るわけにはいきません。そうなると空輸(?)しかないのですが、飛行機で運ぼうとしても、制空権を握っていなければ途中で撃墜されるだけなので、どうしてもミサイル(それも大陸間弾道弾)を持つ必要があるのです。

極東アジアに関係するすべての国は北朝鮮の「ロケット」の打ち上げに反対しており、なんとか思いとどまらせようとしてきました。けれども、北朝鮮は、ロケットの開発は国の主権に属することであるから他国の干渉を受けるいわれはないと主張し、実際に打ち上げを強行したわけです。

 興味深いのは、今回の打ち上げがなぜ失敗したかではなく、北朝鮮のミサイル発射実験はなぜ失敗が続くのか(2009年に続き、今回も失敗しました)、ということです。北朝鮮の技術力が低いのはわかっています。それよりも、なぜ技術力が低い水準に留まっているのか、というところに興味を引かれるのです。

 技術力とひと言でかたづけてしまうのは乱暴かもしれません。思うに、弾道ミサイルというのは(自動車と同じように)技術の裾野が広いのではないでしょうか。自動車を国内で生産するということは、そこで使われる全ての部品を国内で調達するということですから、製鉄業・機械工業・ガラス工業・電気工業・繊維工業などが発達していなければできません。どの国でも生産できるというものではないのです。同様に弾道ミサイルも国内生産するならば、そこで用いられる部品を高い精度で加工できる工場が国内に多数なければなりません。いいかえれば、それらの工場が喰っていけるだけの仕事(需要といってもよい)が国内になければ、産業として成り立たないのです。

 無理を重ねれば、試験的に1基の弾道ミサイルを製造することはできるかもしれませんが、ある程度量産できる体制を整えないと、アメリカの武力に対する抑止力にはなりません。ところが、それを実現させるには産業のインフラが整っていないのだろうと推測するのです。

 どこに飛んでいくか分からないミサイルならばすぐにでも配備できるのでしょうが、アメリカが脅威を感じる弾道ミサイルが実戦配備されるまでには、まだ相当高いハードルがあるように思われます。
by t_am | 2012-04-14 06:55 | その他
 手帳の代わりにiPhoneを使うようになって1年半が経ちました。手帳の場合、1年毎に買い替えなければならないのですが、住所録の引き継ぎが大変だったのが直接のりゆうですが、スマートフォンに切り替えてかえって便利になったことがいくつかあります。

1.手帳に比べ記録できる情報量が圧倒的に増えた
 受付に人がいない企業が増えています。人件費の節約のためなのですが、人がいない代わりに電話機が置いてあって、訪問者は面会相手の部署に内線をかけて到着したことを告げるという仕組みです。確かに合理的なのですが、その代わり、面会相手の所属を覚えておかないと会うことができないということになります。手帳の場合、そこまで書き込むスペースがないものも多いのですが、スマートフォンのカレンダーアプリだと、訪問先の住所・所属・電話番号なども記録しておくことができます。

2.以前の記録を読みかえすことだできるようになった
 手帳は毎年更新されるので、昔の手帳を几帳面にとってあれば別ですが、昨年の記録を探すことが基本的にできません。スマートフォンでは、キーワードで検索することができるので、昔の記録を読みかえすことができるようになります。

3.周期的に発生するイベントをコピーできる
 たとえば通院する場合、入力する内容は(日時を除けば)毎回同じです。手帳だと毎回買かなければなりませんが、カレンダーアプリだと1度入力したものをコピーして使い回すことも可能です。


 このように、便利なスマートフォンですが、使いこなすためにはそのためのアプリを購入しなければなりません。最初から付属しているアプリもあることはあるのですが、概して使い勝手が悪く、新たにアプリを購入した方がずっと便利になります。もちろん、無料で使えるものも多く、有料のアプリであってもパソコンのソフトに比べればずっと安いので、積極的に活用していった方が賢いといえます。


 スマートフォンを日本語に訳すと多機能携帯電話ということになるそうです。個人ユーザーの場合、スマートフォンで通話しない日があっても、メールやツイッター、Webサイトにアクセスしない日はないのですから、むしろ携帯情報端末といった方がぴったりするかもしれません。

 そこで扱われる情報には二種類あって、使い捨ての情報と残しておきたい情報とに分けることができると思います。使い捨ての情報というのは、たとえば電車の乗り換え案内やマクドナルドのクーポンのように、用が済んだらそれで必要なくなるというものです。

 ところが、中にはこの情報は残しておきたい、もしくは持ち歩きたいという性質のものもあります。住所録(連絡先)がそうであるように、手帳に書き込む類の情報は基本的に持ち歩きたい情報になります。

 これは余談になりますが、ツイッターは基本的には使い捨ての情報です。それでも中には後で読みかえしたいというツイートもあって、そういうニーズに対応したサービス(ツイログやTogetterなど)も登場しています。

 このように、情報を残しておきたいという欲求は、程度の差はあっても、万人に共通したものであるといえます。スマートフォンの記憶容量はそのニーズに十分応えるだけの能力を持っているのですから、あとはデータを管理するためのアプリを揃えればいいということになります。

 情報を持ち歩いていつでもどこでも利用できるようにしたいということの意味は、どのデバイス(装置)でも利用できるということも含んでいます。iPhoneではみることができるけれどもパソコンではみることができないというのでは困ります。このため、パソコンとiPhoneをどうやって同期させるかということがユーザーにとって悩みの種でした

 EverNoteなどのオンラインのストレージサービスが普及したことにより、それを意識したソフトも出回るようになりました。私の場合、OneNoteとATOK Padを使っています。

【OneNoteについて】
 OneNoteにはパソコン版とスマホ版があって、それぞれインストールすることで、マイクロソフトが無償で提供しているSkyDriveというオンラインストレージサービスを通じてデータの同期が可能になります。

(OneNoteの機能紹介ビデオ)
http://www.microsoft.com/ja-jp/office/2010/features/videos.aspx#OneNote

 自宅のパソコンでWebサイトのページをOneNoteにまるごと記録すると、それが自動的にiPhoneのOneNoteにも送られます。ユーザーはiPhoneのOneNoteを立ち上げておけば、特に何もする必要がありません。iPhoneのOneNoteに送られたデータはオフラインで閲覧することが可能なので、たとえば出勤途中の地下鉄の中でゆっくり読むこともできるようになります。

 ただし、iPhone版のOneNoteはパソコン版に比べると機能が制限されており、Webサイトをまるごと記録することはできませんし、描画することもできません。また、オーディオやビデオを埋め込むこともできません。できるのは、文字の入力(コピー&ペーストは可能)と写真の挿入(カメラで撮影するか写真ライブラリからコピーする)に限られています。

 私の場合、そのほかに、本を読みながらノートをとるときにOneNoteに書き込んでおいて、それをiPhoneでもみられるようにしておくという使い方をしています。本に付箋を貼り付けるというやり方もありますが、それだと持ち歩ける本が限られるだけでなく、付箋を1枚ずつ丁寧に書かなければならないという面倒くささもあります。本を電子化して一緒にiPhoneやパソコンに入れておけばさらに便利になります。

※iPhoneのOneNoteは無料で入手できますが、閲覧できる件数に制限があります。これを解除するには450円を払ってアドオンを購入する必要があります。試しに使ってみて気に入ったら450円を払ってくださいということなのでしょう。iPhone版だけでもそこそこ使えますが、真価を発揮するにはパソコン版と両方用意した方がよいと思います。


【ATOK Padで同期する】
 OneNoteが重戦車だとすると、ATOK は装甲車のようなものです。文字とハイパーリンクしか入力することができませんが、手軽に使うことができます。
 また、TwitterのビューワであるTweet ATOKを使うと、残しておきたいツイートをATOK Padに転送することができ、Evernote経由で自宅のパソコンのATOK Padに送ることができます。

 さらに一太郎には前バージョンからソプラウィンドウという機能が装備され、TwitterやEvernoteの内容をサイドバーのように画面右側に表示させておくことができるようになりました。おかげで、iPhoneで入力した文章メモをATOKPadを使うことでEvernote経由で自宅のパソコンに表示させることができ、一太郎で作成する文書に反映させることも簡単にできるようになりました。

 もともと日本語入力ソフトとしてのATOKは優秀であり、このようにの環境が整備されたおかげでさらに使い勝手のよいものになったといえます。なお、パソコンのATOKの辞書とiPhoneのATOK Padの辞書は自動的に同期されます。
by t_am | 2012-04-09 00:16 | iPhoneを使いこなすために