Ändern codename der Tabelle mit vba
Dieser code funktioniert gut mit VBE-Fenster öffnen, wirft aber einen Fehler Subscript out of range
bei dieser Linie: wB.VBProject.VBComponents(wS.CodeName).Properties("_CodeName").Value = "wsData"
wenn VBE-Fenster wird geschlossen. Vielleicht kann jemand mir zeigen, was ich bin fehlt hier.
Sub newWorkbook()
Dim wB As Workbook
Dim wS As Worksheet
Dim Proj As Object'<=== added
Set wB = Workbooks.Add
Set wS = wB.Worksheets(1)
wS.Name = "Data"
Set Proj = wB.VBProject '<== added
'wB.VBProject.VBComponents(wS.CodeName).Properties("_CodeName").Value = "wsData" '<==Original line
Proj.VBComponents(wS.CodeName).Properties("_CodeName").Value = "wsData" '<== New
On Error Resume Next
Application.DisplayAlerts = False
wB.SaveAs "C:\dummy.xls", 56
Application.DisplayAlerts = True
If Not wB Is Nothing Then wB.Close False
Set wB = Nothing
End Sub
- Zum Wohle der anderen, ich habe mich verändert, meine post zu reflektieren original-code und änderungen, die das problem gelöst haben, wie inspiriert von @Doug Glancy
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, es ist eine manifestation der zwei.dot-Regel, oder zumindest ein entfernter verwandter. Ich war in der Lage, Ihr problem reproduzieren. Ich löste es, indem er die ganze Kette der VBA-Objekte wie diese:
Hatte ich einen Verweis auf die VBA Extensibility, dies zu tun.
Beachten Sie auch, dass der Nutzer Zugriff auf VBA extensibility, indem Sie "Vertrauen Zugriff auf das VBA-Projektmodell" unter Makro-Sicherheit. Sie können testen, ob es sich so:
vbProject
getrennt. Dies auch vermieden, die Notwendigkeit zu setzen, einen Verweis auf die Erweiterbarkeit.