2007-04-17

Word 数字の1桁を全角に2桁以上を半角に

今日、とある日本から持ってきたはずのファイルを探していたら、昔作ったマクロにであった。

数字の一桁を全角に、二桁以上を半角にすると言うもの。有報等を紙で出していた時代に厳しくチェックするように言われていた時代があった。そのときに僕には目で対処しきれないと思って作成したもの。

目的が目的なので、「.」「,」には対応しているが、「/」やら「+」やらには対応していない。契約書などで使う分にはとりあえず必要ないかと。その代わりといってはなんだが、変更箇所は履歴で表示してくれる。別名保存でクリーン版を作成し、それにこのマクロを適用すると、変更箇所にすぐにたどり着けると思う。

今の時代の人はいらないかもしれないが、契約書等で使う人もいるかもしれないと思い、開示する。

留学との絡みでは、留学前アソシには必要(?)で、留学中は全く不要のものといったところ。
ちなみに、ファイルは見つからずじまい・・・・



Sub ひとけた全角ふたけた半角()

Dim motorireki As String

'履歴を最少にするために回りくどい処理をしている
'変更履歴の記録開始
motorireki = ActiveDocument.TrackRevisions

If motorireki = False Then
ActiveDocument.TrackRevisions = True
End If

'全角数字等が続くものは半角にする
Selection.Find.ClearFormatting
With Selection.Find
.Text = "[0-9.,.,]{2,}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Do While Selection.Find.Execute = True
Selection.Text = StrConv(Selection.Text, vbNarrow)
Selection.Collapse wdCollapseEnd
Loop

'43のたぐいに対処
Selection.Find.ClearFormatting
With Selection.Find
.Text = "[0-9][0-9]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Do While Selection.Find.Execute = True
Selection.Text = StrConv(Selection.Text, vbNarrow)
Selection.Collapse wdCollapseEnd
Loop

'34、のたぐいに対処
Selection.Find.ClearFormatting
With Selection.Find
.Text = "[0-9][0-9]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Do While Selection.Find.Execute = True
Selection.Text = StrConv(Selection.Text, vbNarrow)
Selection.Collapse wdCollapseEnd
Loop



'前後に半角数字等がつかない数字等を全角にする
Selection.Find.ClearFormatting
With Selection.Find
.Text = "[!0-9.,][0-9][!0-9.,]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Do While Selection.Find.Execute = True
'先頭の一文字を選択範囲から外す
Selection.MoveStart unit:=wdCharacter, Count:=1
'最後の一文字を選択範囲から外す
Selection.MoveEnd unit:=wdCharacter, Count:=-1
'全角に変換
Selection.Text = StrConv(Selection.Text, vbWide)
Selection.Collapse wdCollapseEnd
Loop


'変更履歴記録を終了
If motorireki = False Then
ActiveDocument.TrackRevisions = False
End If

End Sub

2007-04-15

パソコン高速化

先日久しぶりにパソコンの高速化というものをしてみた。

最近年を取ったのか、基本的にこう言ったことに対する興味を失っている。パソコンの能力が上がり、成熟期に入ったためかもしれない。また、不安定になった場合に十分に向き合ってそれを解決する時間を失ってしまったからかもしれない。

ただ、現在起動完了にかかる時間は5分強。通常ハイバーネーションを使っているとはいえ遅い。ネット環境もマンハッタンは東京と比べものにならないくらい悪い(CATV5Mとかが未だに主力商品、家庭向け光ケーブルの選択肢はない。。。)。その結果、日々あまりの遅さに閉口する生活。そう言ったわけで今回高速化の分野を増やすことにした。

で、その高速化であるが、今回したのも含めて、これはいいと思ったものは以下。


1 窓の手

ご存じ窓の手でのカスタマイズ。更新は止まっているようだが、未だにこれが一番シンプルでいい気がする。
http://www.asahi-net.or.jp/~vr4m-ikw/

このうちでも、①パフォーマンス→カーネルをメモリに置く(メモリが十分にあることが前提)②スタートパネル→スタートメニューの表示速度(早い)③ie→1つのサーバーに同時に張れるコネクション数の上限(16とした)は、特に目立ったデメリットがなく、高速化に役立つ。③は、今回やってみたばかりで正直よくわからない(同時に多数のwebにアクセスしないと意味がないのではとも思う)が、まあ、デメリットがないので、よしとする。

ちなみに、上記に加え、今回、ファイルキャッシュサイズを128Mにしたところ、起動時の使用メモリが600MBに迫る勢い(のこり300Mちょっとと表示される)。これは辞書ソフトを使っている関係上困る。とりあえずそのままに下が、近々戻すことになると思われる。

2 ATOK

2点.

①変換辞書をHDDからメモリに移す(プロパティ→オンメモリ辞書。メモリが十分にあることが前提)、②プロパティ→パレット→詳細設定→自動最大化/最小化(はやい)。はいいかも。パレットはちなみに拡大表示の上、自動最大化/最小化する設定にしている。これは前からやっているが特に不都合はない。

3 Windowsの設定

クラシック設定にすれば早いのは知っていたが、めんどくさいのでやっていなかった。見栄えも相当悪くなるし。

見栄えが悪くなってもいいから早くという向きには、設定集を使うことをお薦めする。これにより、一括で設定ができる。

今回使ったのは、以下。
http://www.mtblue.org/pc/tips/speed_up_xp.php
これの、「AOYAMA Style (zip形式; 約6KB; フォント:MS UI Gothic 9pt)」というのを使わせていただいた。

