« 2010年3月 | トップページ | 2010年5月 »

2010年4月の9件の記事

2010年4月25日 (日)

テンプレートの編集マクロ

使用中のテンプレートをVBEで編集する場合、手間ですね。

①テンプレートとアドイン のダイアログボックスから
対象となるテンプレートを選んでオフにする。

②対象となるテンプレートが保存されているフォルダを開く

③対象となるテンプレートを「開く」で開く
通常のようにダブルクリックすると、テンプレート自体が
開かれるのではなくて、テンプレートから作られた文書が
開かれてしまいます。

私のように、個別のテンプレートにマクロを保存している方、
同じような手間を経験されたことがあると思います。

そんなわけで、こんなマクロを作ってみました。

▼作用
①このプログラムを動かすと、ユーザーテンプレートフォルダを起動します。

②フォルダから編集対象のテンプレートをダブルクリックすると
 そのテンプレートがVBEで開きます。

▼工夫
いつもと表現をかえて、

  .InitialFileName = "%appdata%\microsoft\templates\*.dot"

として、ユーザーテンプレートフォルダを指定しました。

▼プログラム
Sub テンプレートをVBEで編集する()

Dim fd As FileDialog
Dim TemplateName As String
Dim myAdd As AddIn

Set fd = Application.FileDialog(msoFileDialogOpen)

With fd
   .Title = "VBEで編集するテンプレートの選択"
   .InitialFileName = "%appdata%\microsoft\templates\*.dot"
   .AllowMultiSelect = False
   If .Show = -1 Then
       TemplateName = .SelectedItems(1)
   Else
       End
   End If
End With

'テンプレートをオフにする
For Each myAdd In AddIns  '登録されているかを調べる
    If myAdd.Name = TemplateName Then
        AddIns(TemplateName).Installed = False
    End If
Next

'テンプレートを開く
Documents.Open FileName:=TemplateName

'VBEを開く
ShowVisualBasicEditor = True

End Sub

| | コメント (0) | トラックバック (0)

2010年4月24日 (土)

文字書式を保存/復元するマクロ

太字、下付き、上付きなど、文字の書式が設定されている文章を
テキストエディターで編集したいときありませんか?

通常、この文章をテキストエディタにコピーすると、書式がすべて
なくなってしまいますね。

そんな悩みを解決するマクロです。

▼用途
ウェブやワードの文章をテキストエディタで編集する場合に、
必要最小限の文字書式を保持できます。

編集が終わった後、ワードにコピーしたテキスト情報にもとの
文字書式を復元します。

▼作用
①これらの書式をhtmlで使われるタグに変換します。(プログラム1)
②テキストエディターで編集
③タグを書式に戻します。(プログラム2)

▼保持できる文字書式
以下の6種類です。各プログラムの10行~60行に定義しました。

下付き
上付き
太字
斜体
下線(一重線)
取り消し線

▼工夫
プログラム1の70行~90行に、フィールドやリンクの設定を
解除するコードを挿入しました。

ウェブから文章をコピーした場合に、なんらかの情報が文字に
組み込まれていると、タグ化が正常に作動しない場合があります。

これを回避するために、文字に組み込まれた情報をまず削除してから
タグ化をしています。

以前こちらで紹介したマクロの改良版です。

▼プログラム1 書式をテキスト情報(タグ)に変換

Sub 文字書式をタグ化()
         
      Dim myRange As Range
      Dim myChr(1 To 6) As String
      Dim i As Integer
      Dim aField As Field

      '下付き
10    myChr(1) = "sub"
      '上付き
20    myChr(2) = "sup"
      '太字
30    myChr(3) = "b"
      '斜体
40    myChr(4) = "i"
      '下線(一重線)
50    myChr(5) = "u"
      '取り消し線
60    myChr(6) = "s"

      'フィールドのリンク削除(太字の無限ループに入ることがあるから)
70    For Each aField In ActiveDocument.Fields
80        aField.Unlink
90    Next aField

      '書式のタグ化
100   For i = 1 To 6
110       Set myRange = ActiveDocument.Range(0, 0)

