Excel range.value=range.value不做任何事情(工作簿(开放)问题)

Excel range.value=range.value不做任何事情(工作簿(开放)问题),excel,vba,Excel,Vba,我正在尝试使用以下代码将一些值从打开的csv文件复制到我正在处理的工作表中。它有时工作,但偶尔会通过awb.Sheets(“Target”).Range(“A2:C”和lrow)。Value=wb.Sheets(“csvSheetName”).Range(“A2:C”和lrow)。Value,而不实际复制任何值 我已经完成了代码,看不出有任何问题。我试过调试它:awb.Sheets(“Target”).Range(“A2:C”)和wb.Sheets(“csvSheetName”).Range(“

我正在尝试使用以下代码将一些值从打开的csv文件复制到我正在处理的工作表中。它有时工作,但偶尔会通过
awb.Sheets(“Target”).Range(“A2:C”和lrow)。Value=wb.Sheets(“csvSheetName”).Range(“A2:C”和lrow)。Value
,而不实际复制任何值

我已经完成了代码,看不出有任何问题。我试过调试它:
awb.Sheets(“Target”).Range(“A2:C”)和
wb.Sheets(“csvSheetName”).Range(“A2:C”和lrow”)。选择
两个抓取正确的范围,
debug.print wb.Sheets(“csvSheetName”).Range(“A1”)。值
输出它应该输出的值<代码>lrow
具有值

On Error Resume Next
Sheets("Target").ShowAllData
On Error GoTo -1
Sheet5.Range("A2:A7000").Cells.ClearContents
Sheets("Target").Range("A2:C7000").Cells.ClearContents

    Dim wb As Workbook
    Dim awb As Workbook
    Dim myfilename As String


    Set awb = Workbooks("TargetBook")
    myfilename = "www.csvwebsite.com/download.do?query=string"
    Set wb = Workbooks.Open(myfilename)

`Application.Wait (Now + TimeValue("0:00:02"))
 Application.Wait (Now + TimeValue("0:00:10"))
    lrow = wb.Sheets("csvSheetName").Cells(Sheets("csvSheetName").Rows.Count, "A").End(xlUp).Row


    awb.Sheets("Target").Range("A2:C" & lrow).Value = wb.Sheets("csvSheetName").Range("A2:C" & lrow).Value
Application.Wait (Now + TimeValue("0:00:02"))
    wb.Close
在该行无误通过后,目标范围仍然为空。通常我可以重新运行sub,它会工作,但这是一个项目,它实际上是一个服务器后端,并运行24/7。当我昨天试着调试它时,我根本无法让它工作。整个范围通常总共约3000个单元,所以我不认为这会使内存过载

我对其他方法持开放态度,但它无法复制粘贴,因为在执行此操作时,计算机通常是锁定的,我发现在这种情况下使用剪贴板很挑剔。我也很好奇为什么这只会在某些时候起作用。。。我讨厌某些事情在某些时候起作用

编辑:
Set awb=ActiveWorkbook
Set awb=Workbooks(“TargetBook”)
我想这就是我昨天手动浏览时它不起作用的原因。这个问题在这次更改后仍然存在,但当我看到它时,逐步解决它

EDIT2:打开工作簿后的等待时间现在增加到10秒


EDIT3:等待时间的增加或接受答案的更改都没有问题。如果对象未完全加载,可能与VBA跳过该对象有关。

尝试先打开第二个工作簿,然后将wb变量设置为该工作簿名称

所以这里的花絮

Set awb = Workbooks("TargetBook")
myfilename = "www.csvwebsite.com/download.do?query=string"
Set wb = Workbooks.Open(myfilename)
试着把它改成

Set awb = Workbooks("TargetBook")
myfilename = "www.csvwebsite.com/download.do?query=string"
Workbooks.Open(myfilename)
Set wb = Workbooks(myfilename)

lrow
在您
Debug.Print
时返回什么值?
lrow
返回1179它最初是
set awb=ActiveWorkbook
,我将其更改为专门定义它,它做了同样的事情。再次尝试,但没有更改它,它正在运行。。。我已经连续一周看到这个运行,没有任何问题,然后我会在周末过来,它被卡在这个上面。它应该与打开工作簿所花费的时间有关。将等待时间增加到10秒,并将其作为测试运行。虽然将工作簿分配给Excel对象时不应出现这种情况,因为VBA只会在分配工作簿后进行下一步。可能是这种联系有时有效,有时无效吗?或图纸名称更改?图纸名称不会更改。链接可能不起作用,但由于这个原因,需要进行错误处理才能再次运行它。我注意到它偶尔会无法解析链接,下一次就会起作用。我增加了更长的等待时间。。。可能需要一段时间才能再次看到问题。虽然它在完成csv加载之前不应该继续,但我以前见过这个问题,这就是为什么它需要等待的原因。如果不出问题的话,我会在一周左右再发回来。添加了编辑。这很有意义,可能是需要等待的原因。自从将等待时间增加到10秒后,我没有遇到任何问题。仍在监视它。再运行几天,我将添加此项并缩短等待时间。