2022/03/26

VBA / 使用Excel VBA爬蟲Google搜尋結果

之前曾經用Python爬蟲Google搜尋結果

Py / 透過谷狗大神爬學校地址

Gg / 從GoogleBook、WorldCat、全國新書資訊網查詢ISBN 更新:全國新書資訊網 程式碼

Gg / 從GoogleBook、WorldCat、全國新書資訊網查詢ISBN

更新:全國新書資訊網

http://isbn.ncl.edu.tw/NEW_ISBNNet

後來再測試時,發現在原本的第2個重新導向跟第3個重新導向之間又多了一個重新導向

https://isbn.ncl.edu.tw/NEW_ISBNNet/main_DisplayResults.php?&Pact=DisplayAll4Simple

並且傳遞方式是用POST

所以修改了程式碼

//
var options22={
   'menthod':'post',
   //"followRedirects" : true,
   //"muteHttpExceptions": true,
   'headers':dataHeaders,
   'payload':params
};

//過了一陣子再測試時,發現多了這個轉址
var url22="https://isbn.ncl.edu.tw/NEW_ISBNNet/main_DisplayResults.php?&Pact=DisplayAll4Simple";
var hData22 = UrlFetchApp.fetch(url22,options22);
var rCode22 = hData22.getResponseCode();
Logger.log(rCode22);
var Headers22 = hData22.getAllHeaders();
Logger.log(Headers22);
 

2022/03/14

VBA / 使用Excel VBA將Word轉換成PDF 修改版4

延續前面 

VBA / 使用Excel VBA將Word轉換成PDF 

VBA / 使用Excel VBA將Word轉換成PDF 修改版

VBA / 使用Excel VBA將Word轉換成PDF 修改版2

VBA / 使用Excel VBA將Word轉換成PDF 修改版3

在原始的程式裡面,有一個自訂函數Function rinstr(),用來取得 \ 或 . 的位置

原理是用迴圈進行比對,如果比對相符就把數字記錄下來

也因此在跑完整個迴圈之後,就能夠記錄到符合字元之中的最後一個所在的位置

後來在其他教學網站中看到

VBA其實有內建函數─InStrRev 函數可以達成相同的功能

因此,在修改版4就改成用內建函數來取得分割字串所需的字元位置

參考資源

InStrRev 函數

Excel VBA 程式設計教學:基本字串處理(String)

2022/03/01

VBA / 使用Excel VBA將Word轉換成PDF 修改版3

延續前面 

VBA / 使用Excel VBA將Word轉換成PDF 

VBA / 使用Excel VBA將Word轉換成PDF 修改版

VBA / 使用Excel VBA將Word轉換成PDF 修改版2

 

之前在使用的時候,曾經遇到開啟的檔案因為崁入電腦沒有的特殊字型,會詢問是否用唯讀的方式,這樣會中斷程式執行

所以我直接改成用唯讀的方式來開啟,只是不知道這樣有沒有用

Set ppPres = ppApp.Presentations.Open(Filename:=Fullpath & Filename, ReadOnly:=True, WithWindow:=msoFalse)

經過測試之後,這種方式是沒有用的

所以爬了谷狗之後

改用 On Error Resume Next 忽略錯誤讓程式繼續執行

但是這樣就只能看實際輸出的資料才知道那些沒有轉檔成功

因此,在程式中用Err.Number來回傳是否有錯誤發生

如果有的話,就在C欄寫出錯誤的代碼跟描述

If Err.Number <> 0 And Err.Number <> 429 Then   Sheet1.Cells(i, 3) = Err.Number & "/" & Err.DescriptionEnd If

備註:

一開始在寫比較式時腦袋有點趴帶,用Or來處理

但其實要用And,因為我是要兩者都成立

既非0,也非429時,在C欄寫入資料

0就是沒有錯誤

429是ActiveX 元件無法建立物件,但程式實際還是可以順利執行,而且只有在Ppt轉檔時才會有這個錯誤訊息

所以就假裝是沒有問題

目前程式看起來應該可以順利進行

不過我還是搞不懂Excel VBA引用其他Office應用程式的原理

網路查的資料跟手邊的書都是有看沒有懂

參考資源

ActiveX 元件無法建立物件或傳回此物件的參考 (錯誤 429)

當您自動執行 Office 應用程式時,會收到執行時間錯誤429