前幾天在104看到一個外包案,案件需求是抓取pdf檔案內的文字資料,並轉到excel並完成整理與分類。

剛好工作上有大量蒐尋多pdf檔案需要,但pdf檔案搜尋必須要個別個別開啟檔案後才能逐一搜尋,對文書工作佔一定比例的我來說,簡直是對黃金右手的折磨,所以誘使我再次努力study vba來滿足抓取pdf檔案文字功能的要求。

 

甘苦談:回想起念書時,如果會這招,那真的很好用

作業流程圖:

 

如何做到PDF轉EXCEL 此一部分因為現況有外包提案了,小編先藏私一下,暫不對外說明。

但分享如何做到多工作簿、多工作頁資料搜尋的功能,此一功能如果早在我念書時就study出來,當年應該可以以一檔百了。

簡要說明:

物件使用:Workbook、Worksheet、Range

迴圈使用:FOR EACH IN .....NEXT

物件方法:Range.find(what:=xxxxx)

結構化說明:

先宣告Workbook、Worksheet物件 ,再結合2層 "for each in  物件" 迴圈,就可以透過迴圈逐一在各工作工作簿、各工作頁中用usedrange.find方式來找尋指定關鍵字的位置。

完全迴圈用透過nothing 釋放物件。

最終作品:

 

2018.4.30 更新:

增加使用FINENEXT方法,把關鍵字搜尋部分,增加搜尋重複的部分,這樣才完整。

                Do
                                           
                            Set FIND_NEXT = ws.Cells.FindNext(M_RNFIND)
                            
                            '合計_add = 合計_add + 1
                            
                            S1 = Sheets("DEMO").Range("D65565").End(xlUp).Row
                            
                            If S1 = 0 Then
                
                                S1 = 1
                                
                            Else
                            
                                S1 = S1 + 1
                
                            End If
                        
                            myFind = True
                            
                            Sheets("DEMO").Range("D" & S1) = "在活頁簿 " & w1.Name & " 的工作表名稱" & Chr(34) & "" _
                                & s1.Name & Chr(34) & "的" & "儲存格位置" & FIND_NEXT .Address & " 中"     '訊息函數
                            
                            
                 Loop While Not FIND_NEXT Is Nothing And Sheets("DEMO").Cells(FIND_NEXT .Row + ADD_ROW, FIND_NEXT .Column + ADD_COLUMN).Address <> m_stAddress

 

補上影片:https://1drv.ms/v/s!AsDcJ1MnP76xtiKG484xedcmfJYQ

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 a200271071 的頭像
    a200271071

    a200271071的部落格

    a200271071 發表在 痞客邦 留言(0) 人氣()