2017-07-21 684 views
0

我想复制工作表,然后打开副本以更改第一个工作表的名称。vba:打开工作簿并更改工作表名称

这是插在Module1代码:

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 

Sub保存副本的第一部分完美的作品。虽然当我尝试运行它给了我下面的错误第二部分:

Run-time error 1004: Excel cannot open the file

而且它说,它无法理解的扩展.xlsx或者,也许该文件已损坏,但我查了一下文件是好的。

有谁知道这是什么问题?

+0

你想要的工作簿或一个工作表中的一个新的工作簿副本? – Jeeped

+0

@Jeeped我想复制工作簿,然后更改我复制的工作簿的第一个工作表的名称。 – paulinhax

回答

0

这对我的作品

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 

一切正常,所以我们可能缺少细节

+0

由于路径与'SaveCopyAs'(并保存在正确的位置)相同,所以我想我的路径是正确的......但是我测试了这个,它对我不起作用。 – paulinhax

+1

@paulinhax道格在这里提出的建议是将工作簿保存为一个简单的路径 - “Supervisão\ 10 - Alocaçãod”等路径中的字符可能会导致问题,而Excel试图访问 – Alex

+0

我不能看到问题可能是什么虽然?它对我来说完美无瑕,而且这非常简单。还有没有添加其他细节? –

0

Don't want to Hijack Doug's answer, so here's a way to test:

Try comment out the second part of your code - leave the "saveas" and run. After finish go check your file in the destination path - see if you can open it successfully by manual.

Now in a NEW sub open up this file by code. Do NOT set the sheet name yet. Let us know the result

编辑:

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

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”到任何worksheetname你节省

+0

你在这里有一个很好的观点。该文件已创建,但即使它作为工作簿出现在目标文件上也不会打开。 – paulinhax

+0

@paulinhax这意味着saveas部分不适合你 - 检查你的文件夹访问权限,或者干脆将它保存到你有读/写访问权限的地方 – Alex

+0

我试过类似的东西。我将目标更改为我的私人文件夹,但仍然存在相同的问题。所以我将'.xlsx'改为'.xlsm'只是为了检查,现在文件正常打开......我不知道这个问题是什么。 – paulinhax