2016-12-11 14 views
0

私はvbaの全く新しい初心者です。 他のワークブックからいくつかのシートを1枚のシートにインポートできました。 しかし、私は書式を維持し、また、インポートされているセルの色を保持したいと思います。 これはSOFAR私のコードです:Excel vba複数のシートを1枚のシートにインポートしてフォーマットを維持する

Public strFileName As String 
Public currentWB As Workbook 
Public dataWB As Workbook 
Public strCopyRange As String 

Sub delData() 'Clears MasterData except 1st line 
Dim ws As Worksheet 
For Each ws In Worksheets 
    Select Case ws.Name 
    Case Is = "List", "Sheet1" 
     ' Do Nothing 
    Case Else 
     ws.UsedRange.Offset(1).ClearContents 


    End Select 
Next ws 
End Sub 

Sub GetData() 
Dim strWhereToCopy As String, strStartCellColName As String 
Dim strListSheet As String 

strListSheet = "List" 

On Error GoTo ErrH 
Sheets(strListSheet).Select 
Range("B2").Select 

'this is the main loop, we will open the files one by one and copy their data into the masterdata sheet 
Set currentWB = ActiveWorkbook 
Do While ActiveCell.Value <> "" 

    strFileName = ActiveCell.Offset(0, 1) & ActiveCell.Value 
    strCopyRange = ActiveCell.Offset(0, 2) & ":" & ActiveCell.Offset(0, 3) 
    strWhereToCopy = ActiveCell.Offset(0, 4).Value 
    strStartCellColName = Mid(ActiveCell.Offset(0, 5), 2, 1) 

    Application.Workbooks.Open strFileName, UpdateLinks:=False, ReadOnly:=True 
    Set dataWB = ActiveWorkbook 

    Range(strCopyRange).Select 
    Selection.Copy 

    currentWB.Activate 
    Sheets(strWhereToCopy).Select 
    lastRow = LastRowInOneColumn(strStartCellColName) 
    Cells(lastRow + 1, 1).Select 

    Selection.PasteSpecial xlPasteValues, xlPasteSpecialOperationNone 
    Application.CutCopyMode = False 
    dataWB.Close False 
    Sheets(strListSheet).Select 
    ActiveCell.Offset(1, 0).Select 
Loop 
Exit Sub 


ErrH: 
    MsgBox "It seems some file was missing. The data copy operation is not complete." 
Exit Sub 


End Sub 

Public Function LastRowInOneColumn(col) 
    'Find the last used row in a Column: column A in this example 
    Dim lastRow As Long 
    With ActiveSheet 
    lastRow = .Cells(.Rows.Count, col).End(xlUp).Row 
    End With 
    LastRowInOneColumn = lastRow 
End Function 

My機能のGetData()既存のデータを上書きdoesntの - 私は回避策を作り、機能DELDATAを(作成)。 GetData関数を既存のデータを上書きするようにするにはどうすればよいですか? そして、私がインポートしたシートの書式と色を維持したいと思います。また、古いデータ/色を上書きする必要があります。

私は本当にこれが誰かに理にかなって願っています。o) どれアドバイスが最も おかげで...

答えて

0

使用apreciatedさ:

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 

代わりのSelection.PasteSpecial xlPasteValues, xlPasteSpecialOperationNone

+0

をあれば動作するようです古い行を新しい行に置き換える代わりに、両方の行を保持します。私は特定の色で細胞を隠す方法を知っていますか? SortやFiltreと同じですが、特定の色のセルを隠すことができます。 – Brian

+0

特定の色でセルを隠すことについては心配しないでください。私はソートとフィルタでこれを行っています。お手伝いありがとう。私は本当にそれを感謝する:o) – Brian

関連する問題