120       With myRange.Find
130          .Wrap = wdFindStop
140           If i = 1 Then
150               .Font.Subscript = True
160           ElseIf i = 2 Then
170               .Font.Superscript = True
180           ElseIf i = 3 Then
190               .Font.Bold = True
200           ElseIf i = 4 Then
210               .Font.Italic = True
220           ElseIf i = 5 Then
230               .Font.Underline = wdUnderlineSingle
240           ElseIf i = 6 Then
250               .Font.StrikeThrough = True
260           End If
270          .Execute findText:=""
280       End With
         
290       Do While myRange.Find.Found = True
300           With myRange
310               If i = 1 Then
320                   .Font.Subscript = False
330               ElseIf i = 2 Then
340                   .Font.Superscript = False
350               ElseIf i = 3 Then
360                   .Font.Bold = False
370               ElseIf i = 4 Then
380                   .Font.Italic = False
390               ElseIf i = 5 Then
400                   .Font.Underline = wdUnderlineNone
410               ElseIf i = 6 Then
420                   .Font.StrikeThrough = False
430               End If
440           End With
             
450           With Selection.Range
460               .SetRange Start:=myRange.End, End:=myRange.End
470               .Text = "</" & myChr(i) & ">"
480               .SetRange Start:=myRange.Start, End:=myRange.Start
490               .Text = "<" & myChr(i) & ">"
500           End With
             
510           myRange.Collapse
520           myRange.Find.Execute
530       Loop
         
540   Next

550   Set myRange = Nothing

End Sub

▼プログラム2 テキスト情報(タグ)を書式に変換

Sub 文字書式の復元()
         
      Dim myRange As Range
      Dim myChr(1 To 6) As String
      Dim i As Integer

      '下付き
10    myChr(1) = "sub"
      '上付き
20    myChr(2) = "sup"
      '太字
30    myChr(3) = "b"
      '斜体
40    myChr(4) = "i"
      '下線(一重線)
50    myChr(5) = "u"
      '取り消し線
60    myChr(6) = "s"

70    For i = 1 To 6
80        Set myRange = ActiveDocument.Range(0, 0)

90        With myRange.Find
100          .Wrap = wdFindStop
110          .MatchWildcards = True
120          .Execute findText:="[<]" & myChr(i) & "[>]*[<][/]" & myChr(i) & "[>]"
130       End With
         
140       Do While myRange.Find.Found = True
150           With myRange
160               If i = 1 Then
170                   .Font.Subscript = True
180               ElseIf i = 2 Then
190                   .Font.Superscript = True
200               ElseIf i = 3 Then
210                   .Font.Bold = True
220               ElseIf i = 4 Then
230                   .Font.Italic = True
240               ElseIf i = 5 Then
250                   .Font.Underline = wdUnderlineSingle
260               ElseIf i = 6 Then
270                   .Font.StrikeThrough = True
280               End If
290           End With
             
300           With Selection.Range
310               .SetRange Start:=myRange.End, End:=myRange.End - Len(myChr(i)) - 3
320               .Delete
330               .SetRange Start:=myRange.Start, End:=myRange.Start + Len(myChr(i)) + 2
340               .Delete
350           End With
             
360           myRange.Collapse
370           myRange.Find.Execute
380       Loop

390   Next

400   Set myRange = Nothing

End Sub

| | コメント (0) | トラックバック (0)

2010年4月22日 (木)

カーソル位置より前に同じ文字列が記載されているか調べるマクロ

翻訳の最中に、特定の名称の冠詞はtheなのか、aなのか、迷ったことありませんか?

いや、複雑な定冠詞と不定冠詞の話をしているのではなくて、たた単純に
この名称が今までの文中に出てきたのかどうか、調べることなんですが。

▼作用
選択した文字列が、選択したカーソルの位置よりも前に記載されているのかどうか
を調べるマクロです。

▼工夫
メッセージボックスで対話をしながら、出てくる文字列の位置を確認
することができます。

Maekisai

「はい(Y)」をクリックすると、次の検索をします。

「いいえ(N)」をクリックすると、最初に選択した文字列の位置に
カーソルが戻ります。

私は、[Alt] + [F]に登録して使っています。

▼プログラム
Sub 前記載の確認()

