簡體   English   中英

vba:xlsm文件格式的另存為,不更改活動工作簿

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM