2014-04-17 450 views
0

我嘗試複製excel中的數據並自動通過電子郵件發送。一切工作正常,除了CF. '如何複製格式和值,而無需使用vba從條件格式化單元複製CF規則

我應用了下面的代碼,但是它也應對了條件格式規則,因爲在粘貼到outlook時它的格式發生了變化。請幫助我們解決這個問題。

功能RangetoHTML(RNG作爲範圍)

Dim fso As Object 
Dim ts As Object 
Dim TempFile As String 
Dim TempWB As Workbook 


TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 

'Copy the range and create a new workbook to paste the data in 
rng.Copy 

Set TempWB = Workbooks.Add(1) 
With TempWB.Sheets(1) 



    .Cells(1).PasteSpecial Paste:=8 
    .Cells(1).PasteSpecial xlPasteValues, , False, False 
    .Cells(1).PasteSpecial xlPasteFormats, , False, False 
    .Cells(1).Select 


    Application.CutCopyMode = False 
    On Error Resume Next 
    .DrawingObjects.Visible = True 
    .DrawingObjects.Delete 
    On Error GoTo 0 
End With 

'Publish the sheet to a htm file 
With TempWB.PublishObjects.Add(_ 
    SourceType:=xlSourceRange, _ 
    Filename:=TempFile, _ 
    Sheet:=TempWB.Sheets(1).Name, _ 
    Source:=TempWB.Sheets(1).UsedRange.Address, _ 
    HtmlType:=xlHtmlStatic) 
    .Publish (True) 
End With 

'Read all data from the htm file into RangetoHTML 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2) 
RangetoHTML = ts.ReadAll 
ts.Close 
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _ 
         "align=left x:publishsource=") 

'Close TempWB 
TempWB.Close SaveChanges:=False 

'Delete the htm file we used in this function 
Kill TempFile 

Set ts = Nothing 
Set fso = Nothing 
Set TempWB = Nothing 

端功能

+0

爲什麼不刪除代碼的** ** xlPasteFormats行? –

+0

如果我刪除了xlPasteFormats,它將不會粘貼現有的格式,如邊框背景顏色等。 – Deva

+0

刪除格式的任何條件方面的一種方法是先將範圍粘貼到Word,然後再從Word粘貼到Outlook。 –

回答

0

條件格式被認爲是格式,所以xlPasteFormats就是爲什麼它被粘貼CF.我會嘗試應用

.Cells(1).FormatConditions.Delete 

複製該值後,並在開始粘貼選項之前。

+0

如果我申請了它,它將刪除整個格式化結果,如字體顏色,背景等......但我不想刪除。我只需要刪除CF規則。 – Deva

+0

我回去後意識到它必須在粘貼後插入,並且根本不需要使用PasteSpecial以下是範圍(「A6」)的示例:選擇 Selection.Copy Range(「C9」)。選擇 ActiveSheet.Paste Selection.FormatConditions.Delete' – Adach1979

+0

不,它不工作。而且我還需要在粘貼之前刪除CF規則。 – Deva

1

在這個小例子中,我們從一小塊具有條件格式的單元格開始。宏:

  1. 打開的Word
  2. 創建一個新文檔
  3. 抄表並將其粘貼到文檔
  4. 保存文檔
  5. 關閉兩個文檔和Word

把它放在一個標準模塊中。生成的Word表格的格式應該是Excel表格,但沒有「條件」

Sub UsingWord() 
    Dim wrdApp As Word.Application 
    Dim wrdDoc As Word.Document 
    Set wrdApp = CreateObject("Word.Application") 
    wrdApp.Visible = True 
    Set wrdDoc = wrdApp.Documents.Add 
    Range("A1:B2").Copy 
    With wrdDoc 
     wrdApp.Selection.PasteAndFormat (wdPasteDefault) 
     .SaveAs ("C:\TestFolder\tdoc.docx") 
     .Close 
    End With 
    wrdApp.Quit 
    Set wrdDoc = Nothing 
    Set wrdApp = Nothing 
End Sub 

選擇自己的文件和文件夾名稱。

您必須在您的VBA>工具Word對象模型參考>引用

+0

你可以讓我知道如何將這些數據從單詞複製到發送郵件的前景嗎? – Deva

+0

@Deva對不起...........這是我不知道的......我只使用基於網絡的電子郵件。 –

相關問題