4 firefox
今回ついに入れてみた。まだ自分の評価が定まっていないので後日。

5 その他工夫(従前から)

Acrobatなど起動に時間がかかるソフト(何らかの理由で肥大化しているその他いくつかのソフトも)は、スタートアップにいれて、起動時に起動させておくのがいい。そうすると、実際にファイルをダブルクリックしたときには、起動処理が行われないので時間がかからない。前からやっているが起動が遅くなること、メモリ残量が減る以外にデメリットはない。ノートパソコンの場合、ハイバーネーションを使っている事が多いかと思うが、そちらの起動速度にはさしたる影響はないように思う。

同様のことは、Wordを閉じないと言うことにも当てはまる。文書を閉じてもWordを閉じない。具体的には、閉じる際には、ctrl + f4を使う様にし、alt + f4は使わない。こうやってwordを起動しておくと、フォルダないのすべてのWordファイルを一挙に起動、一挙に印刷(右クリック→印刷)してもパソコンがフリーズ状態になりにくい(ほとんどならなくなる)。

また、Office (Wordなど)は、起動時にプリンタを探しに行く。ネットワークだとネットワークにないということが確認できるまで30秒くらいかかる(たしかレジストリで設定を変えられたはずだが、必要なしと思いしていない)学校と家で同じパソコンを使う場合にこれが問題となる。解決法としては、デフォルトのプリンタをローカルのものにする(あればAcrobatインストールでついてくる"Acrobat PDF"を使用。なければMicrosoft Document Image Writer) 。

蛇足であるが、プリンタの印刷設定(両面、割付、最後のページから印刷等)は、プリンタの詳細設定(スタート→コントロールパネルから探す。各自設定が違うので詳細省略)で一度設定してしまえば、プリンタごとの設定を覚えておいてくれて、Word等の印刷で当該プリンタを選んだら、その設定をデフォルトとして利用してくれるので便利。

何らかご参考になれば

2007-04-14

Word: ページ数挿入・フォント変更マクロ

調子に乗って、もう一つ簡単な、試験向けマクロを。

人からもらったノートは自分の好みのフォーマットになっていることは少ない。そこでいつもページ番号を足す。個人的に好きなのは「ページ番号/総ページ数」というフォーマット。終わりが見えるから。

また、清貧学生は、割付印刷(2ページ分を1ページに印刷)を好む。この際に、個人的に見やすいのは、MS明朝・Times New Romanの各12ポイント。10.5では読みにくい。

手動でやってもいいのだが、結構回数が増えてきた。

そこで、この2つをマクロにしてみました。

ちなみに、ページ数については、「挿入→ページ番号」でやる方法と、フッタを表示して挿入する方法がある。前者は、テキストボックスを使っており、どこでも配置できる反面、素直なテキスト(というかそもそもフィールドだが)ではなく、個人的にはいまいち。マクロも後者のページ番号が挿入される形で作成しています。(違いを感じたことない方はお試しあれ)



Sub page_total()
'070414
'フッタにpage/ total page; フォントを明朝12・times new roman 12にする。

'フッタ(ページ番号・総ページ数の挿入)
Dim srange
Set srange = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range


With srange
.Delete

.Fields.Add Range:=srange, Type:=wdFieldEmpty, Text:= _
"NUMPAGES \* Arabic ", PreserveFormatting:=True

.InsertAfter " / "

'選択範囲の変更
.Collapse Direction:=wdCollapseStart

.Fields.Add Range:=srange, Type:=wdFieldEmpty, Text:= _
"PAGE \* Arabic ", PreserveFormatting:=True

.Paragraphs(1).Alignment = wdAlignParagraphCenter

End With

'1ページ目も一緒の設定にする
ActiveDocument.Sections(1).PageSetup.DifferentFirstPageHeaderFooter = False


'フォントの変更を聞く
Style = vbYesNo + vbQuestion + vbDefaultButton2 ' ボタンを定義します。
Title = "フォント変更?" ' タイトルを定義します。
Msg = "フォントの変更をしますか?" & Chr(13) & _
"変更後のフォントは、日本語:MS明朝・英語:Times New Roman の12ポイントです。"


' メッセージを表示します。
Response = MsgBox(Msg, Style, Title)
If Response = vbNo Then ' [いいえ] がクリックされた場合、
Exit Sub
End If

'フォントの操作。明朝・times new roman
ActiveDocument.Select
Selection.WholeStory
With Selection.Font
.NameFarEast = "MS 明朝"
.NameAscii = "Times New Roman"
.NameOther = "Times New Roman"
.Name = ""
.Size = 12
End With



End Sub


2007-04-12

Word: レポート、試験問題のための豆知識

試験をPCで受ける際、レポートを書く際は、単語数制限・ダブルスペースの指示をされることがおおい。ページ数を指定されることもある。今回はこれらの対策

●<Tips>単語数をツールバーに表示させる →  ctrl + shift + r (ctrl + c)
●行間の変更:ctrl + 1 / ctrl + 2 (ダブルスペース)/ ctrl + 5

単語数は、ツール→文字カウントalt + t→w)で表示可能。ただ、これすらも、時間のないときは嫌。また、表示されたウィンドウを消さないと再度作業を始められない。書いているときは何度も確認したいから、これが結構面倒になってくる。

むしろ、文字数の制限があるときは、単語数を、ツールバーに表示させるのがいい。

