![将用户的个人 Excel 列过滤器存储在类似 cookie 的文件中?](https://linux22.com/image/1415483/%E5%B0%86%E7%94%A8%E6%88%B7%E7%9A%84%E4%B8%AA%E4%BA%BA%20Excel%20%E5%88%97%E8%BF%87%E6%BB%A4%E5%99%A8%E5%AD%98%E5%82%A8%E5%9C%A8%E7%B1%BB%E4%BC%BC%20cookie%20%E7%9A%84%E6%96%87%E4%BB%B6%E4%B8%AD%EF%BC%9F.png)
我正在开发一个报告应用程序(多么令人兴奋!),它可以输出 HTML、PDF 和 Excel 报告。在 HTML 版本中,我让用户选择他们关心的列,并过滤掉其他列。这完全在浏览器中处理,因此为 xyz 报告生成和缓存的所有数据和 HTML 对于 Alice 和 Bob 来说都是相同的,即使他们在浏览器中显示不同的列。他们隐藏的列保存在 cookie 中,因此如果他们切换浏览器,他们必须重新应用这些设置。
我想对 Excel 文件执行相同的操作。有什么方法可以保存此列列表以隐藏在 Personal.xls 或其他任何地方,并在生成的 Excel 文件中包含一个宏来读取列列表并应用它?
(如果宏可以存储在 Personal.xls 中并在打开与某个正则表达式匹配的电子表格时自动运行,那就更好了,但也许这是不可能的,或者应该是一个单独的问题。)
在 Excel 中可以实现类似 cookie 的功能吗?
答案1
在 VBA 宏中,您可以使用文件系统对象来读取和写入文件。MSDN 中使用此对象的示例:
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("This is a test.")
a.Close
您可以使用 FSO 来确保文件存在、创建或打开它、写入它以及读取它。
您还可以将列存储在单独的工作簿中,该工作簿将在 VBA 中生成和读取,而无需 FSO 的代码开销,但对于您正在做的事情来说,FSO 似乎是更清晰的选择。