Dim myRange As Range
Dim Msg, Style, Title, Response As String
Dim SS, SE As Long
Dim FoundBln As Boolean

SS = Selection.Start
SE = Selection.End
FoundBln = False

'文字列が選択されていない場合には終了
If SS = SE Then End

'表示される言葉の設定
Msg = "次を検索しますか?"
Style = vbYesNo + vbQuestion + vbDefaultButton2
Title = "検索結果"

Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
    .Wrap = wdFindStop
    .Execute findtext:=Selection.Text
   
    Do While .Found = True
        If myRange.Start <> SS Then
            FoundBln = True
            myRange.Select
            Response = MsgBox(Msg, Style, Title)
            If Response = vbYes Then
                myRange.Collapse direction:=wdCollapseEnd
                .Execute
            Else
                Exit Do
            End If
        Else
            If FoundBln = False Then
                MsgBox "見つかりませんでした。"
                Selection.Collapse direction:=wdCollapseEnd
                End
            Else
                MsgBox "これ以上見つかりませんでした。"
                Exit Do
            End If
        End If
    Loop
   
End With

Set myRange = ActiveDocument.Range(SS, SS)

With myRange.Find
    .Wrap = wdFindStop
    .Execute findtext:=Selection.Text
End With

myRange.Select
Selection.Collapse direction:=wdCollapseEnd

Set myRange = Nothing

End Sub

| | コメント (0) | トラックバック (0)

2010年4月18日 (日)

アイディア・スイッチのマクロ

先日紹介いたしました「アイディア・スイッチ」の書籍のテクニックの一部を
マクロにしてみました。

著者の石井さんからもご了承いただきました。ありがとうございます。

昨年の8月に石井さんのセミナーを受講させていただいたときの懇親会で
このマクロの話をさせていただき、コラボをさせていただくことになりました。

本当に”熱い”方です。お話をしていて本当に楽しかったです。
その熱さは、こちらのブログからも伝わってきますね。

先日も紹介したとおり、「アイディア・スイッチ」には、アイディアづくりの
ノウハウがつまっています。

私は、そのノウハウを少し使いやすくマクロ化してみました。
ワードマクロのちょっとした可能性です。使ってみてください。

「idea_switch.dot」をダウンロード

▼使い方
こちらのページを参考にして、上記のテンプレートをインストールしてください。

②ツールバーに[アイディア・スイッチ]と書かれたボタンが表示されます。
これをクリックしてください。

③ユーザーフォームに、4つのアイディア創出テクニックが表示されます。
すべて、インターネットを用いたテクニックです。

以下のような画面で、使い方も簡単に記載しましたので、まずは
ボタンをクリックして使ってみてください。

Idea1

Idea2

Idea3

Idea4

なお、ユーザーフォームの右端の「参考」タブのページに、以下のように
これらの4つのテクニックの掲載ページを記しました。

ご興味がある方、是非、本書をご購入いただき、さらに理解したうえで
ご利用ください。

Idea5

ここに紹介したテクニックは、本書の冒頭で紹介されている比較的
簡単なものだと思います。

ネットも使い方次第なんですね。この発想って面白いですねぇ。

| | コメント (0) | トラックバック (0)

2010年4月12日 (月)

右クリックでGoogle! Windows 7に対応!

お待たせいたしました。

先日紹介したバージョンアップ版が、ようやく、Windows 7に対応いたしました。
動作確認はしておりませんが、Vistaでも動くと思います。

こちらからダウンロードしてください。

また、Word 2007でも動作確認をいたしました。

もし動かない場合には、ご連絡ください。
対処方法を検討させていただきます。

▼変更点
ini.ファイルの保存場所を新しく作りました。

(変更前)
「WINDOWS」フォルダ

(変更後)
ユーザーテンプレートフォルダ内の「みんなのワードマクロ」フォルダ

▼変更理由
Vista以降、ウィンドウズのOSのセキュリティが厳しくなったと聞きました。

ユーザーがWINDOWSフォルダに情報を書き込むことができなく
なったようです。

よって、今までWINDOWSフォルダに保存していた諸々の情報が
記載されたini.ファイルの保存場所を変更したのです。

