- ベストアンサー
ワードのマクロを教えてください
こんにちは いつもお世話になっています。 ワード(2003)のマクロを教えてください。 ある辞書の文章をコピーした状態から、ワードへ貼り付け、貼り付けた部分だけを書式変更するマクロです。 具体的には、コピーしたテキストを書式付の状態で貼り付けた後、その貼り付けた部分だけを選択して書式を変えたいです。変更する書式は「行間」-「固定値」、「間隔」-「12pt」です。 辞書のコピペで使用したいのです。テキスト形式での貼り付けだと文字化けが生じ、HTMLだと行間が大きすぎるのです。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.5の続きみたいなアドバイス。 以下の説明はちょっと強引な方法ですが、参考までに。 貼り付け先が文書の最後尾だったなら、以下のマクロで対応できるかも しれません。 Sub LineSpacing_12pt() '文書の一番下に辞書内容を貼り付けして行間を指定 Selection.Paste Application.GoBack With Selection .EndKey Unit:=wdStory, Extend:=wdExtend .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly .ParagraphFormat.LineSpacing = 12 End With Selection.MoveRigh End Sub 貼り付けた直前の編集場所に戻って、一番最後まで選択してから行間を 設定する方法ですので、希望しているものでないのなら、工夫するなど してください。
その他の回答 (5)
- enunokokoro
- ベストアンサー率74% (3543/4732)
いろいろ調べてみると、特殊な環境なのですね。 http://www31.ocn.ne.jp/~h_ishida/skptk/README.html HTML形式だと文字化けせずに貼り付けできるのですよね。 このとき、文字化けする文字(たぶん外字となっているもの)の書式など を確認して、使用しているフォントなどを調べてみてはいかが。 メニューの[書式]→[書式の詳細設定]で表示される作業ウィンドウにて 具体的な書式を確認できますので、それをもとにスタイル設定をしても よいかと思います。 スタイルで設定できないとなると、フォントの取得などを私はマクロで 組むほどのスキルを持ち合わせていませんので、回答できません。 もしも、今すぐ必要なことなら、貼り付けたものを選択するマクロでの 方法は分りませんが、手動で選択しておいてから行間だけ設定する方法 で対応してはいかが。 Sub LineSpacing12() '貼り付けした範囲を選択後に設定してください With Selection .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly .ParagraphFormat.LineSpacing = 12 End With End Sub このマクロをコマンドボタンとして配置するか、ショートカットキーで 登録しておけば作業効率は少しは上がると思います。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 文字化けの程度は、すべてですか、一部ですか? どのような文字化けになるのでしょうか? 私は現象については、ある程度想像はつくのですが、複雑なものは経験がないのです。 今、見えている以上は、学研の辞書用のフォントが入っているはずですから、enunokokoroさんが示したように、貼り付け用のスタイルを用意し、学研の辞書専用フォントを設定して、そこに貼り付けるようにすればよいと思います。 一応、学研の「Super 日本語大辞典」の外字テーブルを調べてみました。汎用性のあるデータとして、専用フォントを使わない方法は、一旦、クリップボードにあるものを、バイナリで置換していく方法を取るのだと思います。しかし、その中には、文字制御記号まであるとなると、VBAで置換する方法は、かなり複雑なものだと思います。Rubyのようなストリームエディタで出来るようですから、VBAで出来ないはずはないのですが、今、私にとって、今日・明日に出来るとは思えないのです。
お礼
Wendy02 様 ありがとうございました。 こちらの説明不足から、色々お手数をおかけしまして申し訳ありません。 皆様のご教授のお陰で解決いたしました。 ご紹介いただいたコード等も今後、勉強したいと思います。 簡単で恐縮ですが、お礼申し上げます。
- enunokokoro
- ベストアンサー率74% (3543/4732)
私も前回の質問を閲覧して、回答するかどうか迷った一人です。 Word2003なら、[貼り付けオプション]で[貼り付け先の書式に合わせる] がありますので、これを利用してスタイルとして登録しておいたものに 合わせる方法も検討してはいかが。 以下の内容は、辞書として利用する文書オンリーで利用するものとして の回答です。 すでに辞書用として貼り付けをしてあって、行間などを指定した段落が 存在するなら、そのスタイルを登録しておきます。 ・貼り付けして段落書式を設定済みの段落が選択してあるとします。 ・[スタイルと書式]→[新しいスタイル]でスタイル名を付けて登録。 ・スタイル名を「辞書」として、貼り付け用のマクロを作成。 ・マクロの登録先は文書名のThisDocumentでよいと思います。 Sub DictionaryPaste() ' '辞書スタイルで用意した段落に貼り付け先に合わせる貼り付けをする ' Selection.Style = ActiveDocument.Styles("辞書") Selection.PasteAndFormat (wdFormatSurroundingFormattingWithEmphasis) End Sub 上記マクロのスタイル名を変更するだけで、貼り付け先のスタイルへの 変更をして貼り付けしたスタイルを適用できるようになります。 単純に行間だけを設定するだけで、フォント名は貼り付け先と同じもの にするなら、スタイルを登録しておかなくても以下のマクロで可能です。 Sub LineSpacing12() With Selection .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly .ParagraphFormat.LineSpacing = 12 .PasteAndFormat (wdFormatSurroundingFormattingWithEmphasis) End With End Sub 上記二つのマクロのどちらかを、マクロ名"Sub EditPaste()"にすれば、 その文書で普通に[ Ctrl+V ]キーで貼り付けしたものが、指定してある スタイル名で貼り付けされます。 マクロ名を直さないで、登録したマクロへのショートカットキーを設定 するほうが、個人的にはお勧めです。
お礼
自分の説明不足にもかかわらず、丁寧に教えていただきありがとうございました。 使用している辞書は「Super日本語大辞典」というものです。 特殊なフォントを使っている部分があり、それが意味の見出し番号だったりするので どうしてもそのフォントを使う必要があります。 現在のやりかたは 1:通常通りの貼り付け(リッチテキスト形式だと思います) 2:貼り付けた部分(行単位)を選択 3:書式の詳細設定-「行間」-「固定値」、「間隔」-「12pt」 としています。 Wendy02 様 と enunokokoro 様のコードを使わせていただきましたところ 行間は成功するのですが、文字化けしてしまいます。 「スタイル」保存もフォントは設定した段落のものを使ってしまうようです。 追加で教えていただけるとありがたいのですが。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 前回、回答が付かなかったようですね。 しばらく、考えてみましたが回答は付けませんでした。ある程度のみなさんが使える汎用性があるものなら作りますが、固有の個人のリクエストに対するマクロは作りにくいです。 最大の原因は、 >コピーしたテキストを書式付の状態で貼り付けた後、 ここの部分です。テキストはプレーン・テキストで貼り付ければよいのです。書式を一旦消すマクロなんて、コードとしては、以下のコードの倍以上になってしまいます。 私は、右クリックで、ExcelもWordもテキスト貼り付けができるオプションを入れています。私の使っているものを、アレンジしてみました。だいたいは、私個人のものは、掲示板の皆様は、人気がないようですが……。これでも、長年使っているものです。 ちなみに、Ctrl + V の設定をしてしまったら、常に、同様の書式になってしまいます。 マクロでクリップボードの中身を調べて、その中身のバイナリコードに対して、反応を換えるということも出来るのですが、Wordは、上限のファイル・サイズが決められていますから、それはしないほうがよいです。 >テキスト形式での貼り付けだと文字化けが生じ、 具体例がないと分かりません。これに関しては処理していません。 以下の使い方は、他のフォーマットでコピーしたものを、右クリックして、「固定書式貼り付け」で、規定の位置に貼り付けします。なお、Normal.dot は、一旦設定したら、バックアップしておくようにしてください。 '------------------------------------------- 'Normal.dot の標準モジュール(Module1) Sub AutoOpen() On Error Resume Next With Application.CommandBars("TEXT") .Controls("固定書式貼り付け").Delete End With With Application.CommandBars("TEXT").Controls.Add _ (Type:=msoControlButton, Temporary:=True) .BeginGroup = False .Caption = "固定書式貼り付け" .OnAction = "FormattedTextPaste" End With Call SettingShortCut On Error GoTo 0 End Sub Sub FormattedTextPaste() Selection.PasteAndFormat Type:=wdFormatPlainText With Selection.Range .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly .ParagraphFormat.LineSpacing = 12 End With End Sub
お礼
自分の説明不足にもかかわらず、丁寧に教えていただきありがとうございました。 使用している辞書は「Super日本語大辞典」というものです。 特殊なフォントを使っている部分があり、それが意味の見出し番号だったりするので どうしてもそのフォントを使う必要があります。 現在のやりかたは 1:通常通りの貼り付け(リッチテキスト形式だと思います) 2:貼り付けた部分(行単位)を選択 3:書式の詳細設定-「行間」-「固定値」、「間隔」-「12pt」 としています。 Wendy02 様 と enunokokoro 様のコードを使わせていただきましたところ 行間は成功するのですが、文字化けしてしまいます。 「スタイル」保存もフォントは設定した段落のものを使ってしまうようです。 追加で教えていただけるとありがたいのですが。
- esupuresso
- ベストアンサー率44% (257/579)
>貼り付けた部分だけを書式変更するマクロです。 貼り付けた部分に対してのみ(文字のみ)の「行間」-「固定値」、「間隔」-「12pt」と言う設定は出来ません 段落に対しての設定のみとなります 貼り付けた文字を一つの段落としてみます 貼り付けた段落をドラッグ→メニューバーの「ツール」→「マクロ」をポイント→「新しいマクロの記録」をクリック→「マクロ名を入力」(入力しない場合は「Macro1」がマクロ名として登録されます→「マクロの保存先」を文書1のみにするか全ての文書に適用させるかを選択します→「OK」を押すとマクロの記録が開始されると同時に記録と終了の小さいツールバーが出ます→ 文章をドラッグした状態を維持したまま「書式」→「段落」→「行間」-「固定値」、「間隔」-「12pt」を設定後「OK」をクリック→「マクロの終了」ボタンをクリックしてマクロの登録が終了となります マクロを実行させる場合は実行させたい段落のどこでもいいですのでクリックしてカーソルを入れておき、マクロ名を登録した場合はそのマクロ名を選択して「実行」をクリックさせます
お礼
esupuresso 様 ありがとうございました。 記録マクロですと貼り付けた行の選択が一律になってしまうようです。 お手数をおかけしました。
お礼
enunokokoro 様 ありがとうございました。 お蔭様で解決しました。 丁寧に教えていただき助かりました。 作業効率が上がります。 Selection.MoveRight のみ変更させて頂き、長く使わせていただきます。 簡単で恐縮ですが、お礼申し上げます。