Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


31 / 45 ページ ←次へ | 前へ→

【291】Re:文章中の数字だけ色を変えたい
お礼  tootsie  - 05/4/20(水) 11:55 -

引用なし
パスワード
   こんなに早くお返事がいただけるなんて、感謝感激しています。
さっそく貼り付けて使ってみたら、見事に機能しました。

実は、文章の漢字を洋数字に変換するマクロを作ろうとしています。
ネット上で有志の方が無料提供してくださっているものを使ってみたのですが、まったく意図しないものが変換されるなどの不備が多くて困っていたのでした。自分なりに手直しはしているのですが、そのマクロをもっと使いやすいものにするためには、もう少しVBAの勉強が必要なようです。理数系が苦手な自分にとっては大変ですが、頑張ってみますので、分からないことがあれば、またよろしくお願いします。

ありがとうございました。
・ツリー全体表示

【290】Re:文章中の数字だけ色を変えたい
回答  H. C. Shinopy  - 05/4/19(火) 23:18 -

引用なし
パスワード
   御質問の件は、ワイルドカードを使ってできます。
ワイルドカードの指定した内容については、
もっと改善の余地があると思いますが、
私がヘルプや書籍で調べた限りでは、
「正規表現」のような精緻な検索はできないようです。
まずは、下記の通りの回答ということでお許し下さい。

Sub myNumber()
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 Rem 漢数字/洋数字検索処理
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 '
 Dim myStartMarker As Word.Range
 '
 Rem カーソルが文章の途中あると、不都合が起こるので、
 Rem 文章の先頭に移動する。
 Selection.Sentences(1).Select
 Selection.Collapse wdCollapseStart
 '
 Rem 検索開始点の取得。
 Set myStartMarker = Selection.Range
 '
 Rem 検索開始。(ワイルドカードを使用)
 With Selection.Find
  .ClearFormatting
  .Text = "[0-90-9〇一二三四五六七八九十百千万億兆]{1,}"
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindStop
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchFuzzy = False
  .MatchWildcards = True
 End With
 '
 Rem 検索実行。(検索開始点から下を処理する)
 Do While Selection.Find.Execute
  With Selection
   .Range.HighlightColorIndex = wdYellow ' 蛍光ペン:黄色
   .Font.Color = wdColorRed ' フォントの色:赤色
   .Collapse wdCollapseEnd
  End With
 Loop
 '
 Rem 検索開始点に戻る。
 myStartMarker.Select
 MsgBox "検索終了!"
End Sub ' myNumber *----*----*  *----*----*  *----*----*  *----*----*
・ツリー全体表示

【289】文章中の数字だけ色を変えたい
質問  tootsie  - 05/4/19(火) 13:11 -

引用なし
パスワード
   はじめてお便りします。

最近マクロの利用価値にめざめたばかりです。

単刀直入ですが、一般の文章の中の数字(漢数字と洋数字の両方)をチェックするために、数字だけをたとえば赤にするとか、網がけするなどして目立たせたいのですが、どうしたらよいでしょう。

