2016-04-25 143 views
0

我有一個範圍(在不同的工作簿中),我希望將值,格式和圖片複製到不同的範圍(使用vba scipts的活動工作簿)。複製/粘貼多次出現,最多可達50(每頁最多50頁)。我已經開始使用xlPasteValues和xlPasteFormats,並在50個範圍內預先複製圖片(圖片相同,每個範圍在相同位置重複)。工作簿需要一些空間,我想通過複製圖片來修剪其基本大小,而不是使用大部分未使用的50個預複製集。複製/粘貼值,格式和圖片(不是公式)

上面的代碼看起來像這樣(不復制的照片 - 我曾經有已經把所有的圖片,但這種佔用空間):

Set rngImportCopyRange = Range(wksImportedPeakHour.Cells(1, 1), wksImportedPeakHour.Cells(65, 34)) 
rngImportCopyRange.Copy 
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
rngImportCopyRange.Copy 
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

其中「wksImportedPeakHour」是片材有範圍被複制(總是在同一個位置,列中的數據是我不想要的),「intRowStartHere」是一個整數,用於跟蹤粘貼範圍的行。

我試着在xlPasteFormats之前添加「Application.CopyObjectsWithCells = True」,但它試圖做到這一點的錯誤。

直複製/粘貼下面的代碼拷貝的一切,但其他工作簿的公式被複制過而不是值(不行):

rngImportCopyRange.Copy wksStartHere.Cells(intRowStartHere, 1) 

現在,我可以複製的一切,然後取消合併單元格(有些是單元格被合併和合並的時候我不能粘貼特殊xlPasteValues),然後粘貼值,然後粘貼公式 - 看起來像如下:

Set rngImportCopyRange = Range(wksImportedPeakHour.Cells(1, 1), wksImportedPeakHour.Cells(65, 34)) 
rngImportCopyRange.Copy wksStartHere.Cells(intRowStartHere, 1) 

Set rngUnMerge = Range(wksStartHere.Cells(intRowStartHere, 1), wksStartHere.Cells(intRowStartHere + 64, 34)) 
rngUnMerge.UnMerge 

rngImportCopyRange.Copy 
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

rngImportCopyRange.Copy 
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

但具有上述的三個複印/粘貼操作和解除合併。我希望有一些特殊的操作或竅門可以讓腳本不能運行。感謝您的幫助,謝謝!

回答

0

如果在形狀中有一個圖像副本已嵌入到工作簿(Application.sheets(x).Shapes.AddPicture)中,則只需將圖形(而不是圖像)複製到所需的任何圖紙和單元格中。它沒有形狀,但某些版本的Excel不喜歡這些方式。