今後、このブログで紹介するマクロで、ini.ファイルを使う場合には、
すべてこの「みんなのワードマクロ」フォルダに保存するようにします。

| | コメント (0) | トラックバック (0)

2010年4月11日 (日)

新しいブログを立ち上げました

昨日、新しいブログをアメブロに作成しました。

みんなのワードマクロ ワードマクロで、文書作成とオフィス事務を効率化!!
http://ameblo.jp/gidgeerock/

IDのgidgeerock といのは、gidgee (アカシアの樹)と rock (岩)とから作りました。

語呂合わせで「議事録」です。最近、議事録を作ることが多いので。

それはそうと、新しいブログの趣旨です。

新しいブログでは、翻訳のみならず、ワードで作成する文書作成やオフィス事務全般で
使うことができるマクロやちょっとしたコツを紹介していくつもりです。

最初のうちは、この翻訳者向けの「みんなのワードマクロ」で紹介した記事を
多少修正して掲載していく予定です。

このブログを作成しはじめた2008年の7月当時は、自分のメモとして
書いていた記事が多かったと思います。

そのわりに、自分で書いた記事を探すのに、かなり手間取ったりして
使い勝手が悪いな、、、と思っていました。

「この記事があるはず」という記憶を元に探すから到達できる記事が
あるんです。

なので、他の読者の方にはおそらく探しづらいだろうなと感じていました。

ちょうどそんなときに、アメブロでは、テーマ(ココログでいうカテゴリー)を多く増やせる
ということを知りました。

また、動画をリンクできたりといろんな利点があることを知りました。

で、昨日ようやくアメブロID取得したわけです。

文章でいくら工夫して書いても、動画での説明がやっぱりわかりやすいですね。
なので、今後アメブロに新しい記事を書くときには動画を使っていきたいと思っています。

是非お楽しみに。

| | コメント (0) | トラックバック (0)

2010年4月10日 (土)

アイディア・スイッチ(書籍紹介)

ワードのプログラミングに生かせる「発想法」の書籍を紹介します。

ワードマクロやプログラミング全般にいえることですが、
効率的なマクロづくりとは、既存の考え方・プログラムを組み合わせて
新しい作用を作っていくことだと思います。

常に「既存のプログラムを流用」することを念頭において
プログラミングをすることが重要とまで言われていますから。

アイディア作りも、既存のアイディアや知識を組み合わせて
新しい作用とつくることですよね。特許もそういうものだと思います。

こういう点で、「アイディア」と「ワードマクロ」と関係しているかなと
思っています。

で、この本は、「次々と発想を生み出す装置」として
様々な方法を紹介しているのですが、それらは
ほとんど、組み合わせなんです。

どうやって、頭の中にある記憶の断片をひっぱり
出してくるのか?そしてそれをどうやって組み合わせる
のか?というその方法がたくさん書いてあります。

その方法ひとつひとつがすごく面白い。

本当に「スイッチ」なんです。

アイディアマンは、その「スイッチ」をたくさん知っている
んですよね。

そして、日々たくさんのアイディアを出すように練習している。
もしくは、習慣化している。

周りにいるアイディアマンを見て、そんな風に感じます。

この本を読んで、アイディアを出すことは「スキル」なので、
習得が可能だと感じました。

「センス」として片付けるのはもったいない。みんなできるんです。

で、どんなことが載っているかというと、脳に刺激を与えて
あげる方法なんです。

それは、具体的な質問であったり、画像であったり、キーワード
であったり、書くことであったり。

具体的な質問例がたくさん載っています。そして、関連する
キーワードや画像を簡単に取得する方法が載っています。

こうやって、アイディアを出しやすい刺激(スイッチ)を能動的に
取得することで、アイディアを出しやすい状況を作れるんですね。

だから、アイディアを出そうと思って「ただ机に向かう」のではなくて、
今自分ができる簡単なステップ(努力の方法)がわかる。

すてきな本です。

プログラミングにどうやって生かすか、是非発想してみてください。

関連した本として、私が好きな本はこちら。

QT 質問思考の技術

アマゾンの書籍紹介ページからわかりますが、

