2016-07-13 4 views
1

最初の2行は、完全なシートを別のファイルにコピーするループです。値だけから。コメントアウトされている2番目の部分は、値だけをコピーするように動作します。しかし、最初の2行に値を指定したように書式をコピーします。どのように私はこれを組み合わせることができます。私は他の例を見て、私は動作する答えを得るように見えることができません。おかげワークシートの値を別のワークシートファイルにコピー

   xlWorksheetSource = xlWorkbookSource.Sheets(sheet.Name) 
       xlWorksheetSource.Copy(After:=xlWorkbookDestination.Worksheets(xlWorkbookDestination.Worksheets.Count)) 


       'xlWorksheetSource.UsedRange.Copy() 
       'xlWorkDestSource = xlWorkbookDestination.Worksheets.Add() 
       'xlWorkDestSource.UsedRange._PasteSpecial(XlPasteType.xlPasteValues, XlPasteSpecialOperation.xlPasteSpecialOperationNone, False, False) 
       'xlWorkDestSource.Name = sheet.Name 

答えて

1

これは、セルの書式と値を貼り付けていきます。

xlWorksheetSource.UsedRange.Copy() 
xlWorkDestSource = xlWorkbookDestination.Worksheets.Add() 
xlWorkDestSource.Range("A1").PasteSpecial xlPasteAllUsingSourceTheme 
xlWorkDestSource.Range("A1").PasteSpecial xlPasteValues 

あなただけの必要がある場合は、これを行うことができます書式設定値や数:

xlWorksheetSource.UsedRange.Copy() 
xlWorkDestSource = xlWorkbookDestination.Worksheets.Add() 
xlWorkDestSource.Range("A1").PasteSpecial xlPasteValuesAndNumberFormats 

更新

マージされたセルを操作するには、これが機能します。

xlWorksheetSource = xlWorkbookSource.Sheets(sheet.Name) 
       xlWorksheetSource.Copy(After:=xlWorkbookDestination.Worksheets(xlWorkbookDestination.Worksheets.Count)) 

xlWorkDestSource = xlWorkbookDestination.Worksheets(xlWorkbookDestination.Worksheets.Count) 

For each cel in xlWorkDestSource.UsedRange 
    cel.MergeArea.Value = cel.MergeArea.Value 
Next 

*より良い/より高速な方法があるかもしれませんあなたのコードではなかったので、私は、オブジェクトのいずれかを修飾していないことに注意したが、その間違いなくベストプラクティスしてください。

+0

私は最初に試したところ、「この操作では結合されたセルのサイズが同じでなければなりません」というエラーが表示されます。 – Sirus

+0

@Sirus - これはまったく別の問題です。あなたが最初に細胞を合併したことを知っておくと便利でした。私はマージされた細胞を最初に取り除くことを勧めます。 (書式設定の場合は、列の2つ(またはそれ以上)のセルの書式設定で 'CenterAcrossSelection'を使用してみてください)。 –

+0

元のスプレッドシートを変更することはできません。それらはフォーマットされていて変更できません。 – Sirus

関連する問題