フィールドはWord文書にただの文字列とは違う効果を与えるための仕組みで、日付が自動的に更新される仕組みもこのフィールドが使われています。
Wordの索引は、対象となる文字列に索引項目フィールドを追加して作られます。
索引項目は「蜜柑{ XE “蜜柑”\y”みかん”}」のように表示されます。
これを一括して削除するためのマクロです。
Sub 索引項目一括削除()
For Each myfield In ActiveDocument.Fields
If myfield.Type = wdFieldIndexEntry Then
myfield.Delete
End If
Next
End Sub
Wordには自動的に索引を作る機能がありますが、索引に使われる文字列を登録するのが面倒です。
あらかじめ登録する文字列を一覧表にしておき、これを使って登録する方法が自動索引登録です。Word2007で確認しました。
なおWordでは「索引(Index)」は「みかん…24、りんご…35」というような文字列が何ページに出てくるかを表す一覧表を指します。
「索引挿入」はこの索引そのものを作ることを指し、「索引登録」は索引に使われる文字列(索引項目)を登録することを指します。
索引登録ファイル
別途、Word文書で索引登録ファイルを作る。
- 2列の表を挿入する。
- 1列目に文字列、2列目に「”文字列”\y”もじれつ”」というように文字列と読みを組み合わせて入力する。
| 蜜柑 |
“蜜柑”\y”みかん” |
| 林檎 |
“林檎”\y”りんご” |
| 檸檬 |
“檸檬”\y”れもん” |
自動索引登録
- 自動索引登録をしたい文書を開く。
- 参考資料-索引-索引の挿入を選択し「索引」ダイアログを表示。
- 「自動索引登録」をクリック。
- 索引登録ファイルを選択して「開く」をクリック。
Word文書には範囲指定した部分に対してコメントを付けることができます。
しかし範囲を変更することができません。
そこでマクロを作ってみました。
使い方
正しい範囲を指定します。
このとき元の範囲と重なる部分が必要です。つまり範囲を広げるか狭めるかのいずれかです。全く別の場所に移動することはできません。
マクロ「コメント範囲変更」を実行します。
元のコメントが削除され、新たに指定した範囲に元のコメント文がセットされます。
VBAコード
Sub コメント範囲変更()
With Selection.Range
rs = .Start
re = .End
End With
For Each mycomment In ActiveDocument.Comments
With mycomment
ss = .Scope.Start
se = .Scope.End
If (rs <= ss And ss <= re) _
Or (rs <= se And se <= re) _
Or (ss <= rs And rs <= se) _
Or (ss <= re And re <= se) Then
myindex = .Index
mytext = .Range.Text
End If
End With
Next
With ActiveDocument
.Comments(myindex).Delete
.Comments.Add Range:=Selection.Range, Text:=mytext
End With
End Sub
Wordのコメントだけを抽出して一覧にするマクロです。
Word文書を開き、マクロ「コメント一覧作成」を実行すると、文書の末尾にコメント一覧を出力します。
Word2007で確認しました。
VBAコード
Sub コメント一覧作成()
With ActiveDocument.Content
.InsertAfter "【コメント一覧】"
.InsertParagraphAfter
For Each mycomment In ActiveDocument.Comments
With mycomment
i = .Index
d = .Date
a = .Author
rt = .Range.Text
st = .Scope.Text
End With
.InsertAfter i & ">" & d & ">" & a & "「" & st & "」" & rt
.InsertParagraphAfter
Next
End With
End Sub
出力例
【コメント一覧】
1>2012/04/02 14:38:00>佐藤「緑茶」ここは紅茶では?
2>2012/04/04 10:38:00>鈴木「コーヒー」具体的な豆の名前が必要。
3>2012/04/03 15:39:00>佐藤「売上」単位は?
Excelで「=8.45-INT(8.45)」を計算すると「0.45」になります。
8.45を切り捨てると8、これを元の数から引くと0.45となります。
これは小数部分だけを取り出す方法です。「=MOD(0.45,1)」とする方法もあります。
しかし表示桁数を増やしてみると「0.449999999999999」になります(Excel2007で確認しました)。
つまりExcelは内部的には「0.45」ではなく「0.449999999999999」で保持していると思われます。有効桁数は15桁だそうです。
通常はこれでも問題ないのですが、切り捨てるときに不具合が生じます。
例えば「=ROUNDDOWN(8.45-INT(8.45)+0.55,0)」は「=ROUNDDOWN(8.45-8+0.55,0)」すなわち「=ROUNDDOWN(1,0)」と同じですから、結果は「1」となるはずですが、実際は「0」となってしまいます。
Excelで計算が合わない場合は、このような小数が原因かもしれません。
対策としては式の途中で適当な桁で丸めてしまう方法が考えられます。
「=ROUNDDOWN(ROUND(8.45-INT(8.45)+0.55,6),0)」
切り捨てる直前で適当な桁数で四捨五入します。
この「適当な桁数」は、最後に切り捨てるときの桁数よりも大きく、15桁より小さければよいと思います。
Wordでフローチャートを作るときのコツを書きます。Word2007で確認しました。
まず描画キャンバスを使います。
挿入-図-図形-新しい描画キャンバスを選択すると大きな長方形が挿入されます。
この上に図形を自由に配置できます。
次に四角形(図形)を配置します。
挿入-図-図形-フローチャートから選択します。
長方形は「処理」、ひし形は「判断」などのルールがあります。
| 図形 |
内容 |
| 長方形 |
処理 |
| ひし形 |
判断(YESまたはNOで分岐します) |
| 左右二重線の長方形 |
定義済処理 |
| 左右丸の長方形 |
端子(フローチャートの開始と終了を表すそうです) |
四角形同士をコネクタで繋ぎます。「直線」や「矢印」を使います。
コネクタの端を、長方形の辺の中心やひし形の頂点に合わせておきます。こうすると四角形を移動してもコネクタが自動的に繋がります。
この機能は描画キャンバスを使っている場合だけ対応しているようです。
カギ線コネクタを使うと水平な線と垂直な線を組み合わせて繋ぐのでフローチャートらしい線になります。
HTMLのテーブルにExcelのようなフィルター機能を付けようと思い、jQueryのプラグインを探したところ、見付からなかったので、自分で作ってみました。
サンプル
tablefilterサンプル
プラグイン
ダウンロードしてください。
jquery.tablefilter
使用例
jQueryの本体と「jquery.min.js」と上でダウンロードした「jquery.tablefilter.js」を適当なフォルダに保存します。それに応じて「src=」の部分を書き換えてください。
「$(“table”).tablefilter();」と書くとそのページ内のすべてのテーブルにフィルターボタンが設置されます。
特定のテーブルだけに適用するときは、テーブルにidを設定し「$(“#mytable”).tablefilter();」のようにします。
Excelの条件付き書式を使って日曜日だけを赤く表示する方法です。Excel2007で確認しました。
Excelでは日付をシリアル値(1900年1月1日がシリアル値1)で管理しています。
MOD関数を使い、7で割った余りから曜日を知ることができます。0ならば土曜日、1ならば日曜日となります。
これを利用します。
- セルに日付を入力。ここでは「A1」セルとします。
- ホーム-スタイル-条件付き書式-新しいルールを選択し「新しい書式ルール」ダイアログを表示。
- ルールの種類で「数式を使用~」を選択。
- 「次の数式~」に「=IF(MOD(A1,7)=1,TRUE,FALSE)」と入力。
- 「書式」をクリックし、フォントを赤にするなどセルの書式を適当に設定。
- 「OK」をクリック。
条件付き書式で数式を使用する場合は、最初に「=」を使い、TRUEかFALSEが返るように式を作ります。
つまりIF関数を使えばいいのです。
MOD関数を使って曜日をチェックしましたが、WEEKDAY関数を使ってもよいです。
もし土曜日と日曜日を赤くしたければ次のようにします。
数式に「=IF(MOD(A1,7)<=1,TRUE,FALSE)」と入力すれば、余りが0または1の場合となり、土曜日と日曜日のとき書式が適用されます。
「-」を「ハイフン」と読みますが、年配の人だと「ハイフォン」と読む人が多いようです。
英語の発音記号を見るとどちらでも正しいようですが、「ハイフォン」だとベトナムの都市を思い浮かべてしまうので、私は「ハイフン」と読んでいます。
正規表現におけるハイフンは「○から○まで」という範囲を指定するときに使えてとても便利ですが、この挙動について勘違いしていたので、調べてみました。JavaScriptです。
「a-b-c」という文字列に対して正規表現「[a-c]」を使ってみます。
x="a-b-c";
y=x.match(/[a-c]/g);
z=y.join(",");
この場合、結果(z)は「a,b,c」となりました。
同じようにして色々と試してみます。
| 元 |
正規表現 |
結果 |
| a-b-c |
[a-c] |
a,b,c |
| a-b-c |
[a-] |
a,-,- |
| a-b-c |
[-c] |
-,-,c |
| a-b-c |
[a-c-] |
a,-,b,-,c |
つまり[○-○]という形で使った場合は「○から○まで」という意味になりますが、これ以外では単に「-」という文字そのものを表すということになるようです。
[a-c]⇒a,b,c
[a-]⇒a,-
[-c]⇒-,c
[a-c-]⇒a,b,c,-
実は、今までハイフン(「-」)を指定するには「\-」としていたのですが、実際は「\」は不要でした。
文化祭などでチケットを手作りすることはよくあると思います。
これをExcelで作り、1枚ずつ通し番号を付けたいとします。
A4の紙を使うとして紙1枚からチケット4枚を印刷することにします。
Excel2007で確認しましたが別のバージョンでも動くと思います。
Excelでチケットを作る
- Excelで1枚分のチケットを作ります。
- 通し番号をセットするセルを決めます。ここでは「C2」とします。
- 1枚分の範囲を3回コピーしてA4版に4枚分のチケットを作ります。
- 2枚目の通し番号のセルに「=C2+1」と入力します。
- 3枚目の通し番号のセルに「=C2+2」と入力します。
- 4枚目の通し番号のセルに「=C2+3」と入力します。
マクロを設定する
Visual Basic Editorを開き、次のマクロをセットします。
Sub 連続印刷()
myrow = 2 'セットするセルの行(C2ならば「2」)
mycol = 3 'セットするセルの列(C2ならば「3」)
numberfrom = 1 '最初の番号
numberto = 1000 '最後の番号
numberstep = 4 '1ページあたりの番号
For i = numberfrom To numberto Step numberstep
Cells(myrow, mycol) = i
Sheets.PrintOut
Next i
End Sub
状況に応じて書き換えます。
myrowとmycolは通し番号をセットするセルの行と列です。「C2」ならば、myrowに「2」、mycolに「3」とします。
numberfromは最初の番号です。
numbertoは最後の番号です。チケットを1000枚作るならば「1000」とします。
numberstepは1ページあたりのチケットの枚数です。
マクロを実行する
このマクロを実行します。
通し番号を順々にセットして連続して印刷します。
最近のコメント