我正在尝试将数据从一个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
答案 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