2017-03-14 4 views
3

私はこのウェブサイトから次のコードを見つけました。これは、Word文書のフォームに日付をエクスポートする点を除いて、ほとんど動作します。代わりに、元のフォント、サイズ、色を維持しながら、段落を持たせたいと思います。誰でも助けてくれますか?非常に高く評価!データをExcelからテキストにエクスポートする方法VBA

Sub Export_Excel_To_Word() 

Dim wdApp As Object 
Dim wd As Object 

On Error Resume Next 
Set wdApp = GetObject(, "Word.Application") 
If Err.Number <> 0 Then 
    Set wdApp = CreateObject("Word.Application") 
End If 
On Error GoTo 0 

Set wd = wdApp.Documents.Add 

wdApp.Visible = True 



Sheets("sheet1").Activate 
Set Rng = ThisWorkbook.ActiveSheet.Range("A2:F21") 

Rng.Copy 

    With wd.Range 
     .Collapse Direction:=wdCollapseStart     'Slutet av dokumentet 
     .InsertParagraphAfter         'Lagg till rad 
     .Collapse Direction:=wdCollapseStart     'Slutet av dokumentet 
     .PasteSpecial xlPasteFormats, False, False   'Paste with format 

    End With 

End Sub 
+0

「A2:F21」の範囲のデータは何ですか? Excelドキュメントのスクリーンショットを表示します。 – Wolfie

+0

'.PasteSpecial WdPasteDataType.wdPasteText、False、False'を試してみませんか? sがあることを証明する\t雑誌名 ドキュメントのため\t XX \t回を検討しているのは\t \t博士アプリケーションの姓ことを証明\t雑誌名 ドキュメントのため\t XX \t回見直した「\t \t博士アプリケーションの姓ことを証明 –

+0

ドキュメント\t博士アプリケーションの姓\tのを検討しているのは\t博士アプリケーションの姓\tがいることを証明する\t雑誌名 ドキュメントのため\t XX \t回見直した 'はXX \t回\tジャーナル名 –

答えて

1

これはかなり簡単ですが、間違ったパラメータでpasteSpecialメソッドを使用しています。それは最初は間違っていました。

.PasteSpecial DataType:=1 ' wdPasteDataType.wdPasteRtf 

ペーストした後、単一のスペースとタブを交換するには、

.PasteSpecial DataType:=2 ' wdPasteDataType.wdPasteText 

やフォントのフォーマットを維持する:

With wd.Range 
    .Collapse Direction:=wdCollapseStart 
    .InsertParagraphAfter 
    .Collapse Direction:=wdCollapseStart 
    .PasteSpecial DataType:=2 
    With .Find 
     .ClearFormatting 
     .Text = vbTab 
     .Replacement.ClearFormatting 
     .Replacement.Text = " " 
     .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue 
    End With 
End With 
+0

.PasteSpecial DataType:= 2はテーブルを削除しますが、異なるセルの内容の間にはタブ記号が残ります。したがって余分なスペースがあります。 .PasteSpecial DataType:= 1はまだテーブルを出力します。私はフォントを保持する必要があります。 –

+0

はいExcelはセル間にタブを挿入します。あなたはシングルスペースでそれらを交換したいですか? –

+0

@VivianYu上記のコードの最後の部分はテキストを貼り付け、ペースト後に 'tabs'を1つの空白に置き換えます。 –

1

最も簡単な、これは純粋な未フォーマットのテキストを貼り付けよう私が考えることができる代替案は、Excel Rangeを貼り付けて、テーブルをテキストに変換することです。

ThisWorkbook.Sheets("sheet1").Range("A2:F21").Copy 

wdApp.Selection.Paste 

wdApp.DefaultTableSeparator = " " 

wdApp.Selection.Previous(15).Rows.ConvertToText 
+0

ありがとう!これはうまくいった!あなたはどのように細胞の内容の間にハイフンを削除するか知っていますか? –

+0

@VivianYu '.ConvertToText'メソッドのさまざまなオプションパラメータを試してみましょう。それが役立つかどうかを確認したり、テキスト変換ダイアログとレコードマクロのさまざまなオプションを試して、生成されたコードを確認してください。 – Slai

+0

@VivianYu更新されたサンプルはそれを変更すると思います – Slai

関連する問題