我正在尝试将Word文档中的文本转换为双精度,所以我可以对其进行货币格式化。我从邮件合并中收到此文本。如何创建可以接收此文本并将其作为数字返回的宏? 我不熟悉单词和VBA脚本。到目前为止,我所做的是
myfile.close()
我不确定如何调用此宏。因为它带有参数,所以它不会显示在宏表中。 我可能对如何将文本转换成双字完全不满意,但是可以提供任何帮助。 谢谢。请澄清任何评论。
答案 0 :(得分:2)
您不需要宏!!!您需要做的就是学习如何在Word字段中使用格式开关。
要控制Word中的数字和货币格式,请将数字图片开关添加到mergefield。为此:
注1:该字段中的“#$,0.00”称为数字图片开关。其他可能性包括:
注2::显示值的精度由“ 0.00”控制。您可以使用0到0.000000000000000之间的任何值。 如果您使用最后的';'在格式化开关中没有任何跟随符的情况下(例如#“ $,0.00;($,0.00);”),零值将被抑制。请注意,这会抑制由空字段和包含0的字段导致的0。
注3::如果您使用小数点制表符或右对齐制表符来对齐值,请将开关括在引号中(即#“ $,0.00”),然后在该字段中插入一个制表符在$符号后的代码中,您可以输出带有$符号后出现小数点的数值。
有关更多邮件合并提示和技巧,请参阅:https://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html
答案 1 :(得分:0)
如果要将数字转换为Double
数据类型,请尝试以下操作:
Function StringToDouble(ByVal baseString As String) As Double
StringToDouble = VBA.CDbl(baseString)
End Function
如果您只关心格式化货币,则将字符串转换为Currency
数据类型,如下所示:
Function StringToCurrency(ByVal baseString As String) As Currency
StringToCurrency = VBA.CCur(baseString)
End Function
您仍然需要格式化数字,但是两个功能都为您提供了可以格式化的数字。
以下是一个示例,该示例还为您提供了一个格式为USD的字符串(例如$ 4,999.75)。它需要上面的StringToCurrency
函数。
Sub test()
Dim stringNum As String
stringNum = "4,999.754501"
Debug.Print "stringNum=" & stringNum ' outputs 4,999.754501
Dim currencyNum As Currency
currencyNum = StringToCurrency(stringNum) ' outputs 4999.7545
Debug.Print "currencyNum=" & currencyNum
Dim formattedString As String
formattedString = Format$(currencyNum, "$#,##0.00")
Debug.Print "formattedString=" & formattedString ' outputs $4,999.75
End Sub