VBA / 透過Excel VBA下載在GoogleCharts製作QrCode的圖檔

在Google Apps Script操作的Gg / 下載在GoogleCharts製作QrCode的圖檔

因為是直接從程式碼進行操作

所以不能設定文字對話框來輸入課程代碼

於是嘗試在Excel VBA來達成

1.執行程序的按鈕

2.輸入課程代碼

3.存檔用的名稱

基本原理是先透過XMLHTTP連結Google QR Code API取得回傳的圖檔資料

再透過ADODB.Stream進行資料處理並儲存成圖檔

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public Sub downloadPic()
    '課程代碼
    courseId = InputBox("請輸入課程代碼")
    courseName = InputBox("請輸入課程名稱")
    'QR Code 路徑
    myURL = "https://chart.googleapis.com/chart?chs=120x120&cht=qr&chld=M|3&chl=https://inservice.edu.tw/NAPP/CourseView.aspx?cid=" & courseId
    
    '工作簿所在路徑
    strSavePath = ThisWorkbook.path
    
    '建立 XMLHTTP物件來連線
    Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
    
    'WinHttpReq.Open "GET", myURL, False, "username", "password"
    WinHttpReq.Open "GET", myURL, False
    WinHttpReq.send
    
    If WinHttpReq.Status = 200 Then
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1                      ' 1 = 二進制 , 2=文件檔
        oStream.Write WinHttpReq.responseBody '寫入WinHttpReq.responseBody
        oStream.SaveToFile strSavePath & "\" & courseName & ".png", 2     ' 1 = 不複寫, 2 = 複寫
        oStream.Close
        MsgBox "下載成功"
    End If
End Sub

 

#2 ~ 9

設定基本參數,包含透過文字對話框輸入課程代碼,以及圖檔儲存的名稱

並且設定將圖檔儲存在工作簿所在的資料夾

#11 ~ 16

設定 XMLHTTP

#18 ~ 26

透過判斷式來判斷伺服器能正確回傳資料時才進行檔案處理

使用ADODB.Stream來處理回傳的資料

 

參考資源

Excel VBA 的眉眉角角Day29:如何抓取網路上的資料?以issuu.com為例

Stream 物件屬性、方法和事件

ADO Stream Object