ツールバーを右クリックして、文字カウントツールバーを表示する。わからない場合は、ツール→ユーザー設定→ツールバーで探す。その上で、<「再計算」をクリック>とあるところで、表示を半角英数の単語に変更する。

これでctrl + shift + r(「再計算(C)」が表示されている場合はalt + cもOK)で再計算してくれるようになる。

行間については、文書全体を選択して行間を選択してやるのが楽。
Ctrl + aで文書全体を選択し、ctrl + 2でダブルスペース。
●シングルスペースに戻すときは、ctrl+1。(タイプするのはこの方が楽だと思う)
●1.5スペースはctrl + 5 (1.5の5)。

なぜ、1.5スペースが必要かというと、ダブルスペース5ページとかの指定を適宜好きなように解釈するため。書き終わってみると7ページという事がある。外人の提出する書類をみていると、どう見ても1.5でしょうというのがあるが、何も言われないとのこと。もともとダブルスペースは文字の見やすさを優先してのことであるから行が詰まっていなければいのでしょう。そう言うときは、全体を1.5スペースにしてしまうと、文字の加減をしなくて即提出可能。試験でするのは勇気がいるので、セミナーのレポート向け?

若干小手先な実践知識でした。

2007-04-10

Word ノートの結合 (VBA)

人からもらうノートが複数に分かれている場合がある。また勉強会のレジュメは通常複数ファイル。検索用に1つのファイルにしたいという要請はある。

これをうまく行うにはマクロが一番。自作マクロを公開しますので、気が向いたという奇特な方は、必要に応じて利用してみてください。インポートの仕方、マクロの動かし方などは、又時間ができたら書いてみますが、今はちょっと時間ができそうにもありません。

私もよく参考にさせていただいているmougというサイトがためになるかもしれません。
http://www.moug.net/

マクロを実行すると、(そしてうまくいくと)、全部つなげたファイルを一つ作ってくれます。各ファイルの変更履歴はそのまま結合版にも引き継がれます。各ファイルのヘッダ・フッタ情報は失われ、新たなヘッダ・フッタ(ページ番号)が付されます。

なお、これはウィルス騒ぎで標的にされたマクロです。思わぬ誤動作を引き起こす可能性(ないとは思いますが)があります。その点注意して自己責任で利用してください。私自身素人ですのでフォローは何もできません。コードもひどく汚く、自動記録に大いに頼っています。何かうまくいかないことがあればコメントしていただければ、できるだけ対処しますが、2年ほど前のものを、若干改訂して使っているので、当時何を思ったか正直良く思い出せない面もあります。また、誤動作を含め、なんらかの損害が発生しても一切責任を取るつもりはありません。あくまで自己責任でお願いします。

もし私を特定できた方(でかつ私のマクロを使ってみたいという相当奇特な方)は私個人宛にメールいただければ、その他マクロを収録したベース版(.doc)をお渡しすることも可能です。なお、そちらはダブルクリックしていただければこのマクロを含めたいくつかのマクロをインストールし、メニューへ追加する作業を自動でやってくれますので、うまく動けば気軽に試せます。



Sub ノート結合NIKKIMEMO()
'050605


MsgBox "ファイルの並び替えにエクセルを使用しています。" & Chr(13) & _
"うまく動作しない場合は、Alt + F11 で表示されるMicrosoft Visual Basic の画面で、" & Chr(13) & _
"ツール→参照から、エクセルを参照できる設定になっているか確認してください。" & Chr(13) & Chr(13) & _
"ファイルの結合は、ファイル名を昇順に並べた順序で行われます。" & Chr(13) & _
"思っている順番で結合されない場合は、ファイル名を工夫してください。" & Chr(13) & Chr(13) & _
"デスクトップのパスの取得にWSHを使用しています。" & Chr(13) & _
"うまく動作しない場合は、Alt + F11 で表示されるMicrosoft Visual Basic の画面で、" & Chr(13) & _
"ツール→参照から、Windows Script Host Object Model を参照できる設定になっているか確認してください。" & Chr(13) & Chr(13) & _
"★★元のヘッダ・フッタはすべて削除されます。"




Dim filenamae
filenamae = "NIKKIMEMO 結合ファイル" & Year(Now) & "_" & Month(Now) & "_" & Day(Now) & "_" & Hour(Now) & Minute(Now) & ".doc"


'デスクトップのパスを取得
'Windows Script Host Object Model に参照設定をする必要がある
Dim tempsavefolder As String
With New IWshRuntimeLibrary.Wshshell
tempsavefolder = .specialfolders("desktop")
End With


'結果表示用ファイルの作成

Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0


ChangeFileOpenDirectory tempsavefolder
ActiveDocument.SaveAs FileName:=filenamae, FileFormat:=wdFormatDocument, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False


'履歴を表示しない
With ActiveWindow.View
.ShowRevisionsAndComments = False
.RevisionsView = wdRevisionsViewFinal
End With


Documents(filenamae).Activate


'スタイルの設定

