2016-04-15 118 views
0

我很难做到这一点。当我启动宏时,它不会产生任何错误,但不会引发任何结果。将工作表名称复制粘贴到其他工作簿

Sub EmpresasCubiertas() 


Dim x As Workbook 
Dim y As Workbook 

'## Open both workbooks first: 
Set x = Workbooks.Open("G:\Estudios\Biblioteca\Mercado Accionario Chileno\InsertarEmpresa.xlsm") 
Set y = Workbooks.Open("G:\Estudios\Biblioteca\Mercado Accionario Chileno\Procesamiento.xlsm") 

For i = 3 To x.Sheets.Count 

'Now, paste to y worksheet: 

y.Sheets(1).Range(“A” & i) = x.Sheets(i).Name 

Next i 


End Sub 

请注意,工作簿“y”是我首先打开以运行宏的工作簿。即它已经开放,如果它有任何帮助的话。

回答

1

问题在于循环中Range旁边缺少Value属性。它应该阅读,

y.Sheets(1).Range(“A” & i).Value = x.Sheets(i).Name 

我假设你特意选择了开始复制工作表的名称从i = 3,如果你需要的所有工作表,只是改变我的值设置为1。

试试这个:

Sub CopyWorkBookNames() 
Application.ScreenUpdating = False 'To avoid screen flickering 

Dim y As Workbook 
Dim x As Workbook 

Set y = Application.ActiveWorkbook 
Set x = Application.Workbooks.Open("FilePathToCopyFrom.xlsx") 

'Copy and paste worksheet names, in the workbook running the code, starting from cell A3. 
'If You want to paste into cell A1, decrement i in the range below accordingly 

For i = 3 To x.Sheets.Count 
    y.ActiveSheet.Range("A" & i).Value = x.Sheets(i).Name 
Next i 

x.Close 'Add SaveChanges Options as needed 
Application.ScreenUpdating = True 
End Sub 
+0

酷!是的,价值缺失。完美运作。谢谢 –

相关问题