![](/img/trans.png)
[英]VBA macro using word SaveAs FileFormat:=wdFormatPDF creates .docx
[英]vba: saveas in xlsm fileformat without changing the active workbook
我有以下代碼,該代碼可以復制活動工作簿並為每個副本指定不同的名稱。 它運作良好,但是我確實需要從中運行代碼的原始工作表才能保持活動狀態。
如果我改用SaveCopyAs
函數,則復制的文件沒有正確的文件格式(.xlsm),並且無法像saveAs
函數一樣將文件格式指定為參數。
http://msdn.microsoft.com/zh-cn/library/bb178003%28v=office.12%29.aspx
http://msdn.microsoft.com/zh-cn/library/office/ff841185%28v=office.15%29.aspx
Sub makeCopies()
Dim name As Range, team As Range
Dim uName As String, fName As String, fFormat As String
Dim location as string, nName as string
location ="c:\test\"
nName = "Test - Team "
Set team = Names("Team").RefersToRange
For Each name In team
uName = nName & name.Value
fName = location & uName
fFormat = ThisWorkbook.FileFormat
ActiveWorkbook.SaveAs FileName:=fName, FileFormat:=fFormat
Next name
End sub
我能想到的最好的辦法是,首先使用saveCopyAs
制作副本,然后訪問每個文件,使用saveCopyAs
將其保存為正確的文件格式,然后關閉它,但這意味着saveAs
功夫,我真的很討厭這樣做。 有沒有更聰明的方法?
這是我的作品。 SaveCopyAs
以完全相同的格式保存工作簿。
Sub makeCopies()
Dim name As Range, team As Range
Dim uName As String, fName As String, tempname As String
Dim location As String, nName As String
location = "C:\Test\"
nName = "Test - Team "
Set team = ThisWorkbook.Names("Team").RefersToRange
For Each name In team
uName = nName & name.Value
fName = location & uName & "." & _
Split(ThisWorkbook.FullName, ".") _
(UBound(Split(ThisWorkbook.FullName, ".")))
ThisWorkbook.SaveCopyAs fName
Next name
End Sub
這是您要嘗試的嗎? 嘗試和測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.