【发布时间】:2014-06-25 07:37:12
【问题描述】:
在我的公司,VBA 的一个常见用法是根据 Excel 表格中输入的信息生成源代码。鉴于 VBA 的本机字符串操作,执行此操作的代码编写起来乏味且可读性差。
一个简单的例子(这些变得更复杂)是:
Print #fileIdentifier, SSpace(9) & "update_" & print_string & "[" & CStr(j) & "] <= 1'b0;"
Print #fileIdentifier, SSpace(9) & print_string & "_ack_meta" & "[" & CStr(j) & "] <= 1'b0;"
Print #fileIdentifier, SSpace(9) & print_string & "_ack_sync" & "[" & CStr(j) & "] <= 1'b0;"
我正在寻找 VBA 中的解决方案,它允许我使用“文本模板”来指定它,因此定义一个看起来像这样的文本
update_@name@[@bit@] <= 1'b0; @name@_ack_meta[@bit@] <= 1'b0; @name@_ack_sync[@bit@] <= 1'b0;
并有一个函数/方法调用,传递@name@ 和@bit@ 的值,将@name@ 和@bit@ 的所有实例替换为相应的值。
【问题讨论】:
-
将模板文本存储在文件中,加载并调用 replace$()?
-
你为什么语言生成代码?
-
感谢@AlexK。的建议。有数百个这样的代码被填写,所以文本必须内联存储。我认为手动调用来替换 @label@ 字符串的所有实例都可以,但它仍然比我要查找的代码多得多,尤其是当模板文本变得更长并且包含更多要替换的“变量”时。跨度>
-
好吧,您总是需要更改打印语句以适应任何新内容,您的示例可以重新分解为一个采用带有序号插入标记的模板字符串的单个过程:
update_@1@[@2@]\r\nXXX@3@然后是一组值变量 -
将“模板”存储在文本文件中。在 VBA 中打开它并根据存储在 Excel 工作表中的数据执行替换。将其写入一个新的唯一文件。