【问题标题】:How to change the locale of a formatted date in Powerpoint VBA如何在 Powerpoint VBA 中更改格式化日期的区域设置
【发布时间】:2015-01-13 11:22:11
【问题描述】:

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

例如语言环境是德语(奥地利),但对于英语客户来说,文档是英语的,因此日期格式应该是“2015 年 1 月 1 日”而不是“01. Jänner 2015”

我在这个网站上找到了 excel 的解决方案: How to change the locale of a formatted date?

在 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 中实现相同的结果?

【问题讨论】:

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

标签: vba locale powerpoint datetime-format


【解决方案1】:

遇到了同样的问题,很难找到解决方案,所以我会回答这个老问题:

使用 工具 > 参考 > Microsoft Excel 16.0 对象库(或您当前的 Excel 版本,可能是 12.0 或 14.0)激活 Excel 库 Menu entrance Activate Microsoft Excel 16.0 Object Library

那么你就可以使用这个Excel WorksheetFunction了:

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

您甚至可以使用其他参数来指定它,例如不同的日历,可以在此处找到区域设置代码列表:https://stackoverflow.com/questions/54134729

【讨论】:

    猜你喜欢
    • 2014-12-23
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多