关于“类型不匹配”的错误
我用以下程序获取psd文档中某个像素(x,y)的颜色值,运行到最后一句出现“类型不匹配”的错误,请高手解决一下。
public appRef As Object, docRef As Object
sub getColor(X As Integer, Y As Integer)
Set appRef = CreateObject("Photoshop.Application")
Set docRef = appRef.Open("c:\a.psd")
docRef.Selection.Select Array(Array(X, Y), Array(X + 1, Y), Array(X + 1, Y + 1), Array(X, Y + 1))
getcolor=docRef.channels(1).Histogram(1)
end sub
[解决办法]
改成这样试试
Private Function getColor(X As Integer, Y As Integer) As Long
Set appRef = CreateObject("Photoshop.Application")
Set docRef = appRef.Open("c:\ss.bmp")
docRef.Selection.Select Array(Array(X, Y), Array(X + 1, Y), Array(X + 1, Y + 1), Array(X, Y + 1))
getColor = docRef.channels(1).Histogram(1)
End Function
[解决办法]
这样也不行
[解决办法]
我在VB中调试,对象变量docRef的监视界面如下图
[解决办法]
读取docRef.channels.count属性值是可以的
[解决办法]
会不会是docRef.channels.item(1).Histogram(1)
[解决办法]
这个也没用
[解决办法]
如果在工程中引用adobe photoshop object library库,再对变量appRef和docref作如下定义,程序就正常了,但需要引用库,局限性较大
Private Function getColor(X As Integer, Y As Integer) As Long
Dim appRef As New Photoshop.Application
Dim docref As Photoshop.Document
Set docRef = appRef.Open("c:\ss.bmp")
docRef.Selection.Select Array(Array(X, Y), Array(X + 1, Y), Array(X + 1, Y + 1), Array(X, Y + 1))
getColor = docRef.channels(1).Histogram(1)
End Function
[解决办法]
你是一个sub,却要有返回值?
你把你头一个sub改成function试试看
[解决办法]
channels下级不是Histogram
[解决办法]
从监视界面上看,histogram就是channels下级,没错
[解决办法]
还是没人能解答,自己顶一下
[解决办法]
再来个对象的调试截图,3楼的实际是把Histogram属性展开而以,
我把问题再描述一下:
我用以下程序获取psd文档中某个像素(x,y)的颜色值,运行到最后一句出现“类型不匹配”的错误
Private Function getColor(X As Integer, Y As Integer) As integer
Set appRef = CreateObject("Photoshop.Application")
Set docRef = appRef.Open("c:\ss.psd")
docRef.Selection.Select Array(Array(X, Y), Array(X + 1, Y), Array(X + 1, Y + 1), Array(X, Y + 1))
getColor = docRef.channels(1).Histogram(1)
End Function
但如果在工程中引用adobe photoshop 8.0 object library库,再对变量appRef和docref作如下定义,程序就正常了,但如果安装了不同版本的photoshop,需要引用不同的库,局限性较大
Private Function getColor(X As Integer, Y As Integer) As integer
Dim appRef As New Photoshop.Application
Dim docref As Photoshop.Document
Set docRef = appRef.Open("c:\ss.psd")
docRef.Selection.Select Array(Array(X, Y), Array(X + 1, Y), Array(X + 1, Y + 1), Array(X, Y + 1))
getColor = docRef.channels(1).Histogram(1)
End Function
[解决办法]
可最后一句是End Sub呀
[解决办法]
输入错误,已改了,没用的
[解决办法]
再顶一下,期待高手
[解决办法]
问题已经解决,原来是引用的方式发生变化