5
A
回答
6
嘗試在網站上公佈這裏的解決方案: http://sim0n.wordpress.com/2009/03/27/vba-q-how-to-get-pixel-colour/
我不得不改變的ByRef到BYVAL但,除了它工作得很好。使用「插入」>「圖片」插入圖片,併爲點擊事件分配一個宏。我剛剛將單元格A1的顏色設置爲您點擊的顏色,但我相信您明白了。
#If VBA7 Then
Private Declare PtrSafe Function GetPixel Lib "gdi32" (ByVal hdc As LongPtr, ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" (ByRef lpPoint As POINT) As LongPtr
Private Declare PtrSafe Function GetWindowDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
#Else
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINT) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
#End If
Private Type POINT
x As Long
y As Long
End Type
Sub Picture1_Click()
Dim pLocation As POINT
Dim lColour As Long
Dim lDC As Variant
lDC = GetWindowDC(0)
Call GetCursorPos(pLocation)
lColour = GetPixel(lDC, pLocation.x, pLocation.y)
Range("a1").Interior.Color = lColour
End Sub
要使用它,將圖片放置在工作表中,右鍵單擊圖像並將其分配給它。
+0
偉大的答案,測試它,它完美的作品。 +1 – hammythepig 2013-06-20 20:09:49
+1
此處還有其他信息:您還可以使用只需粘貼在工作表中的圖像(「插入>圖片」過程不是強制性的)。再次感謝+1並感謝您@KM Hs – Arthur 2014-04-24 15:02:31
如果代碼使用API,那麼它很可能實現它到VBA中,設置API函數的一些引用... – 2013-05-13 19:08:37
你問什麼文件類型?任何特別的?也許是一個文件類型的列表?不同的文件格式將存儲不同的顏色信息,因此讀取不同的類型將需要知道我們將需要閱讀什麼。 – jhoe 2013-06-03 22:13:18
下面的答案很好,但如果你真的想掃描每個像素(而不是點擊它),那麼這個https://stackoverflow.com/questions/45998565/scan-image-pixel-by-pixel-in-vba/ 46004570#46004570很好地完成了這項工作,所有在VBA(沒有圖形庫等) – perfo 2017-09-06 08:27:47