我在这里也遇到过类似的问题,我在多个博客中进行了研究,但仍然找不到解决方案。我正在尝试根据某些单元格自动为文件创建名称。
因此,我创建了一个旨在执行以下操作的宏:
将所有要保存的信息复制/粘贴为值(这是因为某些单元格基于动态公式,例如NOW());
“另存为”文件,尝试使用在文件的一个特定单元格中定义的信息。
我的宏看起来像这样:
Sub SaveMyWorkbook()
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Parameters").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Demande d'Achat").Select
Range("S3:U3").Select
Application.CutCopyMode = False
Dim strPath As String
Dim strFolderPath As String
strFolderPath = "\\camo106\remote\Achat_Purchasing\Demande d'achat_Purchase request\2019\"
strPath = strFolderPath & _
Parameters.Range("D1").Value & ".xlsm"
ActiveWorkbook.SaveAs Filename:=strPath,
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
但是,当我调试时,在尝试创建名称的行中总是存在一个问题:
strPath = strFolderPath & _ Parameters.Range("D1").Value & ".xlsm"
有人可以帮助我吗?我根本不是宏的高级用户,我想这离我的知识还很远。
我正在使用Excel 2010。
答案 0 :(得分:0)
保存之前文件名看起来如何?如果在文件名中使用诸如NOW()之类的公式,则可能包含禁止的字符。您可以在尝试保存文件之前逐步浏览代码,然后在立即窗口中对其进行检查。
答案 1 :(得分:0)
经过一些研究,并感谢大家的评论,我终于使宏起作用了。一些建议:
在这里查看我的宏的超简单最终代码(Excel 2010):
Sub Save()
CopyValues
'Sub CopyValues()
'ActiveSheet.Unprotect
'Columns("A:U").Select
'Selection.Copy
'Application.CutCopyMode = False
'Selection.Locked = True
'Selection.FormulaHidden = True
'Columns("A:U").Select
'Selection.Copy
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
':=False, Transpose:=False
'Application.CutCopyMode = False
'Range("G7").Select
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
'End Sub
Dim strPath As String
Dim strFolderPath As String
strFolderPath = "\\camo106\remote\Achat_Purchasing\Demande d'achat_Purchase request\2019\"
strPath = strFolderPath & _
Range("A1").Value & ".xlsm"
ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=52, ReadOnlyRecommended:=True, CreateBackup:=False
GoToMainSheet
'Sub GoToMainSheet()
'Sheets("Demande d'Achat").Select
'Range("S2").Select
'End Sub
End Sub
我希望对其他人有用。