0
好的我已经到了代码正在从封闭工作簿中读取数据并将其粘贴到该工作簿的工作表2中的地步。这是我的新代码:从封闭的工作簿中复制excel VBA
Sub Copy456()
Dim iCol As Long
Dim iSht As Long
Dim i As Long
'Fpath = "C:\testy" ' change to your directory
'Fname = Dir(Fpath & "*.xlsx")
Workbooks.Open ("run1.xlsx")
For i = 1 To Worksheets.Count
Worksheets(i).Activate
' Loop through columns
For iSht = 1 To 6 ' no of sheets
For iCol = 1 To 6 ' no of columns
With Worksheets(i).Columns(iCol)
If ((.Cells(1, 1).Value = "Time")) Then ' if first cell=Time then copy two columns
Range(.Cells(1, 2), .End(xlDown)).Select
Selection.Copy Destination:=Workbooks("Your Idea.xlsm").Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
Worksheets("Sheet2").Cells(i * 2 + 1) = Worksheets(i).Name
Else
' do nothing
End If
End With
Next iCol
Next iSht
Next i
End Sub
但是,一旦我改变的代码部分:
Selection.Copy Destination:=Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
成代码:
Destination:=Workbooks("general.xlsx").Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
它停止工作发出错误:“订阅了范围“。 文件general.xlsx是一个空文件,它也被关闭。
当我改变代码为:
`Selection.Copy Destination:=Workbooks("Your Idea.xlsm").Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
然后发出一个错误:“1004不能更改合并单元格的一部分”。 文件“您的Idea.xlsm”是我运行此脚本的文件。
这个问题的任何帮助?
尝试在循环的开始激活的工作表,也许使用ActiveWorksheet.Columns或只是ws.Columns与同为范围尽管这些并不像你所期望的那样引发错误,但是当涉及到使用范围等时,需要更加明确。否则,VBA只使用第一个工作表而不是每个工作表 – 2012-01-27 13:19:50
“VBA只使用第一个工作表而不是每个工作表”应该是VBA只是使用活动工作表... – 2012-01-27 13:26:38
因为我无法回答我的问题,所以我用新代码编辑了上一个问题,而ne w问题。你能再看看吗? – novak100 2012-01-27 15:03:11