使用VBA将特定工作表另存为单独的xls文件

时间:2019-05-13 06:47:45

标签: excel vba xls

我正在尝试编写VBA代码以将特定工作表另存为另一个工作簿文件。我希望用户能够命名工作簿文件和路径。

我尝试了不同的方法,但是没有一个起作用。

如果那不可能,我可以只保存到该位置:

“ Q:\ Sorular \” 特殊的文件名显示在代码中。

Sub Soru_Publish()

Dim fName1 As String
fName1 = Worksheets("Storyboard").Range("E3").Value & "_" & Worksheets("Storyboard").Range("E2").Value

Worksheets("Soru_Publish").Visible = True
Worksheets("Soru_Publish_2").Visible = True
Worksheets("Soru_Publish").Activate

    Dim FirstBlankCell As Long, rngFound As Range

    With Sheets("Soru_Publish")
        Set rngFound = .Columns("A:A").Find("*", After:=.Range("A1"), _
            searchdirection:=xlPrevious, LookIn:=xlValues)
        If Not rngFound Is Nothing Then FirstBlankCell = rngFound.Row
    End With

Worksheets("Soru_Publish").Range("A1:Y" & FirstBlankCell & "").Copy
Worksheets("Soru_Publish_2").Range("A1:Y" & FirstBlankCell & "").PasteSpecial Paste:=xlPasteValues

Worksheets("Soru_Publish_2").Copy

With ActiveWorkbook
    .SaveAs filename:="Q:\Sorular\" & filename
    .Close
End With

Worksheets("Sorular").Activate
Worksheets("Sorular").Range("B4").Select

Worksheets("Soru_Publish").Visible = False
Worksheets("Soru_Publish_2").Visible = False

End Sub

不幸的是,当我运行宏时,在SaveAs行中收到运行时错误'1004'。

2 个答案:

答案 0 :(得分:1)

您的代码有效,但是使用ActiveWorkbook可以给您意想不到的结果

如果要将单个工作表另存为新的.xls文件,只需直接在需要保存的工作表上使用.SaveAs,如下所示:

Dim wrkSheet As Worksheet
Set wrkSheet = Worksheets("Soru_Publish_2")
wrkSheet.SaveAs Filename:="Q:\Sorular\" & fName1

或者如果您不想定义新变量,可以这样:

Worksheets("Soru_Publish_2").SaveAs Filename:="Q:\Sorular\" & fName1

希望这会有所帮助。

答案 1 :(得分:0)

对不起,我忘记将“文件名”更改为“ fName1”。 代码工作正常,只是一个错字。