vba:打开工作簿并更改工作表名称

vba:打开工作簿并更改工作表名称,vba,excel,Vba,Excel,我正在尝试复制一张工作表,然后打开副本以更改第一张工作表的名称 这是插入到模块1上的代码: Sub CopiarNovaPlanilha() Dim wkb As Workbook ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx" Set wkb = Workbooks.Open("I:\CGP

我正在尝试复制一张工作表,然后打开副本以更改第一张工作表的名称

这是插入到模块1上的代码:

Sub CopiarNovaPlanilha()
Dim wkb As Workbook

ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx"

Set wkb = Workbooks.Open("I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx")
wkb.Sheets(1).Name = "FUNCIONARIOS"

End Sub
保存副本的
子部分的第一部分非常有效。虽然当我尝试运行第二部分时,会出现以下错误:

运行时错误1004:Excel无法打开该文件

它说它无法理解扩展名
.xlsx
,或者文件可能已损坏,但我检查过了,文件没有问题

有人知道这是什么问题吗?

这对我很有用

Private Sub derp()
    Dim wbk As Workbook
    Dim path As String
    path = "C:\Users\dcoats\Desktop\Book1.xlsx"
    Set wbk = Workbooks.Open(path)
    wbk.Sheets(1).Name = "FUNCIONARIOS"
End Sub
所以也许可以检查你的字符串,这是你的工作簿的路径

编辑

我刚试过这个,效果也不错

Private Sub derp()
    Dim wbk As Workbook
    Dim path As String
    path = "C:\Users\dcoats\Desktop\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\Book1.xlsx"
    Set wbk = Workbooks.Open(path)
    wbk.Sheets(1).Name = "FUNCIONARIOS"
End Sub
我也试过了

Private Sub derp()
    Dim wbk As Workbook
    Dim path As String
    path = "C:\Users\dcoats\Desktop\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\yaybook.xlsm"
    ThisWorkbook.SaveAs path, FileFormat:=52
    Set wbk = Workbooks.Open(path)
    wbk.Sheets(1).Name = "FUNCIONARIOS"
End Sub
一切正常,所以我们可能会遗漏细节

我不想劫持Doug的答案,所以这里有一个测试方法:

尝试注释代码的第二部分-保留“saveas”和 跑完成后,检查目标路径中的文件-查看是否 您可以手动成功打开它

现在在一个新的子文件中,按代码打开此文件。尚未设置图纸名称。让 我们知道结果

编辑:

尝试将工作表保存到新工作簿并保存新工作簿:

Sub test()

Dim wbk As Workbook
Dim nwb As Workbook
Dim path As String

path = "C:\Users\dcoats\Desktop\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\"

Set wbk = ThisWorkbook
Set nwb = Workbooks.Add

wbk.Sheets("Sheet1").Copy before:=nwb.Sheets(1)

nwb.SaveAs path & "test2.xlsx"

End Sub  

将“Sheet1”更新到您要保存的任何工作表名称

您想要工作簿的副本还是新工作簿中的单个工作表?@Jeeped我想要复制工作簿,然后更改复制工作簿的第一张工作表的名称。由于路径与
SaveCopyAs
相同(并且保存在正确的位置),我想我的道路是正确的。。。但是我测试了这个,它对我不起作用。@paulinhax Doug在这里建议将工作簿保存到一个简单的路径-路径中的字符,例如“Supervisonão\10-Alocaão d”,可能会在Excel尝试访问时引起问题。我看不出问题是什么?它对我来说完美无瑕,这是非常直截了当的。还有其他细节你没有添加吗?@Alex我没想到特殊角色是个问题。好catch@Alex谢谢,我考虑过了,虽然我不能改变这些字符。但它不应该在第一行也引起问题?因为它工作正常,复制正确。你说得很有道理。该文件已创建,但即使它作为工作簿显示在目标文件上也无法打开。@paulinhax这意味着“另存为”部分不适用于您-请检查您的文件夹访问权限,或者干脆将其保存到您具有读/写访问权限的某个位置。我尝试了类似的操作。我将目标更改为我的私人文件夹,但仍然存在相同的问题。因此,我将
.xlsx
更改为
.xlsm
只是为了检查,现在文件已正确打开。。。我不知道这是什么问题。@paulinhax我们都忽略了一个要点-是的,带有宏的文件需要另存为.xlsm。除非你保存的是另一个文件,我明白你的意思,但这里的主要目的只是复制没有宏的工作表。所以我想我用了
SaveCopyAs
而不是
SaveAs
。。。但是我不想使用
FileFormat:=51
,因为我不想在之后打开文件,明白吗?