Excel 如何在从文件路径重命名文件时将CSV文件转换为XLSM?

Excel 如何在从文件路径重命名文件时将CSV文件转换为XLSM?,excel,vba,Excel,Vba,另一位用户在这方面帮了我很大的忙,但我在一些方面遇到了困难。 宏的目的是: 目的是获取当前文件路径中的第五个元素编号,然后使用该编号和其后的字符串重命名文件。然后我想把它从XLSM转换成CSV 我概述的注释解释了每个块代码的描述。我不知道如何更改它,这样我就不需要使用CONST,因为我想找到一个在运行时找到的变量,而CONST只使用编译时 Const original将分配给当前工作簿。我不希望宏中有硬编码的文件路径 确保xlsm副本不受影响,但已重命名,以使其与xlsm匹配 将有一个CSV副

另一位用户在这方面帮了我很大的忙,但我在一些方面遇到了困难。 宏的目的是: 目的是获取当前文件路径中的第五个元素编号,然后使用该编号和其后的字符串重命名文件。然后我想把它从XLSM转换成CSV

我概述的注释解释了每个块代码的描述。我不知道如何更改它,这样我就不需要使用CONST,因为我想找到一个在运行时找到的变量,而CONST只使用编译时

  • Const original将分配给当前工作簿。我不希望宏中有硬编码的文件路径
  • 确保xlsm副本不受影响,但已重命名,以使其与xlsm匹配
  • 将有一个CSV副本和一个XLSM副本
  • 我一直在测试的文件路径是R:\3.0 Projects\2.0 Current Projects\2021 JOBS\999111 DO Customer Description\2.0 Estimate\2.7 Final Estimates\FoundationImport-TMP-IFI-REV12.XLSM
  • 我希望最终文件为“R:\3.0项目\2.0当前项目\2021作业\999111执行客户描述\2.0估算\2.7最终估算\999111import-TMP-IFI-REV12.XLSM”
我非常感谢你们的帮助

Function getName(pf): getName = Split(Mid(pf, InStrRev(pf, "\") + 1), ".")(0): End Function

太长了,读不下去了。欢迎你到栈溢出。如果你努力减少Atle Butle到TL,你有更好的机会来帮助你;Dr.你想做什么?到目前为止你尝试了什么?你遇到了什么特殊的障碍?你不能使用<代码> const 在运行时确定的任何值-你只能使用值。编译时已知的。仅供参考,我还将避免“使用
“您用于
getName
的方法-这使您的代码很难扫描和调试。@timwilliams Const只是我用来获得结果的方法,但我想看看如何按照您的建议在编译时设置它。”。我要换个名字。非常感谢您的建议。您可以使用
此工作簿
引用运行代码的工作簿,并根据需要使用其
名称
路径
属性
Sub Snippet()
Const Original      As String = "R:\3.0 Projects\2.0 Current Projects\2021 JOBS\999111-DO-Customer-Description\" & _
                                "2.0 Estimate\2.7 Final Estimates\FoundationImport-TMP-IFI-REV12.XLSM"
'Original = getName(ActiveWorkbook.FullName)

Dim Ext             As String           ' file extension
Dim Fn              As String           ' file name
Dim Path            As String           ' file path
Dim Ffn             As String           ' full file name
Dim Sp()            As String
Dim CSVfile
Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("Foundation Budget Template")


' extracts number from 5th element and applies to file name
Sp = Split(Original, "\")
Fn = Sp(UBound(Sp))
Sp(7) = Split(Sp(4), "-")(0) & "import-TMP-IFI-REV12"
Ffn = Join(Sp, "\")
MsgBox "Original Ffn: " & Original & vbCr & vbCr & _
       "Changed 5th element: " & Ffn
       
'Convert file from XLSM to CSV
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=CSVfile, FileFormat:=xlCSV, local:=True

' append a file name to path
Sp = Split(Path, "\")
Fn = "My File Name" & "." & Ext
ReDim Preserve Sp(UBound(Sp) + 1)
Sp(UBound(Sp)) = Fn
Ffn = Join(Sp, "\")
MsgBox "Full File Name = " & Ffn



End Sub