2017-07-11 1 views
1

J'essaie de SaveAs dans Excel 2010 VBA. Le fichier Excel a 8 feuilles et je pense que c'est pourquoi je ne peux pas enregistrer en tant que valeur de la cellule facilement. C'est comme si le code ne pouvait pas trouver "K2" (Voir le commentaire ci-dessous où le code échoue). erreur Durée 1004.Enregistrer en tant que valeur de cellule à partir d'une feuille dans le livre Excel avec plusieurs feuilles

Sub RecFilter() 
ActiveSheet.Range("$A$2:$H$159").AutoFilter Field:=7, Criteria1:=Array(_ 
    "(1)", "(112)", "(113)", "(126)", "(14)", "(144)", "(216)", "(3,274)", "(448)", "(468)", _ 
    "(5)", "(65)", "(72)", "(80)", "(900)", "(960)", "106", "14", "2", "2,880", "3,420", "504" _ 
    , "513", "56", "665", "72", "845", "9,814", "900"), Operator:=xlFilterValues 
Cells.Select 
Selection.Copy 
Sheets.Add After:=Sheets(Sheets.Count) 
ActiveSheet.Paste 
ActiveSheet.Columns("A:H").EntireColumn.AutoFit 
ActiveSheet.Rows("1:2").Select 
Application.CutCopyMode = False 
Selection.Delete Shift:=xlUp 
ActiveSheet.Range("J1").Select 
ActiveCell.FormulaR1C1 = "Start Date" 
ActiveSheet.Range("J2").Select 
ActiveCell.FormulaR1C1 = "End Date" 
ActiveSheet.Range("K1").Select 
ActiveCell.FormulaR1C1 = "1/1/2000" 
ActiveSheet.Range("K2").Select 
ActiveCell.FormulaR1C1 = "1/7/2000" 
ActiveSheet.Columns("K:K").Select 
Selection.NumberFormat = "m/d/yyyy" 

Application.DisplayAlerts = False 
Dim Path As String 
Dim filename As String 
Path = "C:\Users\TEST\Desktop\" 

'THIS IS WHERE IS FAILS 
filename = ActiveSheet.Range("K2") 

ActiveWorkbook.SaveAs filename:=Path & filename & ".xlsx", 
FileFormat:=xlOpenXMLWorkbook 
End Sub 

Répondre

1

Vous essayez de passer filename = ActiveSheet.Range("K2").Value au ActiveWorkbook.SaveAs filename:Range("K2").Value contient des barres obliques qui ne peuvent être inclus dans un nom de fichier enregistré. ActiveSheet.Range("K2").Select ActiveCell.FormulaR1C1 = "1/7/2000"

C:\Users\TEST\Desktop\1/7/2000.xlsx n'est pas un nom de fichier valide.

Essayez de remplacer Range("K2").Value par un type de données de date avec trait d'union. K2 contient des caractères non valides pour un nom de fichier.

0

Modification:

filename = ActiveSheet.Cells(2, 11).Value 
+0

erreur de temps d'exécution 1004. –

+0

Modifié maintenant. Les cellules (2,11) sont les mêmes que K2 –

1

Essayez de remplacer les signes \ par autre chose. Par exemple un trait de soulignement (_).

Vous pouvez le remplacer dans K2 lui-même, mais cela en rompra l'utilité en tant que date. Une meilleure option est de le remplacer seulement pour le nom de fichier.

Utilisez cette ligne:

Filename = Replace(ActiveSheet.Range("K2"), "/", "_")