从VBA保存.xls或.prn时,以文件名引用保存的输入(是否可以包含?)

时间:2018-12-08 06:21:00

标签: excel vba excel-formula access-vba

以下代码可用于复制范围和粘贴到新文件中。文件另存为.xls和.prn。

是否可以引用定义的范围或单元格以包含在命名约定中?

想在“正式”和“文档”之后添加定义的范围(即-官方29-74A-文档A / B / C / etc。)

就像添加以下内容一样容易吗?

&“!DocName”在“ Official”之后 和 &“!DocRev”后的“文档”

任何建议表示赞赏。

代码:     Sub()

    Range("C13:F82").Select
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Cells.Select
    Selections.ColumnWidth = 14
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    ChDir "C:\temp"
    ActiveWorkbook.SaveAs Filename:=
        "C:\temp\Official - Document.xls", FileFormat:=xlExcel8, _
        password:="", WriteResPassword:="",ReadOnlyRecommended:=False, _
        CreateBackup:-False
    ActiveWorkbook.SaveAs Filename:=
        "C:\temp\Official - Document.prn", FileFormat:= _
        xlTextPrinter, CreateBackup:=False
    ActiveWindow.Close

End Sub

2 个答案:

答案 0 :(得分:0)

您可以通过引用范围来将范围信息包含在Excel工作表中。但是,如果代码可以更准确地标识其工作内容,则将大有帮助。问题中的代码在很大程度上取决于选择内容以及当前选择的内容。下面的示例并没有试图纠正所有这些问题,而只是试图解决所陈述问题的最重要内容。

  1. 为每个工作簿指定一个对象变量。这样一来,发生混淆的机会就更少了。

  2. 假定已选择具有文件名信息的单元格并应用了Name,可以使用Range属性调用该单元格并将其分配给字符串变量。

  3. 然后使用&将字符串变量连接到静态文件名。

示例代码:

Dim wbSource as Excel.Workbook
Dim wbTarget as Excel.Workbook
Dim sDocName as String
Set wbSouce = ActiveWorkbook
sDocName = wbSource.ActiveSheet.Range("DocName").Value
' This is the first workbook, not the new one
'Do other things
Set wbTarget = Workbooks.Add
'Do other things
wbTarget.SaveAs Filename:=
    "C:\temp\Official " & sDocName & "- Document.xls", FileFormat:=xlExcel8, _
    password:="", WriteResPassword:="",ReadOnlyRecommended:=False, _
    CreateBackup:-False

答案 1 :(得分:-1)

"C:\temp\Official -"& Range("C13:F82").address &" Document.xls"