替换现有宏中的“另存为”路径

时间:2016-10-03 15:12:53

标签: excel vba excel-vba

我们继承了其他人的电子表格和宏,只想更新保存文件的路径。我们已经能够在每个其他电子表格上执行此操作,但是这个以不同的方式编写,只是更新路径本身并不起作用。有人可以解释以下代码中发生的事情,这些代码阻止了我们和/或我们如何将保存更新为路径?

Sub SpecialPaste()

' SpecialPaste Macro
' Macro recorded 12/9/02 by TPC

mySpecialPaste = InputBox(Prompt:="File Name?", _
       Title:="ENTER THE Save Name", Default:="LCY XXX 2013")

If mySpecialPaste = vbNo Then
    Exit Sub
ElseIf mySpecialPaste = vbYes Then
    Dim mysheet As Worksheet
    Set mysheet = Worksheets(1)
    mysheet.SaveAs FileName:="N:\All Users Desktop\Mthly Form Records\Mo BD Logs\BD Log 2013\BD Log Mar 13"
    mysheet.Unprotect "snowbird"
End If

Range("B6:H36").Select
Range("G6").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
Application.CutCopyMode = False
ActiveWindow.ScrollRow = 6
Range("E2").Select
Set mysheet = Worksheets(1)
mysheet.Select
mysheet.Protect "snowbird", True, True, True

End Sub

1 个答案:

答案 0 :(得分:0)

更改以下代码:

If mySpecialPaste = vbNo Then
    Exit Sub
ElseIf mySpecialPaste = vbYes Then
    Dim mysheet As Worksheet
    Set mysheet = Worksheets(1)
    mysheet.SaveAs FileName:="N:\All Users Desktop\Mthly Form Records\Mo BD Logs\BD Log 2013\BD Log Mar 13"
    mysheet.Unprotect "snowbird"
End If

If mySpecialPaste = "" Then
    Exit Sub
Else
    Dim mysheet As Worksheet
    Set mysheet = Worksheets(1)
    mysheet.SaveAs FileName:="K:\BDT\" & mySpecialPaste & ".xlsx"
    mysheet.Unprotect "snowbird"
End If

If..End If块永远不会被执行,因为来自InputBox的响应永远不会是vbYesvbNomySpecialPaste变量设置为InputBox中的值。因此,如果它为空,则退出Sub,否则将文件保存到具有给定文件名的所需位置。