【发布时间】:2023-02-25 04:41:20
【问题描述】:
我有一个 master.xlsx 表,我在其中填写了多列。我想将列 E 导出到 .csv 文件。
尽管我希望文件名采用以下格式,但它可以正常工作:
日期-用户名-固定文本-ValueFromTheCellD2(在 master.xlsx 中).csv
到目前为止,我已经管理这个宏来创建 .csv,它确实包含 master.xlsx 中的 E 列,一切都很好。然而,斗争在于文件名:
Sub generatecsv()
'
' generatecsv Macro
'
'
Columns("E:E").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\Users\JONDOE\Documents\FixedText_" _
& Format(Now(), "DD-MMM-YYYY") & ".csv"
Windows("Miluna_1.1.xlsm").Activate
End Sub
我的宏将创建一个文件名FixedText_24-Feb-2023.csv
我可以自己处理文件名中变量的顺序,但我不明白如何获取用户名,因为这个文件将被多个用户使用;以及如何从 master.xlsx 中获取 D2 值,以便在最终的 .csv 文件名中使用它。
要获取用户名,我知道这里是 Environ("Username") 函数,但我不明白其用法。
我可以把所有东西都放在ActiveWorkbook.SaveAs 文件名还是我需要为用户名、D2 值、固定文本和日期创建变量?并在指定时仅引用这些变量ActiveWorkbook.SaveAs 文件名?
非常感谢您的指点
【问题讨论】:
-
关于用户名,这个例子可以帮助:stackoverflow.com/a/8988438/17017616
-
FilePath = Environ("USERPROFILE") & "\Documents\" & Format(Now(), "DD-MMM-YYYY") & "-" & Environ("USERNAME") & "-" & FIXEDTEXT & "-" & Workbooks("Master.xlsx").Sheets("Sheet1").Range("D2").Value & ".csv"。它很长,所以可以将它分成几个变量,例如FolderPath、NameDate、UserName、FixedText、Filename...