将数据从一个Excel复制/粘贴到另一个 - Dropbox / Combobox错误

时间:2014-01-08 16:08:13

标签: excel vba excel-vba

我正在尝试将数据从一个Excel工作簿复制到另一个工作簿。

我们对导入文件的模板进行了更改,因此破坏了旧的导入文件。因此,仍有一些文件需要导入,但它们位于旧模板下。

我的问题源于我尝试复制数据时(粘贴特殊值,值,尝试过的任何东西)它有时会给我一个错误:“您尝试更改的单元格或图表受到保护,因此读取 - 只有”

但事实并非如此。我已确定当我将空白单元格粘贴到具有“是”或“否”的下拉列表的新字段时,它会出现错误。但是,如果我手动转到该单元格并将其显示为空白(按退格键+输入) ,它没有问题。

我已经尝试过编码,因此它一次从工作簿到工作簿复制/粘贴每一行,但我的问题仍然存在于需要下拉式答案的这些单元格中。我认为这些单元格需要编码为实际上是“打字”而不是粘贴。它不能成为粘贴实际范围的一部分。

有没有人知道如何最好地解决这个问题?下面是我目前的代码,它是根据范围进行复制。它非常草率,因为我能想到的唯一方法是不断从工作簿切换到工作簿。非常感谢任何帮助。

另外,我不是100%关于如何计算LastRow?所以我只是手动输入。

Sub MoveText()


For Row = 5 To 962


Workbooks("Data.xls").Activate
ActiveSheet.Range(Cells(Row, 1), Cells(Row, 3)).Select
Selection.Copy

Workbooks("blankTemplate.xls").Activate

ActiveSheet.Range(Cells((Row + 1), 1), Cells((Row + 1), 3)).Select
Selection.PasteSpecial Paste:=xlPasteValues

Workbooks("data.xls").Activate
ActiveSheet.Range(Cells(Row, 5), Cells(Row, 29)).Select 'this will select the contents of the active row

Workbooks("blankTemplate.xls").Activate

ActiveSheet.Range(Cells((Row + 1), 5), Cells((Row + 1), 29)).Select
Selection.PasteSpecial Paste:=xlPasteValues


Next

1 个答案:

答案 0 :(得分:1)

Sub MoveText()

    Dim shtData As Worksheet, shtTempl As Worksheet
    Dim Row As Long

    Set shtData = Workbooks("Data.xls").Sheets("Data") 'or e.g. .Sheets(1)
    Set shtTempl = Workbooks("blankTemplate.xls").Sheets("Data")

    For Row = 5 To 962

        shtTempl.Cells(Row + 1, 1).Resize(1, 3).Value = _
                         shtData.Cells(Row, 1).Resize(1, 3).Value

        shtTempl.Cells(Row + 1, 5).Resize(1, 25).Value = _
                        shtData.Cells(Row, 5).Resize(1, 25).Value

    Next Row

End Sub