最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2019年9月14日 星期六

Python + Excel VBA 畫圖

前幾天在FB上看到有人說他去面試,結果被面試官嗆說履歷上精通Excel VBA,卻連一個函數都寫不出來,他老兄憤恨不平放了一張用Excel畫圖的皮卡丘,感覺有種事後想證明自己的能力的樣子,這裡簡單教大家如何用Excel VBA在Excel畫一張圖。
到網路上抓一張圖,本人抓一張「刀劍神域」中男女主角的圖來做,流程為透過Python取出圖片上每個點的RGB的數值,最後再由Excel VBA繪圖動作,請注意這不是匯入圖片的做法,而是由 Excel VBA 直接繪圖。
圖片出處

Python程式碼
from scipy.misc import imread
import pandas as  pd
 
tmp = []
img = imread("圖片路徑請自行設定")
for a in img:
    tmp0 = []
    for b in a:        
        tmp0.append("{:d}|{:d}|{:d}".format(b[0], b[1], b[2]))
    tmp.append(tmp0)
df = pd.DataFrame(tmp)
df.to_csv("123.csv", header=False, index=False) #圖片的RGB檔案路徑
df

Excel VBA程式碼
    
Sub draw()
    Dim row As Integer, col As Integer
    Dim tmp
    Workbooks(1).Sheets(1).Cells.Clear
    Workbooks(1).Sheets(1).Cells.ColumnWidth = 1
    With Workbooks.Open("C:\xxx\xxx\123.csv") '圖片的RGB檔案路徑
        With .ActiveSheet
                row = .Cells(65536, 1).End(xlUp).row
                col = .Cells(1, 1000).End(xlToLeft).Column
                Workbooks(1).Sheets(1).Cells(1, 1).Resize(row, col).Value = .Cells(1, 1).Resize(row, col).Value
        End With
        .Close
    End With
    
    For i = 1 To row
        For j = 1 To col
            tmp = Split(Sheets(1).Cells(i, j), "|")
            Sheets(1).Cells(i, j) = ""
            Sheets(1).Cells(i, j).Interior.Color = RGB(tmp(0), tmp(1), tmp(2))
        Next
    Next
End Sub
繪圖畫面


沒有留言:

張貼留言