gpt4 book ai didi

excel - Replace() 来自 Shell 的图像尺寸字符串中的问号

转载 作者:行者123 更新时间:2023-12-02 07:26:45 24 4
gpt4 key购买 nike

我正在尝试使用 VBA 中的 Shell 对象来获取位图的高度。

这是代码的相关部分(bmp 是自定义类的成员,.Width 是定义为整数的属性。)

Set objImg = objShell.Namespace(subfs(sf)).ParseName(bmp.Name)
tmpDim = objShell.Namespace(subfs(sf)).GetDetailsOf(objImg, 162)
tmpDim = Replace(tmpDim, "?", "")
tmpDim = Replace(tmpDim, " pixels", "")
bmp.Width = CInt(tmpDim)

我在最后一行收到类型不匹配错误,因为 tmpDim 的值为 ?754。作为引用,第二行之后的 tmpDim 值为 ?754 像素

我有一个步骤将 ? 替换为空字符串,但它不起作用。如何去掉问号字符?

最佳答案

您看到的问号实际上并不是问号。 Asc() 函数将返回值 63,但 AscW() 可能会返回 8206,即 unicode 从左到右的标记。

我相信 VBA 使用两字节宽字符存储字符串。 Asc 函数只会返回 0-255 之间的值,对于超出该范围的任何值似乎都会返回 63。

这就是您的 Replace(tmpDim, "?", "") 不起作用的原因。您正在尝试相当于

Replace(tmpDim, Chr(63), "")

你需要

Replace(tmpDim, ChrW(8206), "")

(假设?是从左到右的标记,在我的测试中它是)

关于excel - Replace() 来自 Shell 的图像尺寸字符串中的问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16110431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com