2015-06-18 40 views
1

目前我有一个包含大约20个表格的项目,有时候我想对它们进行一些小的调整。所以我创建了一段代码来删除这些表单,然后以我想要的方式重新创建它们。在excel中为表格提供一个名称,用宏指定名称

问题是,一行代码不断给我路径/文件访问错误(错误75)

这是一小块代码:

Sub makeForm(formName As String) 

    Dim form As Object 

    'These lines delete the old form 
    Set form = ThisWorkbook.VBProject.VBComponents(formName) 
    ThisWorkbook.VBProject.VBComponents.Remove VBComponent:=form  

    'This line creates the new form 
    Set form = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) 

    'These lines give the new form a few properties 
    With form 
     .Properties("Name") = formName 'This is the line of code that gives the error 
     .Properties("Caption") = formName 
     .Properties("Width") = 320 
     .Properties("Height") = 242 
    End With 

End Sub 

是否有人可以告诉我,我怎么能保证这个错误不再出现?顺便说一句,这个错误也会出现,当我在这个宏失败之后手动更改表单的名称时,但是当宏在失败之前我不这样做。 PS:我是新来的这个网站,所以很抱歉,如果我犯了新秀错误。

+0

根据[msdn](https://msdn.microsoft.com/en-us/library/aa264531(v = vs.60).aspx),您无法在文档中进行设计更改。你为什么不重命名现有的表单? – EngJon

+0

为什么不改变现有表单的属性? – ChipsLetten

+0

我需要能够检索表单以使用它们。目前我使用这些名称来确保我找回了正确的名称,因此我需要给新表单提供我想要的名称。 –

回答

0

删除用户窗体后保存工作簿似乎清除错误。

'These lines delete the old form 
Set form = ThisWorkbook.VBProject.VBComponents(formName) 
ThisWorkbook.VBProject.VBComponents.Remove VBComponent:=form 
Set form = Nothing 

ThisWorkbook.Save 

我猜Excel会在保存时刷新一些内部值。

+0

需要很长时间才能执行,但它有效。谢谢您的帮助! –

相关问题