Excel 代码错误,无法识别

Excel 代码错误,无法识别,excel,excel-2007,vba,Excel,Excel 2007,Vba,修改代码:现在给出错误“下标超出范围” 我有以下代码的问题 此代码正在同一文件夹中制作一个文件的多个副本 除此之外,我还在代码中添加了其他语句,允许将新文件的“文件名”复制到已创建的新工作簿中的新工作表中 在运行时给出错误:应用程序定义的错误或对象定义的错误 谁能告诉我代码中缺少了什么?谢谢你的帮助 Sub CopyFile() Dim i As Integer Dim j As Integer Dim Subfolder As String Dim Sourcefile As Stri

修改代码:现在给出错误“下标超出范围”

我有以下代码的问题

此代码正在同一文件夹中制作一个文件的多个副本

除此之外,我还在代码中添加了其他语句,允许将新文件的“文件名”复制到已创建的新工作簿中的新工作表中

在运行时给出错误:
应用程序定义的错误或对象定义的错误

谁能告诉我代码中缺少了什么?谢谢你的帮助

    Sub CopyFile()
Dim i As Integer
Dim j As Integer
Dim Subfolder As String
Dim Sourcefile As String
Dim Targetfile As String
Dim targetwb As Workbook
Dim targetsheet As Worksheet
Dim myFSO As Object

Subfolder = "J:\Temp\Data\Report\"
Sourcefile = "Hospital .xls" 'The original file name
Set myFSO = CreateObject("Scripting.FileSystemObject")
'loop from A2 to A53
i = 2
Do While ActiveSheet.Cells(i, 1).Value <> Empty
'determine Targetfilename
Targetfile = Subfolder & ActiveSheet.Cells(i, 1).Value & ".xls"
'copy file
myFSO.CopyFile Subfolder & Sourcefile, Targetfile, True 'true will overwrite existing files
i = i + 1
Loop
Set myFSO = Nothing
targetwb = Workbooks(Targetfile)
targetsheet = targetwb("Sheet12")
j = 2
Do While targetsheet.Cells(j, 3).Value <> Empty
targetsheet.Cells(j, 3).copy
targetsheet.Cells(4).Paste
j = j + 1
Loop
End Sub
子复制文件()
作为整数的Dim i
作为整数的Dim j
将子文件夹变暗为字符串
将源文件设置为字符串
将Targetfile设置为字符串
将targetwb设置为工作簿
将目标工作表变暗为工作表
将myFSO作为对象
子文件夹=“J:\Temp\Data\Report\”
Sourcefile=“Hospital.xls”'原始文件名
设置myFSO=CreateObject(“Scripting.FileSystemObject”)
'从A2循环到A53
i=2
当ActiveSheet.Cells(i,1)时执行。值为空
'确定Targetfilename
Targetfile=Subfolder&ActiveSheet.Cells(i,1.Value&“.xls”
'复制文件
myFSO.CopyFile子文件夹&Sourcefile,Targetfile,True“True”将覆盖现有文件
i=i+1
环
设置myFSO=Nothing
targetwb=工作簿(Targetfile)
targetsheet=targetwb(“表12”)
j=2
Do While targetsheet.单元格(j,3).值为空
目标页。单元格(j,3)。复制
targetsheet.单元格(4).粘贴
j=j+1
环
端接头

问题很可能与行和变量columnCount以及对“D”的引用有关。请参阅下面有关值的注释。单元格采用。更新此字段以反映columnCount变量,并将“D”更改为4以表示第4列(也称为“D”):


哪一行出错?你在用pastespecial做什么?你在使用转置,但你只复制了一个单元格。如果您只想复制值,那么只需使用
range1.value=range2.value
@Peter:它没有给我一个选项来点击debug,这会突出显示导致错误的行。可能是因为i是一个
整数
,而您有超过1024行?你能试着将i声明为
long
Cells语法()吗?我想你应该使用
targetsheet.Cells(columnCount,4)
而不是@Sorceri postbelow@Scrceri:如果我删除columncount,仍然会得到相同的错误:Set targetsheet=ActiveSheet ActiveSheet.Cells(I,1)。复制ActiveSheet.Cells(“D1”).Paste Application.CutCopyMode=Falsetargetsheet.Cells(4).End(xlUp).Paste特殊转置:=True…您引用的单元格错误。单元格采用行和列编号。或者您可以添加jsut以反映第1行中的单个单元格
dim columnCount as Integer
columnCount = 10

targetsheet.Cells(columnCount, 4).End(xlUp).PasteSpecial Transpose:=True