漢数字は一から十、百、千、万、億、兆の位まで。それによって「百瀬」[八潮」などという数字以外の言葉も拾ってしまうかもしれませんが、それはチェックするためなのでかまいません。

面倒な質問で恐縮ですが、よろしくお願いします。
・ツリー全体表示

【288】Re:レイアウト枠の検索
発言  名乗るほどのものでは  - 05/4/15(金) 14:24 -

引用なし
パスワード
   返信が遅くなり申し訳ありません。
下記のマクロでは、レイアウト枠は検索できなかったのですが。。。
うーん、Text=""で、検索かけてるだけなので、
ちょっと、意味合いがわかりません。
検索というと違うかもしれませんが、

Sub test()

Dim setObject As Object

For Each myFrame In ActiveDocument.Frames
  myFrame.Select
  Set setObject = Selection
Next myFrame

End Sub

で、一個ずつ選択していくことはできます。

前に質問頂いていた件ですが、
レイアウト枠を一回テキストボックスに変換してやったら
いける気がするのですが、レイアウトも壊れる気も。

▼timtamlover さん:
>度々すいません。
>以下のマクロで、カーソルがある場所以降、最初のレイアウト枠を検索できるようになりました。
>「3・5・7ページにレイアウト枠のある文書の場合、1〜2ページにカーソルがあれば3ページのレイアウト枠を、4ページにカーソルがあれば5ページのレイアウト枠を検索できます。」
>
>ですが、カーソルがレイアウト枠内にある場合、期待通りの動作になりません。
>つまり、上記の期待通りの動作をさせるには、常に文書(テキスト)上にカーソルを置いておく必要があります。
>
>カーソルの位置に関係なく、レイアウト枠を検索できないでしょうか。
>よろしくお願いします。
>
>
>Sub Macro1()
>Selection.Find.ClearFormatting
>With Selection.Find
>  .Text = ""
>  .Frame.TextWrap = False
>  .Execute Forward:=True
>End With
>Selection.Find.Execute
>End Sub
・ツリー全体表示

【287】Re:セクション区切りのファイルにページを...
回答  ドイツ人  - 05/4/15(金) 10:59 -

引用なし
パスワード
   皆様解決いたしました。

マイクロソフトのサイトがありました。

http://support.microsoft.com/default.aspx?scid=kb;ja;290984

ここでの説明によりますと、

複数のセクションにまたがるページ範囲を指定して印刷するには、次の構文を使用して [ページ指定] ボックス ([印刷] ダイアログ ボックスの [印刷範囲] セクション) にページ範囲を入力します。
p<ページ番号>s<セクション番号>-p<ページ番号>s<セクション番号>
たとえば、セクション 3 のページ 5 からセクション 4 の ページ 2 まで印刷するには、p5s3-p2s4 と入力します。

でした。

またわからないことがありましたら、宜しくお願いいたします。
・ツリー全体表示

【286】Re:レイアウト枠の検索
質問  timtamlover  - 05/4/12(火) 10:31 -

引用なし
パスワード
   度々すいません。
以下のマクロで、カーソルがある場所以降、最初のレイアウト枠を検索できるようになりました。
「3・5・7ページにレイアウト枠のある文書の場合、1〜2ページにカーソルがあれば3ページのレイアウト枠を、4ページにカーソルがあれば5ページのレイアウト枠を検索できます。」

ですが、カーソルがレイアウト枠内にある場合、期待通りの動作になりません。
つまり、上記の期待通りの動作をさせるには、常に文書(テキスト)上にカーソルを置いておく必要があります。

カーソルの位置に関係なく、レイアウト枠を検索できないでしょうか。
よろしくお願いします。


Sub Macro1()
Selection.Find.ClearFormatting
With Selection.Find
  .Text = ""
  .Frame.TextWrap = False
  .Execute Forward:=True
End With
Selection.Find.Execute
End Sub
・ツリー全体表示

【285】Re:Word文書でスタイルをチェックするマクロ
回答  H. C. Shinopy  - 05/4/11(月) 22:59 -

引用なし
パスワード
   多岐の条件については、Select Case ステートメントのほうが便利です。
これにCase節を追加して条件を増やすことができます。
例を挙げると・・・   

Select Case myPara.Style = "標準"
 Case "標準", "見出し1"
  myPara.Range.Font.ColorIndex = wdRed
 Case "見出し 2"
  myPara.Range.Font.ColorIndex = wdBlue
 Case Else
  myPara.Range.Font.ColorIndex = wdGreen
End Select

因みに、指定できるColorIndexの色は・・・
wdBlack wdBlue wdBrightGreen wdDarkBlue
wdDarkRed wdDarkYellow
wdGray25 wdGray50 wdGreen wdPink wdRed
wdTeal wdTurquoise wdViolet
wdWhite wdYellow

また、ヘルプに載っている使用例は下の通り。
条件追加の参考にして頂ければ幸いです。

「次の例は、Select Case ステートメントを使って、変数の値を評価します。
この例では、変数の値は必ず 2 番目の Case 節と一致します。
したがって、2 番目の Case 節に記述されたステートメントだけが実行されます。」

Dim Number
Number = 8            ' 変数を初期化します。

Select Case Number        ' Number を評価します。
 Case 1 To 5            ' Number の値が 1 〜 5 の場合。
  Debug.Print "1 から 5 の間"
 ' この例では、Number に 8 を代入しているため、
 ' True と評価されるのは次の Case 節だけです。
 Case 6, 7, 8            ' Number の値が 6 〜 8 の場合。
  Debug.Print "6 から 8 の間"
 Case 9 To 10 And Number < 11    ' Number の値が 9 または 10 の場合。
  Debug.Print "9 または 10"
 Case Else              ' その他の値の場合。
  Debug.Print "1 から 10 以外の数値"
End Select
・ツリー全体表示

【284】Re:Word文書でスタイルをチェックするマクロ
質問  ZOO  - 05/4/11(月) 10:27 -

引用なし
パスワード
   “標準”と“見出し1”を赤くする場合、以下の様に書けばOKでした。

   If myPara.Style = "標準" Then
    myPara.Range.Font.ColorIndex = wdRed
   End If

   If myPara.Style = "見出し1" Then
    myPara.Range.Font.ColorIndex = wdRed
   End If


全てのスタイルで、上記のIF文を作成すれば動きますが、
簡素化した書き方がわかりません。
テーブルを使用するという方法もありですか?
・ツリー全体表示

【283】Re:Word文書でスタイルをチェックするマクロ
質問  ZOO  - 05/4/11(月) 10:05 -

引用なし
パスワード
   H. C. Shinopy さん
ありがとうございます。
素晴らしいですね。
まさに、求めていた動きとしてはこの通りです。

>[見出し1]がありながら、[標準]や[本文]のない文書があるとは思えませんので・・・
非常にごもっともなご指摘ありがとうございます。
例えば・・・ということで簡単に例えを書き過ぎました。
すみません。
実は、独自のスタイルが20種類くらい有り、
それ以外のスタイルが存在していないかどうか、
確認出来るマクロが出来ればいいな。と思っています。

H. C. Shinopy さんのマクロを手本に試行錯誤していますが、
なかなかうまくいきません。
何か良い方法がありましたらご教示お願いします。
・ツリー全体表示

【282】Re:Word文書でスタイルをチェックするマクロ
回答  H. C. Shinopy  - 05/4/8(金) 23:43 -

引用なし
パスワード
   「見出し1というスタイルしか使用してはいけない文書があった場合・・・」ということですが、
[見出し1]がありながら、[標準]や[本文]のない文書があるとは思えませんので、
文書の中にある段落を順々に条件式で調べるのはどうでしょうか?
他に考えられないので・・・

Sub myStyle()
 Dim myPara As Paragraph
 '
 For Each myPara In ActiveDocument.Paragraphs ' 文書全体を処理する場合
 Rem For Each myPara In Selection.Paragraphs ' 選択した範囲だけ処理する場合
  If InStr(myPara.Style, "見出し") > 0 Then
   Rem [見出し]スタイルの内、[見出し 1]以外の場合、
   Rem 文字の色を赤色にする。
   If myPara.Style <> "見出し 1" Then
    myPara.Range.Font.ColorIndex = wdRed
   End If
  End If
 Next myPara
End Sub
・ツリー全体表示

【281】Re:Word文書でスタイルをチェックするマクロ
質問  ZOO  - 05/4/8(金) 14:00 -

引用なし
パスワード
   H. C. Shinopy さん

サイト情報をありがとうございました。
残念ですが、目的の方向が少し違うので、
掲載されているマクロを書き換えて・・・というのはちょっと私のは無理な様です。
おそらく、検索機能でスタイルは検索可能なのでマクロに詳しい方であれば、
そんなに難しい記述ではないのかな?と思い相談させていただいています。

よろしくお願いします.
・ツリー全体表示

【280】セクション区切りのファイルにページを入れ...
質問  ドイツ人  - 05/4/7(木) 11:46 -

引用なし
パスワード
   もともとどちらかを選択しなければいけないのかとも思うのですが質問です。

セクション区切りをした場合、例えば100セクションあってもページ数は1ページ
ですよね。

ですので、印刷する場合、ページ指定で行っても当然印刷できず、ページ指定で
1ページとすると100枚印刷されます。

セクション55のみ印刷したい場合、どうやれば出来ますか。そもそも不可能なのでしょうか。

セクションを表示して、現在のページを印刷する、で出来ることは出来ますが、
指定して印刷をしたのです。

宜しくお願いいたします。
・ツリー全体表示

【279】Re:Word文書でスタイルをチェックするマクロ
回答  H. C. Shinopy  - 05/4/6(水) 20:55 -

引用なし
パスワード
   まずは、マイクロソフト社の下記ページを参考にしてみて下さい。

「Word 2002 のスタイル設定で使用するマクロを作成する −
さまざまな書式が設定された複数のWord文書を扱うことに
うんざりしたことはありませんか。
ここでは、Word文書のスタイルの管理に役立つ3つのマクロの作成方法に
ついて説明します。」

http://office.microsoft.com/ja-jp/assistance/HA010429641041.aspx

ここのページにあるマクロ
「ListStyles()」・「ChangeDocumentStyles()」で
手間が軽減できるでは?
・ツリー全体表示

【278】Word文書でスタイルをチェックするマクロ
質問  ZOO  - 05/4/6(水) 13:52 -

引用なし
パスワード
   お世話になっております。

アウトライン表示で、右側にスタイルを表示させることが出来ますが、

例えば・・・・

見出し1 
というスタイルしか使用してはいけない文書があった場合、
アウトライン表示で、見出し1 以外のスタイルが存在すると、
その該当する行の色が変わるとかして、一目でわかる様なことがしたいのですが、
可能なのでしょうか?

検索機能で、スタイルを検索したのを自動マクロで記憶させると以下の様になりますが、
違う文書で実行しようとすると、まったくなクロが動きません。

Sub Macro1()

  Selection.Find.ClearFormatting
  Selection.Find.Style = ActiveDocument.Styles("見出し 1")
  Selection.Find.ParagraphFormat.Borders.Shadow = False
  With Selection.Find
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = True
  End With
  
End Sub


どの様に書けばいいでしょうか。

何卒よろしくお願いします。
・ツリー全体表示

【277】Re:マクロの自動実行の方法
お礼  ぽっぽ  - 05/4/6(水) 12:42 -

引用なし
パスワード
   さぼさぼさん、こんにちは。

Subの名前をAutoOpenに変えてみたところ、
思うような動作になりました!

ありがとうございましたm(_ _)m
・ツリー全体表示

【276】Re:マクロの自動実行の方法
回答  さぼさぼ  - 05/4/6(水) 10:48 -

引用なし
パスワード
   ▼ぽっぽ さん:
AutoOpenでやってみて下さい。
AutoExecでは文章がロードされる前に実行されてしまいますので
上手くいかないのだと思います。

>はじめまして。ぽっぽです。
>
>Accessデータベースのテーブルから、
>Wordに差し込み印刷したいと思っています。
>Accessとの連結はうまくいき、
>Word側で差し込み印刷ヘルパーより手動で[差し込み]を実行すると、
>正常に動作します。
>
>この動作を、AccessからWordを呼び出して開いた際に、
>自動的に差し込まれるようにしたいです。
>
>その動作をマクロに記録し、
>それをそのまま利用しているのですが、
>Wordファイルを開いた際にマクロが自動実行されません。
>
>マクロ名が間違っていますでしょうか。
>(他のサイトでAuto_Execというのがあり試しましたがダメでした)
>自動実行のための設定が足りないのでしょうか。
>
・ツリー全体表示

【275】Re:全角、半角
お礼  ほし  - 05/4/6(水) 1:08 -

引用なし
パスワード
   本当にありがとうございます!サイトまで教えていただいて、ほんと親切で感動しました。まだ実行していませんが、やってみます!またなにかあったらよろしくお願いしますm(__)mほんと感謝です!
・ツリー全体表示

【274】マクロの自動実行の方法
質問  ぽっぽ  - 05/4/5(火) 22:20 -

引用なし
パスワード
   はじめまして。ぽっぽです。

Accessデータベースのテーブルから、
Wordに差し込み印刷したいと思っています。
Accessとの連結はうまくいき、
Word側で差し込み印刷ヘルパーより手動で[差し込み]を実行すると、
正常に動作します。

この動作を、AccessからWordを呼び出して開いた際に、
自動的に差し込まれるようにしたいです。

その動作をマクロに記録し、
それをそのまま利用しているのですが、
Wordファイルを開いた際にマクロが自動実行されません。

マクロ名が間違っていますでしょうか。
(他のサイトでAuto_Execというのがあり試しましたがダメでした)
自動実行のための設定が足りないのでしょうか。

WordVBAにつきましては全くの初心者で、
つまらない質問ですが、
何卒、ご教授のほど、よろしくお願いしますm(_ _)m


Sub AutoExec()
'
' AutoExec Macro
' 記録日 2005/04/05 記録者 Poppo'

  Application.WindowState = wdWindowStateNormal
  With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    .MailAsAttachment = False
    .MailAddressFieldName = ""
    .MailSubject = ""
    .SuppressBlankLines = True
    With .DataSource
      .FirstRecord = wdDefaultFirstRecord
      .LastRecord = wdDefaultLastRecord
    End With
    .Execute Pause:=True
  End With
  
End Sub
・ツリー全体表示

【273】Re:全角、半角
発言  名乗るほどのものでは  - 05/4/4(月) 17:04 -

引用なし
パスワード
   失礼、追記。
http://www.diatec.co.jp/support/wxp-101ps2setup.html
を見たらいいかもしれません。
・ツリー全体表示

【272】Re:全角、半角
回答  名乗るほどのものでは  - 05/4/4(月) 17:01 -

引用なし
パスワード
   遅くなり申し訳ありません。
自己解決されたかもしれませんが、
なんのひょうしでか、
日本語キーボードだったキーボード配列の設定が、
英語キーボードに切り替わったのではないかと思います。
普通は、Windowsが立ち上がる前の、真っ暗な画面で、
設定できるのですが、パソコンの種類等がわかりませんので、
「英語キーボード」とか使って、適当にググッてみてください。
答えにならずに申し訳ない。

▼ほし さん:
>ほんとだ!昔みたいに、一発で変換することができました!!ありがとうございます!あと、よくがあって申し訳ないんですが、Altキーを押さずにするようにはできないんですか?ほんとすいませんが、どうかお願いします。
・ツリー全体表示

31 / 45 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
207184
(SS)C-BOARD v3.8 is Free