我有一个生成CSV文件的C#程序,然后在Excel中打开一个XLSM文件(使用ProcessStartInfo
和Process.Start
)。 XLSM中的宏加载CSV文件并将数据从其分发到特定单元格。最终这将是C#生成一个没有宏的电子表格,可以在任何办公套件中加载,CSV将会消失。
我的问题是此系统现在需要支持从磁盘上的任何位置运行XLSM。它通过硬编码的相对路径找到CSV,该路径不在用户指定的位置工作。我想做一些类似于传递编译器参数来定义常量的东西。
编辑1:
我考虑和拒绝的替代方法:
将XLSM复制到CSV附近的标准位置并从那里运行。
我需要将文件复制回原来的位置,但我不知道Excel何时关闭...除了可能在Excel中,但它不知道原始位置因此这个问题。
在用户指定的XLSM位置旁边创建CSV文件。
CSV文件的位置在NLOG配置文件中指定,并且更改周围的实现以使用硬编码路径将是昂贵的。这是我唯一能够发挥作用的想法,但它会受到伤害。
从标准位置创建指向自定义位置的基于Windows的硬链接。
我不能假设我在NTFS文件系统上运行。
答案 0 :(得分:1)
将CSV生成程序移植到用户计算机上:
SET CSVPATH=C:\My\CSV
Environ()
函数读取此环境变量;例如(VBA)MyPath = Environ("CSVPATH") & "\"
或者,你可以
SaveSetting
语句将正确的文件路径写入目标计算机的注册表GetSetting()
函数读取注册表以获取正确的路径