我从Microsoft Access导入数据,错误检测似乎没有工作。如果代码尝试创建已存在的工作表,请继续并将目标工作表设置为已存在的工作表。任何提示将不胜感激。如果表不存在,创建它(VBA Excel)
For ix = stWW To edWW
For modi = 0 To mdcnt - 1
On Error Resume Next
Sheets.Add(After:=Sheets(Sheets.Count)).Name = ix & " " & modvar(modi)
On Error GoTo 0
Set DestinationSheet = Worksheets(ix & " " & modvar(modi))
'strSQL2 = "SELECT 1302_Scan.* FROM 1302_Scan;"
strSQL = "SELECT " & ix & "_" & modvar(modi) & ".* FROM " & ix & "_" & modvar(modi) & ";"
'MsgBox strSQL & "|" & strSQL
DestinationSheet.Cells.Clear
在代码中使用较早,可能会导致错误@ sous2817的建议。
On Error GoTo continue
Do While Not IsNull(modvar(ii))
mdcnt = mdcnt + 1
ii = ii + 1
Loop
continue:
On Error GoTo 0
非常感谢,我的问题几乎解决。我遇到的最后一个问题是,如果工作表已经存在,它会说“不能将工作表重命名为与另一个工作表相同的名称,引用的对象库或Visual Basic引用的工作簿。我确实使用了错误goto(添加了编辑以上代码),但是我把错误转到了后面,所以我认为它不会导致问题? – user2457541
@ user2457541逻辑可能是同样的权利?将表格重命名为某些内容,如果表格名称已经存在,则跳过该部分并这是一个正确的假设吗?如果是这样,只需在重命名代码的那一行上面的错误恢复中添加另一个错误,并在错误转到行后错误地跳到0处。如果这不正确,则必须编辑您的文章并且我会再试一次它 – sous2817
我编辑了我的问题,你说的是完全有道理的,我尝试着用一个iserror(ws.name)做类似的事情,但是代码正在执行,下一个错误恢复不存在。 – user2457541