调试VBA复制范围并使用单元格引用作为文件名进行保存

问题描述 投票:-1回答:1

我已经研究了很多关于stackoverflow和mrexcel以及其他一些网站来提出这个问题。简而言之,我有一个模板,我将信息复制到一些变量中,以创建一个文本字符串,填充到我称为“导出”的范围内。我希望将此范围复制到新工作簿以保存为.txt文件。但是,我希望VBA命名并将文件保存到预定位置[t:\ downloads]。文件名应该是源表上两个单元格的组合,帐号(存储在单元格c1中)和月/年(存储在单元格b3中)。例如,如果单元格c1中的帐号是123456,而b3中的日期是12/25/2017,那么我希望文件名显示为t:\ downloads \ 123456.2017.12.txt。

这是我到目前为止的代码:

Sub Foo_Tab()
  Dim wbSource As Workbook
  Dim wssource As Worksheet
  Dim wbdest As Workbook


'References
  Set wbSource = ActiveWorkbook
  Set wssource = ActiveSheet
  Set wbdest = Workbooks.Add
  acct = Cells("c1")
  yr = Year(Cells("b3"))
  mnth = Month(Cells("b3"))


'Copy range on original sheet
  wssource.Range("Export").Copy

'Save in new workbook
  wbdest.Worksheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
  Application.CutCopyMode = False

'get file name from cells
  Dim path As String
  Dim full As String
  Dim acct As String
  Dim yr As String
  Dim mnth As String
  path = "Z:\Downloads\"
  full = path + acct + "." + yr + "." + mnth + ".txt"
  ActiveWorkbook.SaveAs filename:=full
  wbdest.Close savechanges:=True

End Sub
excel-vba vba excel
1个回答
0
投票

尝试更换

ActiveWorbook.SaveAs filename:=full
wbdest.Close savechanges:=True 

这个(我假设wbdest是活动的worbook; -4158是.txt格式):

With wbdest
        .SaveAs full, FileFormat:=-4158
        .Close SaveChanges:=True
End With
© www.soinside.com 2019 - 2024. All rights reserved.