1

Excel シートからデータを取得し、各行の Word シートに段落を生成する Excel Visual Basic スクリプトを作成しました。ドキュメントのデフォルト言語はヘブライ語で、テキストは右揃え、方向は右から左です。段落の 1 行 (最後の行) について、言語を英語、方向を左から右、配置を右に設定したいと考えています。次に、次の段落の最初の行をヘブライ語に戻し、方向を右から左に、配置を右にします。段落の最後の行にいるときに Word でマクロを記録し、ホーム、Shift End を押し、ツールバーのアイコンをクリックして言語、方向、配置を必要に応じて変更すると、次のようになります。

Sub test()
    Selection.HomeKey Unit:=wdLine
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Application.Keyboard (2057)
    Selection.LtrPara
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
End Sub

驚いたことの 1 つは、言語の変更が、方向や配置のようにオブジェクトのプロパティではなく、キーボードを使用しているかのように記録されることです。これをExcel Visual Basicに変換するにはどうすればよいですか? 問題の行は現在、次を使用して追加されています。

With f
    .Content.InsertAfter Format(a, "standard") & " x " & Format(b, "#,##0.000") & " x " & Format(c, "#,##0.000") & " / " & Format(d, "#,##0.000") & " = " & Format(e, "standard")
    .Content.InsertParagraphAfter
End With

ありがとう、

エルンスト

4

1 に答える 1

0

わかりました、回避策があります。これは部分的な答えにすぎません。これは Excel ビジュアル ベーシックのソリューションではなく、Word のソリューションです。

のすべての出現箇所を検索してから^13[!^13]@x*^13、言語、配置、および方向の変更を行います。Wordでマクロとして記録すると、次のようになります。

Sub Macro1()

Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^13[!^13]@x*^13"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
End With
Selection.LtrPara
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^13[!^13]@x*^13"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
End With

サブ終了

しかし、新しく生成された Word 文書でこれを実行すると、これは本来の動作をしません。その回避策のアイデアはありますか?ところで、Excel VB を使用して Excel VB で生成されたドキュメントに Word マクロを追加して実行できますか?

于 2011-06-14T06:38:08.867 に答える