【问题标题】:Excel VBA filename containing a cell value and the user name包含单元格值和用户名的 Excel VBA 文件名
【发布时间】: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"。它很长,所以可以将它分成几个变量,例如FolderPathNameDateUserNameFixedTextFilename...

标签: excel vba


【解决方案1】:

这是一项简单的工作,请参考上面@VBasic2008 的 cmet 以及您所做的工作。


Sub generatecsv()
    Dim d2Value

    d2Value = ActiveSheet.Range("D2").Value

    Columns("E:E").Select
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:=Environ("USERPROFILE") & "DocumentsFixedText_" _
      & Environ("USERNAME") _
      & "-" & Format(Now(), "DD-MMM-YYYY") _
      & "-" & d2Value & ".csv", FileFormat:=xlCSV

    ActiveWorkbook.Close

    Windows("Miluna_1.1.xlsm").Activate
End Sub

通过添加2点:

  1. FileFormat:=xlCSV 保存为 CSV 文本,默认为 Excel 文档。
  2. ActiveWorkbook.Close 关闭创建的 csv 表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多