我的任务是向我的CO中的每个员工分发新的电子邮件签名块。我决定不向每个人发送关于如何更改几行html的说明,我会这样做;所以我发了一张excel表,里面有一些信息供他们填写(姓名,职位,单元格#)。我有一个模板.txt文件,其中包含最终签名的所有正确格式。我的问题是,最好的方法是用表格中的个人信息批量替换模板中的相应短语,并每次保存一个新的.htm文件。
模板上写着"你的名字在这里"和"你在这里的位置"所以我认为必须有一种方法来迭代地替换每一个。我是一个脚本笨蛋,所以任何帮助都将不胜感激!
答案 0 :(得分:0)
假设您使用的是Outlook 2008+,我相信签名会以.htm,.rtf和.txt的形式存储在C:\ Users \\ AppData \ Roaming \ Microsoft \ Signatures目录中。
我相信最简单的方法是使用Visual Studio,将您的应用程序写入:
1。将包含信息的相应单元格的Excel文件迭代为字符串:
Get Cell Value in Excel from Range
2。从.htm中简单地String.Replace("你的名字在这里",cellName)
https://msdn.microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx
3。将修改后的.htm保存到\ C $ \\ Users \\ AppData \ Roaming \ Microsoft \ Signatures \
如果您正在使用Visual Studio,那么添加模板.HTM并不会太难以将名称更改为"您的姓名在这里"。然后,您的程序可以简单地流读取.htm,进行更改,并将新的.htm保存到计算机。然后,直到下一个!
答案 1 :(得分:0)
首先,您要查看here以了解如何迭代电子表格以获取每行的单元格值。
之后我会查看this以了解如何将模板文件读入字符串。
一旦完成了一个快速的String.Replace循环就会让你的文本交换,this会让你知道如何将文本写入新的.htm文件。基本上你想要
Dim template, line As String
Dim sr as StreamReader = new StreamReader("C:\template.htm")
Dim sw as StreamWriter
'Other vars as needed to read the Excel file and keep/stop looping....
'Read all lines from template file into template
while (keepgoing)
cellName = ws.Cells(rowNum, colNum).Value2.ToString()
'Grab other values from cells
If (Not String.IsNullOrEmpty(cellName)
line = template.Replace("Your Name Here", cellName)
line = line.Replace("Your Position Here", cellPosition)
'etc
sw = new StreamReader("C:\Sig_" & cellName & ".htm")
sw.Write(line)
sw.close()
Else
keepgoing = false
End If
End While
希望它有所帮助。