ActiveDocument.Styles.Add Name:="ファイル情報", Type:=wdStyleTypeParagraph
ActiveDocument.Styles("ファイル情報").AutomaticallyUpdate = False
With ActiveDocument.Styles("ファイル情報").Font
.NameFarEast = "MS 明朝"
.NameAscii = "Century"
.NameOther = "Century"
.Name = "Century"
.Size = 10.5
.Bold = True
.Italic = True
.Underline = wdUnderlineNone
.UnderlineColor = wdColorAutomatic
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.Color = wdColorAutomatic
.Engrave = False
.Superscript = False
.Subscript = False
.Scaling = 100
.Kerning = 1
.Animation = wdAnimationNone
.DisableCharacterSpaceGrid = False
.EmphasisMark = wdEmphasisMarkNone
End With
With ActiveDocument.Styles("ファイル情報").ParagraphFormat
.LeftIndent = MillimetersToPoints(0)
.RightIndent = MillimetersToPoints(0)
.SpaceBefore = 0
.SpaceBeforeAuto = False
.SpaceAfter = 0
.SpaceAfterAuto = False
.LineSpacingRule = wdLineSpaceSingle
.Alignment = wdAlignParagraphJustify
.WidowControl = False
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = MillimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.LineUnitBefore = 0
.LineUnitAfter = 0
.AutoAdjustRightIndent = True
.DisableLineHeightGrid = False
.FarEastLineBreakControl = True
.WordWrap = True
.HangingPunctuation = True
.HalfWidthPunctuationOnTopOfLine = False
.AddSpaceBetweenFarEastAndAlpha = True
.AddSpaceBetweenFarEastAndDigit = True
.BaseLineAlignment = wdBaselineAlignAuto
End With
ActiveDocument.Styles("ファイル情報").NoSpaceBetweenParagraphsOfSameStyle = _
False
ActiveDocument.Styles("ファイル情報").ParagraphFormat.TabStops.ClearAll
With ActiveDocument.Styles("ファイル情報").ParagraphFormat
With .Shading
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorAutomatic
End With
.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
.Borders(wdBorderRight).LineStyle = wdLineStyleNone
.Borders(wdBorderTop).LineStyle = wdLineStyleNone
.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
With .Borders
.DistanceFromTop = 1
.DistanceFromLeft = 4
.DistanceFromBottom = 1
.DistanceFromRight = 4
.Shadow = False
End With
End With
ActiveDocument.Styles("ファイル情報").LanguageID = wdEnglishUS
ActiveDocument.Styles("ファイル情報").NoProofing = False
ActiveDocument.Styles("ファイル情報").LanguageID = wdJapanese
ActiveDocument.Styles("ファイル情報").NoProofing = False
ActiveDocument.Styles("ファイル情報").Frame.Delete







Dim xls As Excel.Application
Dim wkb As Excel.Workbook
Dim wks As Excel.Worksheet

Dim CNT As Long

Dim myPath As String 'ワードファイルのパス
Dim myName As String 'ワードファイル名



'画面の設定
ActiveWindow.ActivePane.View.Type = wdPrintView
'画面更新をしない
With Application
.ScreenUpdating = False
.DisplayAlerts = wdAlertsNone
End With

'表示を消す
Selection.WholeStory
Selection.Delete

'エクセルを起動する
Dim DataFolderName As String
Dim DataFileName As String
Dim ActiveRow As Integer


'フォルダの選択

Dim openfolderdialog As FileDialog
Dim openfolderpath As String

Set openfolderdialog = Application.FileDialog( _
FileDialogType:=msoFileDialogFolderPicker)
openfolderdialog.InitialFileName = tempsavefolder & "\"
openfolderdialog.Title = "フォルダを選択するか、パスを貼り付けてください。キャンセルを押すとデスクトップが選択されます"

openfolderdialog.Show

On Error Resume Next
openfolderpath = tempsavefolder
openfolderpath = openfolderdialog.SelectedItems(1)
On Error GoTo 0


Dim カンマ5
If openfolderpath = tempsavefolder Then
カンマ5 = MsgBox("フォルダは、デスクトップでよろしいですか?", vbYesNo, "フォルダ")
If カンマ5 = vbNo Then
MsgBox "終了します。"
Exit Sub
End If
End If

DataFolderName = openfolderpath



'エクセルを実体化
Set xls = CreateObject("Excel.application")
Set wkb = xls.Workbooks.Add
Set wks = wkb.Worksheets(1)


'シートのクリア
wks.Range("A1:C65536").Select
xls.Selection.ClearContents
wks.Range("A1").Select