「質問を意図的に変えることで、建設的に考える能力を身につけ、
自己評価や、人間関係、仕事の成果に結びつけようというのが、本書の提案。」

です。

「論理的な思考術」などの、ぎちぎちした考え方を説明した
ビジネス書とは違います。

しかも、小説風に書かれているので、非常に読みやすいです。

するすると読んでいくうちに、「質問」がどれだけ自分の行動に
影響を与えうるのか疑似体験できます。

だから、この本の学びを日常で生かしやすいのではないかなと思います。

おすすめ。

| | コメント (0) | トラックバック (0)

2010年4月 6日 (火)

「検索と置換」の画面立ち上げ支援マクロ

水野麻子さんのCT手法を用いて翻訳をする場合、置換を多用します。

CTについては、水野さんのブログのこちらのページに、かなり細かく説明されています。

そんな、置換作業を少しでも迅速にするのに役立つプログラムの紹介です。

▼作用
まず、文字列を選択します。

Replace

プログラムを実行すると、「検索と置換」の画面が立ち上がります。

そのときに、現在選択している文字列が、「検索する文字列」および
「置換後の文字列」のテキストボックスに自動的に入力されています。

Replace2

ただし、使ってみてお気づきの方いらっしゃるかもしれませんが、
通常の「置換と検索」ダイアログとは若干違います。

検索のタブがクリックできない、とか、このダイアログを開いている状態では、
文章にカーソルをもっていけないとか。

▼プログラム文

10        With Selection.Find
20            .ClearFormatting
30            .Replacement.ClearFormatting
40            .Text = Selection.Text           ' ← 「検索する文字列」
50            .Replacement.Text = Selection.Text   ' ← 「置換後の文字列」
60        End With
         
70        On Error Resume Next
80        Dialogs(wdDialogEditReplace).Show

▼プログラム文の解説
こちらのページを参照してご登録ください。

10から60行で、「検索する文字列」と「置換後の文字列」を指定しています。

20行と30行では、文字の書式を解除しています。

40行と50行のSelection.Text が、現在選択されている文字列を意味します。

何も選択していない状態であれば、空欄になります。

70行の命令文は、「エラーが起きたときには無視をして次の処理をしよう」、
というものです。

この命令文がないと、80行でダイアログボックスを開いて
置換処理をした後にエラーが起こります。

ネットでいくつかのプログラム文を調べたのですが、同じような処理に
なっていますね。

80行で、「検索と置換」のダイアログボックスを開きます。

| | コメント (0) | トラックバック (0)

2010年4月 3日 (土)

行を上下する1行マクロ

表示中の画面を1行ずつ上下するキーがあればいいなと思ったことありませんか?

カーソルを画面の上端もしくは下端にまでいとうする必要がありません。
動きは、スクロールバーの矢印のボタンをクリックしたものと同じです。

▼用途
マウスを用いずに画面をスクロールさせる方法です。

ページの最終行で文章が途切れてしまっているとき、次の行を
確認したいことありませんか?

そんなときに、このマクロを動かせば、行単位で画面をスクロール
することができます。

ページ単位での上下はキーボードの[PgUp]キーや[PgDn]キーで
できますが、行単位での操作はできませんよね。

で、この操作をマクロで実現してみました。

FUJITSUのワープロのオアシスシリーズにはついていたキーらしいです。
(私はオアシスは使ったことがないのですが、友人が言っていました)

▼注意事項
キーボードのショートカットに登録することを前提にしたマクロです。
→登録方法は、こちらで紹介したいくつかのページをご覧ください。

そうしないと、このマクロを作動させるために、マウスを持って、
このマクロの実行を指示したのでは、本末転倒ですね。

▼基本例
アクティブになっている画面をスクロールします。

 (上方向) ActiveWindow.ActivePane.SmallScroll Up:=1
 (下方向) ActiveWindow.ActivePane.SmallScroll Down:=1

見ると想像できると思いますが、「Up」と「Down」とで方向を指定しています。
また、その量で、行数を指定することができます。

ActiveWindow.ActivePane」が、選択中のウィンドウ枠を意味します。

| | コメント (0) | トラックバック (0)

« 2010年3月 | トップページ | 2010年5月 »