如何在Powerpoint VBA中更改格式化日期的区域设置

如何在Powerpoint VBA中更改格式化日期的区域设置,vba,locale,powerpoint,datetime-format,Vba,Locale,Powerpoint,Datetime Format,在powerpoint vba应用程序中,我希望根据当前拼写检查语言(可能与系统区域设置语言相同,也可能不同)格式化日期 e、 g.区域设置为德语(奥地利),但对于英语客户,文档为英语,因此日期格式应为“2015年1月1日”,而不是“2015年1月1日” 我在此网站上找到了excel的解决方案: 在powerpoint vba中尝试相同的技术似乎不起作用: debug.print format (now(), "[$-415] MMMM") Jänner debug.print forma

在powerpoint vba应用程序中,我希望根据当前拼写检查语言(可能与系统区域设置语言相同,也可能不同)格式化日期

e、 g.区域设置为德语(奥地利),但对于英语客户,文档为英语,因此日期格式应为“2015年1月1日”,而不是“2015年1月1日”

我在此网站上找到了excel的解决方案:

在powerpoint vba中尝试相同的技术似乎不起作用:

debug.print format (now(), "[$-415] MMMM")
 Jänner

debug.print format (now(), "[$-809] MMMM")
 Jänner

debug.print format (now(), "[any old rubbish] MMMM")
 Jänner
-->vba忽略方括号中的任何内容


任何关于如何在VBA中实现相同结果的建议?

都有相同的问题,很难找到解决方案,因此我将回答这个老问题:

使用工具>引用>Microsoft Excel 16.0对象库激活Excel库(或您当前的Excel版本,可能是12.0或14.0)

然后可以使用此Excel工作表功能:

Debug.Print WorksheetFunction.Text(Now, "[$-409]MMMM")

您甚至可以使用其他参数(如不同的日历)来指定它,可以在此处找到区域设置代码列表:

我看不到任何直接的方法;也许可以将格式(现在是“mm”)和您想要关闭的LangID传递给一个函数,该函数从您提供的月份名称数组中查找返回值,然后在此基础上构建日期字符串的其余部分。如果您只需要支持几种语言,并且很容易添加更多语言,那么这是合理的。如果“您必须支持哪些语言”的答案是“所有语言”,那么就不太合理了在MS已经完成工作的情况下编写自己的月份名称数组似乎是错误的……我可以在页眉/页脚上添加一个日期占位符——并且我可以通过对话框更改日期显示的区域设置……因此,我所需要做的就是以编程方式复制它。但我找不到在哪里执行此操作…奇怪的是,此对话框不响应Office语言设置或区域设置的更改(即使在“语言首选项”对话框中删除此选项后,默认为美国英语)。“在MS已经完成工作时,编写我自己的月名数组似乎是错误的…”他们不向我们透露似乎是错误的。但既然他们没有。。。