'ファイル名の表示
DataFileName = Dir(DataFolderName & "\" & "*.doc")
ActiveRow = 1

Do While DataFileName <> ""
wks.Cells(ActiveRow, 1) = DataFileName
DataFileName = Dir
ActiveRow = ActiveRow + 1
Loop


'並び替え
xls.Selection.Sort Key1:=wks.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin


'フォルダ名の表示
wks.Rows("1:1").Select
xls.Selection.Insert Shift:=xlDown
wks.Range("A1").Select
xls.ActiveCell.FormulaR1C1 = DataFolderName
wks.Range("A2").Select


'つなげる作業
myPath = wks.Cells(1, 1).Text

'activate
If ActiveDocument.Name <> Documents(filenamae).Name Then
Documents(filenamae).Activate
End If

'目次のために余白を入れる
With Selection
.HomeKey Unit:=wdStory
.InsertBreak Type:=wdSectionBreakNextPage
.InsertBreak Type:=wdPageBreak
.Collapse Direction:=wdCollapseEnd
.MoveEnd Unit:=wdCharacter, Count:=-1
End With




For CNT = 2 To wks.Range("A65536").End(XLUP).Row
myName = wks.Cells(CNT, 1).Text
Selection.InsertFile _
FileName:=myPath & "\" & myName, _
Link:=False

'画面更新をしない
With Application
.ScreenUpdating = False
.DisplayAlerts = wdAlertsNone
End With




'セクション区切りにファイル名を入れる
With Selection
.InsertAfter "「" & myName & "」の末尾(NIKKIMEMO)"
'スタイルの設定
.Style = ActiveDocument.Styles("ファイル情報")
'アウトラインレベルの設定
.Range.Paragraphs.OutlineLevel = wdOutlineLevel1
'蛍光ペンを付ける
.Range.HighlightColorIndex = wdYellow
.Collapse Direction:=wdCollapseEnd
End With

'改ページ及び改セッションを入れる
Selection.InsertBreak Type:=wdSectionBreakContinuous
Selection.InsertBreak Type:=wdPageBreak

'画面更新をしない
Application.ScreenUpdating = False

Next CNT

'最後の改ページ等を消す
Selection.EndKey Unit:=wdStory
Selection.MoveLeft Unit:=wdCharacter, Count:=2
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1

'画面更新をしない
Application.ScreenUpdating = False


'エクセル終了
xls.DisplayAlerts = False
xls.Quit




'ヘッダー
Dim para

With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
.Delete
.InsertAfter "[NIKKIMEMO 結合ファイル" & Date & "]"
.Paragraphs.Alignment = wdAlignParagraphRight

For Each para In .Paragraphs

para.Range.Font.Size = 10.5
para.Range.Font.Name = "MS明朝"

Next para


End With

'フッタ(ページの挿入)
Dim srange
Set srange = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range

With srange
.Delete

.Fields.Add Range:=srange, Type:=wdFieldEmpty, Text:= _
"NUMPAGES \* Arabic ", PreserveFormatting:=True

.InsertAfter " / "

'選択範囲の変更
.Collapse Direction:=wdCollapseStart

.Fields.Add Range:=srange, Type:=wdFieldEmpty, Text:= _
"PAGE \* Arabic ", PreserveFormatting:=True
.Paragraphs.Alignment = wdAlignParagraphCenter

For Each para In .Paragraphs

para.Range.Font.Size = 10.5
para.Range.Font.Name = "MS明朝"

Next para


End With


'ページ番号の整形
Dim s
For Each s In ActiveDocument.Sections
'1ページ目も同じ設定にする
s.PageSetup.DifferentFirstPageHeaderFooter = False
'前のセクションから続きにする
s.Footers(wdHeaderFooterPrimary).PageNumbers.RestartNumberingAtSection = False

Next s






'画面更新をしない
Application.ScreenUpdating = False
'本文選択
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Selection.HomeKey Unit:=wdStory
'画面更新をしない
Application.ScreenUpdating = False



'目次の追加(ファイル情報を目次として追加する)

Selection.HomeKey Unit:=wdStory
With Selection
.InsertAfter "各ファイルの末尾は下記のページのとおりです" & Chr(13) & _
"元のファイルのヘッダに記載の情報が失われていますので注意してください。" & Chr(13) & Chr(13)
.Collapse Direction:=wdCollapseEnd
End With


'自動記録によると、デフォルトで設定されている目次レベルのある書式を排除できない。
'デフォルトで行うとこのようなフィールドとなる  TOC\o"1-9"\h\z\t"ファイル情報,1"
WordBasic.FormatField Field:="TOC \h \z \t ""ファイル情報"" "
ActiveWindow.View.ShowFieldCodes = False

'目次の更新
ActiveDocument.TrackRevisions = False
With ActiveWindow.View
.ShowRevisionsAndComments = False
.RevisionsView = wdRevisionsViewFinal
End With

Dim myTOC
For Each myTOC In ActiveDocument.TablesOfContents
myTOC.Update
Next

'履歴を表示する
With ActiveWindow.View
.ShowRevisionsAndComments = True
.RevisionsView = wdRevisionsViewFinal
End With

'ページだけ更新
For Each myTOC In ActiveDocument.TablesOfContents
myTOC.UpdatePageNumbers
Next





'画面設定戻す
With Application
.DisplayAlerts = wdAlertsAll
.ScreenUpdating = True
End With

ActiveDocument.Save

'問い合わせ
Dim Msg, Style, Title

Msg = "正常に完了しました。" & Chr(13) & Chr(13) & _
"デスクトップに「NIKKIMEMO 結合ファイル<年月日>.doc」という名称で保存してあります。" & Chr(13) & _
"このファイルは、検索・確認目的にのみ用いてください。 " & Chr(13) & Chr(13) & _
"(Tips)" & Chr(13) & _
"● 通しのページ番号と、結合ファイル作成日時を付けてありますので、情報の特定にご利用ください。" & Chr(13) & Chr(13) & _
"● 元のファイルの履歴はそのまま履歴として表示されていますので、「次の履歴を表示」などで簡易に探せます。" & Chr(13) & Chr(13) & _
"● 複数の人の履歴がついているときは、フィルターを利用すると特定の人の履歴のみ表示できて便利です。" & Chr(13) & Chr(13) & _
"● 元のファイルの結合部分には改ページおよびセクション区切りを入れていますので、" & Chr(13) & _
" ワイルドカードを使用しない設定で、これらを検索する(「^b^m」と入力する)とファイルの先頭部分を容易に探せます。" & Chr(13) & Chr(13) & _
"文書を閉じますか?" ' メッセージを定義します。

Style = vbYesNo + vbQuestion + vbDefaultButton2 ' ボタンを定義します。
Title = "閉じますか?" ' タイトルを定義します。


' メッセージを表示します。
Response = MsgBox(Msg, Style, Title)
If Response = vbNo Then ' [いいえ] がクリックされた場合、
Exit Sub
End If

ActiveDocument.Close


End Sub


2007-04-09

Word: ノートの目次の付け方

試験前になってきた。この時期になると、ノートを受け取ったり、自分のノートをまとめたりするようになる。そんなときに目次をつけることができれば、画面で見るほか、印刷したときも検索しやすくなる。

なお、今回はあまり時間がないのでほぼ結論のみです。ワード普段から使い慣れていないと理解しにくいかもしれません。時間ができたら、敷衍したバージョンを買いてみたいとは思うのですが。

ちなみに長いとお思いかもしれませんが、なれれば作業は5分くらいです。

ノートに目次をつけたくなるのは、自分のノートおよび同じ科目の他の教授の授業のアウトライン。同じ教授の直接の先例は実はあまり目次はいらない。大体見当がつくから。

目次の付け方の大枠は以下の通り、
①スタイルを作成し、②目次に登場させたい表題・ケース名等にスタイルを適用すし、最後に③目次を冒頭に挿入。

目標とする目次は、大要以下。

日付・・・・・・ページ
 章の題名・・・ページ
 ケース名・・・ページ

①スタイル作成

検討の結果、使うのは「段落と文字」というスタイル。内部的には段落スタイルと文字スタイルを作って、それを関連づけている特別のスタイルの模様。

作り方は、以下の通り。たとえば、日付"07/04/03"のところに行き、数文字(たとえば"07/"などを選択)その上で、スタイル名(表示されていない場合は、ツールバーの追加で足す)に「date」などとスタイルを入力。

その後、段落と文字スタイルの編集。書式→スタイルと書式、で表示される右枠の作業ウィンドウで、一番下がスタイル一覧になっていることを確認し、先ほどの「date」(段落のアイコンがついているのと、文字のアイコンがついているのとあると思いますが、とりあえず段落、ついで文字)を探し、右クリックし、「変更」で書式設定。

段落・文字ともに必要なのは、最低限、基準にするスタイル「なし」。僕はstandard note takingというスタイルを作って、次段落のスタイルに指定しています。これでノートを取っている間も、表題入力して、改行すれば地の文のスタイルになるから。また、「テンプレートに追加」も選んでおいてください。ワードファイルのスタイルの構成変更により、他のノートでスタイルを流用できるようになります。

日付にお薦めなのは、灰色の網掛けでしょうか。網掛け・罫線は、段落で指定するのと、文字で指定するのでは異なります。改ページとの相性を考えると、文字スタイルの方で設定する方がいいかと。なお、こういった選択をするために「段落と文字」という特殊スタイルを使っています。

同様に、case, chapterというスタイルを作る(名前は例)。網掛けは、明るい色がいいかも。

スタイルを、まとめてなおしたい場合は、右の作業ウィンドウの一番下の表示を「ユーザ設定」にし、表示される画面で、「スタイル(Y)」選択。「文字/段落のスタイル設定」が表示されるのでここで作業。
●ちょっと行き方が大変なので、ツールバーに足すのも一案。ツール→ユーザ設定のキーボード(K)で、書式→スタイルを選択。「ドロップギャップ」のしたの単なる「スタイル」なので注意。

②スタイルの適用

置き換え(ctrl + h)で一挙にやります。いくつか例を示すので、後はご自分の環境に合わせて発展させていってください。解説原則なしです。

(1) 07/04/09など(解説中の04/03は避けるため、行頭のみを対象としたい)
2段階
置き換え前文字列 ^p07/  (改ページの場合は^m)
 書式設定 必要に応じて、太字、イタリックなど
置き換え後文字列 ^p●07/
あいまい検索のチェックボックスは外す。

置き換え前文字列 ●07/
置き換え後文字列 07/
 書式設定 スタイル date

●は全角を使う。必要に応じて[0-9]等のワイルドカード検索も有効。

(2) <ケース名>の場合(解説中の<ケース名>は避けるため、行頭のみを対象としたい)
2段階
置き換え前文字列 ^p<  (改ページの場合は^m。半角書きにくいので全角にしていますが、もちろん必要に応じて全角<をお使いください。)
 書式設定 必要に応じて、太字、イタリックなど
置き換え後文字列 ^p●<
あいまい検索のチェックボックスは外す。

置き換え前文字列 ●<
置き換え後文字列 <
 書式設定 スタイル case 

その他=ケース名=、色つき等、場合(もらうノート)によって使い分ける。
章題も適宜共通点を見つけてスタイルを適用。


③目次の挿入
挿入→参照→索引と目次、目次を選択
深さは2,レベル1にdate、レベル2にcase, chapterを選択。元からある目次レベル1,2の選択は解除。

できあがりです。
プリントアウトしてもあまり見失わないのではないでしょうか。完全ではないですが、これ以上作業するのも無駄が多いかと。

ちなみに、他のノートに写す場合は、スタイルの構成変更で、他のノートにスタイルを移植してやるといいです。「文字/段落のスタイル設定」で「構成内容変更」を選択。normal.dotからコピー(テンプレートに追加していればここに追加されている)。なお、段落と文字を使っている場合、段落・文字の2スタイル同時コピーする必要があります。

わからないという批判が多そうですが、わかる人だけでも。
今はこれをふまえてスタイルを活用してノート取っていますが、年の最初に知っていればと思ったので、書きました。


2007-04-05

LLM留学に英語PC必要? どう手配する?

日本では日本語OSしか、必要としないが、留学するとなかなかそうも言っていられない。

そこでどんなパソコンを持ってくればいいか、あるいはこちらで買えばいいか。

ロースクールに留学し、NYバー(ニューヨーク州司法試験)を受ける予定の場合、日本語のパソコンでネックとなるのは2箇所。

期末試験とバー。いずれもパソコンで受けられるのだが、機種の指定がある。

2007年7月のNYバーの指定は、以下の通り。
http://www.nybarexam.org/pc_program_707.htm
MAC不可、Vista不可。英語OSのみというのが公式見解。ただ、日本語OSで昨年受けた方がいらっしゃるとのことで、おそらく最後の英語OSのみというのは言っているだけ。

大学については大学によって違うと思うので、該当校の現役生に当たるのが一番。おそらく年々受付範囲は広がっているのではないだろうか。
うちの大学の場合、従来から、英語OSのみとあるが、日本語OSでも何とかなっていた。今回MAC、VistaがOKとなった。

その他検討のために必要な情報は以下の通りかと

● MACは日本で暮らしているより相当イメージがいい。

MACは日本ではほぼ流通していないが、こちらの学生は1割くらい使っている。動きはVistaと比べてもまだかっこいい。こちらに来て知ったのだが、二本指スクロールという便利な機能がある。また、最近の、MACはWindowsを入れることが可能。

● 日本語キーボードがおすすめ。

PCの日本語キーボードと英語キーボードだと、個人的にはなれた日本語キーボードがおすすめ。半角/全角キーはあった方がいいし、個人的には変換キー、無変換キーといったマニアックなキーも多用している。また、@ ( ) ' : のような記号がいちいち場所が違う。Enterの形も違う。ということで気になる人には気になる感じ。

● 英語Windows XPは大丈夫。

設定次第(追加投資なく)日本語の表示・入力が可能。XPなど最近のWindowsは、プログラム本体は全世界共通で、見せ方の部分(スキンみたいなもの)のみ言語によって変えているとのこと。昔に比べてずいぶんと合理的ですね。この情報自体ネットで探すにくろうしました。

英語Windows XPには日本語ソフトがそのままインストールできる。こちらでebay auctionで購入した数年前の機種に、いろいろ入れてみたが、特に不都合は見あたらない。こちらの情報はもっと。

結論として、英語OSを買っても何ら問題なし。

● 大学・バーで問題とされるのはOSの言語のみ。

その他のソフトが日本語であること、キーボードが日本語であることなどは問題とはされない。

● PC関係は何でも日本の方が安い。

店頭最安価格はこちらの方が安いが、同じ商品は日本の方が安い。どうせ検討するならいい物を安くと考えてしまうのは、既にプロファイリングにはまっているのだろうか・・・




これらの情報を加味すると、以下のような選択肢が可能となるのではないだろうか。

● MACを買う。

かっこいいですし、追加投資でWindows使えるようにすればおそらく大過なく過ごせそう。ただ、まだバーに当たっては不便だし、今まで使ったことがないひとは、キーの配置、操作などから覚えていく必要がある。英語MACを買って、家庭内の無線スピーカーとつないでiTuneを活用している人がいます。大画面TVも併せて使用しているので相当いい感じの部屋に仕上がっています。一部の友人から「ヤ○部屋」などとよばれる魅力的な部屋に仕上がってます。

ただ、日常的に使うのにはたまにPCとの互換性問題が出る。ヒイラギ明朝がPCにないためにMAC作成のWordファイルをPCで表示すると代替フォント(うちはなぜか年賀状ソフトの草書)が勝手に選択されるとか、送ったメールの文字化けが多いとか・・・

● 英語PCを別途買う。

追加出資をいとわないのであればいい方法。日本からのソフトも基本的に使える。ただキーボードが英語となる。追加出資を抑えるにはebay オークションも要検討。しばらくはどのOSのものにするかという問題がある。XPが無難だが、店頭から姿を消しつつある。

私は、オークションで大画面・高画素のPC(Dell D800)を買いMaxiVistaで外付けディスプレイとして日々活用している。(詳しくは過去の記事。この当時は英語も書いていたとは・・志だけは高かった。)

なお、先代から譲り受ける場合は、有償の場合その価値があるか考える必要がある。LLM生の場合、PCのねぎめができないことが多く、他の家具同様、適当に決めていることが多い。世の中の相場と比べていいか悪いかよく考える必要がある。特に日常使っていたという場合、HDDから異音がするかどうか、バッテリーがへたっていないか、先所有者のPCの熟練度を加味しつつ、事情を聞くのがいい。ただ、たいがい先輩なのでそんなことできない。よって個人的にはあまりお薦めしない。

● 日本語PCに英語OSを入れる

購入の時にオプションで選べる場合があれば、それを選ぶというのも一案。調べていないがあるとすれば、通販モデル。探してみる価値はありだと思います。この場合、日本語OSをゲットできないという問題は残る。ただ、OSのメニューはそんなに使わない。Wordのメニューは人に操作を聞くためにも日本語がいいと思いますが、OSはそんなに気にする必要ないような。

内蔵HDDを別途買い、HDDの入れ替え・増設を行う。難易度は機種とその人の技量次第。ハードの入れ替え・増設自体はネットに情報は氾濫しています。ただ、英語OSを入れるという情報はあまりない。ドライバが揃うかという問題はある。PCメーカーのweb site、マイクロソフトの対応次第になってしまいそう。英語モデルがある・全世界モデルであることが確認できれば特に問題がないという推定は働きそうです。この手段の場合、日本語Vista、英語XPという荒技も可能。環境自体を完全に入れ替えるので意味不明の問題も少なそう。

なお、同様のことを目指すものにOS切り替えソフトがありますが、これは試験用ソフトがパソコンの再起動、ハード(無線LAN等)の制御をしたがることが多い関係上、問題が発生する可能性があると思います。検証はしていないので、問題発生しないかもしれませんが。

● 日本語PCで押し通す

聞いていた話では、できないということだったので、買う気で渡米してきましたが、これも実は結構できそう。再度確認の価値ありです。問題は確認できる相手が知識があるか何ですよね、ロースクールの場合。

少なくともうちの大学の試験は大丈夫だし(XPで実際に受けています)、昨年のバーもできたとの未確認情報があります。周りでは追加投資の一切必要ないこの路線を選ぶ人も多いです。

結局は予算とのかねあいでしょうか。
ご参考まで。

2007-04-04

ストライク・ボールと行政裁量(加筆済)

またまたヨタ話(最近こんなのばっかり)。

今日思いついたのは、行政裁量って野球で表すとこんな感じ?という内容。
なお、つっこみどころ満載ですが、適宜お聞き流しください。

どこの国も裁判所は、持ち込まれた事件について、法律違反があるかないかを判断する。そのときに、法律についてお役所が決めたルールがあるとそのルールも加味して考える。法律を直接解釈するんではなく、役所がこう読んでいるからその通り読むと・・・という風な感じ。

これが許される場合、裁判所は、行政の裁量を尊重したという表現がなされる。

これって、野球で言うとどんな感じ?というのが今回のお題。

<関係者の役割>

野球の場合、審判が、ストライク・ボールを判断します。要は、裁判官役。

それに当事者のピッチャーと、その投球にクレームをつけたいバッターがいる。ピッチャーは当然ストライクの主張をするし、バッターはボールの主張。

それらを加味した上で、審判が、ストライク・ボールを判断する。ホームベースの上を通っていればストライク、外れていればボール。誰でも知っているルールですね。このルールが法律。審判は、このルールに照らしてストライク・ボールを判断する訳です。

<ルールは解釈が必要>

ところで、このルール、はっきりしているようですが、実は解釈が必要。
ベースには幅がある。たとえば幅10(右5左5)。そしてボールにも幅(1)がある。

では、どのような場合にボールがベースの上を通ったと言うべきか。ぱっと思いつくだけでも3つ立場が考えられます。

① 実際のルールでは、ちょっとでもかすっていればいい。従って、ベースの幅10に対して、ストライクとなるボールが通る範囲は12(右5+1,左5+1)。

② 他の考え方としては、ボールの中心がベースの上を通っていればいいというものが考えられます。この場合、ストライクとなるボールが通る範囲は11(右5+1/2,左5+1/2)。

③ また、ちょっとでもベースの上から外れたら駄目という考えかたもあり得ます。この場合、ストライクとなるボールが通る範囲は10(ベースの幅)。

どうですか?

普通の感覚からすると、幅10のベースをとおることがルールである以上、通っていい幅も10というのが近いと思います。バッターの立場からすると10っていってるじゃないかという感じ。

ただ、実際には12が正解ですね。12のどこをとおっても、審判は「幅10のベースの上をとおった」と判断するわけです。

<では行政裁量は?>

このルールの選択を裁判官が自ら決めるではなく、行政に決めさせるのが行政裁量。

行政が上の①の考えをとって、実際は(結果的に)12の幅までOKとする解釈なのだが、これが法律の解釈だとの見解を示した場合に、まあ、そうとも考えられるからそのルール(①)で判断しましょうとするのが行政裁量の尊重です。

本来幅10のルールが法律で定められているにもかかわらず、幅12の物差しをつかって、それから外れているかだけを解釈する。

裁量を広く認める場合は、ボールを大きくする(笑)。ベース10のうえに、たとえば幅20のボール。50(20+10+20)の幅までOKになっちゃいますね。この50の物差しだと何でもOKとなってしまいそう・・・

判決では文字で表現されるので、あまりはっきりしないのですが、裁判所が緩やかな基準を取っている場合、結果的には、法律の10の幅に対して、50の物差しで測っているというようなことも結構ある(ほとんどOKの基準)のではないかと思います。

当事者に裁量を認めるbusiness judgment rule(経営判断原則)とかも同じように考えられるのではないでしょうか。

<当事者はどう感じる?>

たとえば、野球の例でボールの幅が20だとすると、ベースから15離れて立っている人は、完全にベースから離れているのに当てられる。デッドボールだと主張します。しかし、ストライクだからよけないのが悪いと審判に言われる羽目になる。ストライクは当たってもデッドボールにはなりませんからね。

法律的に言うと、法律の文面からはこれがOK?というような行政措置が、法律の範囲内と判断されることになる。広く裁量を認める結果、大きな物差しのみで判断するので。

<安定性は?>

ただ、この裁量、認められてもあまり安穏ともしていられない。ある日突然、裁量を認めないといって、厳格に判断されることもある。

いきなり、上記ルール①はだめで、②(または③)で判断する。ボールがベースに収まらないのはそんなボールを採用するのが悪いと言われてしまう危険があるわけです。そこら辺、法律で認められるのよりは保護は薄そう。しょうがないのかなという感じ。


あまりまとまりのない内容で恐縮ですが、思いついたので書いてみました。
我ながら読み返してみて、発想はおもしろいが、つっこみどころ・異論の余地も満載・・・
たとえ話は難しいと実感させられました。