2017-03-14 60 views
3

我從此網站找到以下代碼。它幾乎可以工作,除了它將日期導出到Word文檔中的表單中。相反,我想要有段落,保持原始字體,大小和顏色在Excel中。誰能幫忙?非常感謝!如何將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'? –

+0

單據,證明該\t申請博士的姓氏\t的審查\t XX \t次\t期刊名稱 單據,證明該\t申請博士的姓氏\t的審查\t XX \t次\t期刊名稱 單據,證明該\t申請博士的姓氏\t的審查\t XX \t次\t期刊名稱 單據,證明該\t申請博士的姓氏\t的審查\t XX \t次\t日記名稱 –

回答

1

這很簡單,你使用的pasteSpecial方法與錯位的參數。這在一開始就引起了我的錯誤。試試這個貼純無格式文本:

.PasteSpecial DataType:=2 ' wdPasteDataType.wdPasteText 

或者保持字體的格式,

.PasteSpecial DataType:=1 ' wdPasteDataType.wdPasteRtf 

到粘貼後替換單一空間標籤:

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擺脫了表格,但在不同單元格的內容之間留下了Tab標記。所以有多餘的空間。 .PasteSpecial DataType:= 1仍然輸出一個表。我確實需要保持字體。 –

+0

是的Excel插入單元格之間的選項卡。你想用單打空格替換它們嗎? –

+0

@VivianYu上面的代碼將粘貼文本,並在粘貼後用單個空白替換「tabs」。 –

1

最簡單的替代方案,我能想到的是粘貼Excel範圍並將表格轉換爲文本:

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

相關問題