你已選中了添加連結的內容藍字關注,加微信NZ9668獲資料信息
VBA解決方案 系列叢書作者
頭條百家平臺 VBA資深創作者
_______________________________
大家好,最近推出的內容是「VBA信息獲取與處理」中的部分內容,這套教程面向中高級人員,涉及範圍更廣,實用性更強,現在的內容是第一個專題「如何在Word中打開、激活、關閉Excel文件」的內容。第四節在EXCEL中打開及修改WORD文件在上面的專題中,我們講了如何在WORD中打開EXCEL。那麼同理,如何在EXCEL中打開WORD呢?在這講中我給出專題的講解,這個講解中我們將利用CreateObject函數和GetObject 函數分別建立一個引用及獲取已經打開的WORD文件信息。這講的內容為了增加實用性,我在程序中還給出了如何向WORD的表格(非嵌套)中添加數據,這個數據來源於EXCEL。1 EXCEL中判斷一個WORD文件是否被打開在EXCEL中判斷WORD文件是否被打開,我們可以利用GetObject 函數獲取一個WORD主程序的返回情況。這裡我利用一個WordIsOpen的函數過程。代碼如下:Function WordIsOpen(ByVal strDocName AsString) As Boolean strDocName = UCase(strDocName) SetmyWd = GetObject(, "WORD.Application") ForEach doc In myWd.Documents代碼講解:這是一個函數過程,需要輸入一個strDocName的字符串,用於我們核對是否打開那個文件的文件名,然後我們利用Set myWd = GetObject(,"WORD.Application")語句捕獲是否有word打開的主程序,如果有,我們將提取每個文件的文件名,用於我們的判斷。下面看具體的講解:①WordIsOpen = False 首先令WordIsOpen初始值為FALSE② On Error Resume Next 是建立一個錯誤處理語句,這個語句是當沒有word文件打開時以便對後續錯誤進行處理③ For Each doc In myWd.Documents上述語句是一個遍歷的循環,如果打開的文件中含有名稱為給出的文件名的文件,那麼返回的將是WordIsOpen = True。 在中主程序中我們將利用WordIsOpen函數對我們需要判斷的文件進行判斷,如果沒有打開,那麼執行打開操作,再進行修改;如果已經打開,那麼執行修改操作。 RR = WordIsOpen("E:\NZ\文章\06 VBA信息獲取與處理\001 在WORD中激活EXCEL.docm")If Not RR Then '創建Word對象 SetmyWdA = CreateObject("Word.Application") myWdA.Visible = True '打開指定文檔 SetMyDocument = myWdA.Documents.Open("E:\NZ\文章\06 VBA信息獲取與處理\001 在WORD中激活EXCEL.docm") '獲取當前Excel的SHEET2的單元格C2數據 mystr = ThisWorkbook.Sheets(2).Cells(2, 3).Value MyDocument.Tables(1).Cell(2, 3).Range.Text = mystr Set myWdA = GetObject(, "WORD.Application") For Each doc In myWdA.Documents Ifdoc.FullName = "E:\NZ\文章\06 VBA信息獲取與處理\001 在WORD中激活EXCEL.docm" Then mystr = ThisWorkbook.Sheets(2).Cells(2, 3).Value doc.Tables(1).Cell(2, 3).Range.Text = mystr代碼解讀:上述代碼先利用WordIsOpen函數判斷"E:\NZ\文章\06 VBA信息獲取與處理\001 在WORD中激活EXCEL.docm"是否已經打開,如果沒有打開,那麼利用CreateObject函數建立引用,然後打開這個文件,打開後修正文件文件,如果已經打開了文件,那麼首先定位到打開的文件,然後在修正。下面看代碼的重點講解:① If Not RR Then '創建Word對象 SetmyWdA = CreateObject("Word.Application") myWdA.Visible = True '打開指定文檔 SetMyDocument = myWdA.Documents.Open("E:\NZ\文章\06 VBA信息獲取與處理\001 在WORD中激活EXCEL.docm") '獲取當前Excel的SHEET2的單元格C2數據 mystr = ThisWorkbook.Sheets(2).Cells(2, 3).Value MyDocument.Tables(1).Cell(2, 3).Range.Text = mystr②Set myWdA = GetObject(, "WORD.Application") For Each doc In myWdA.Documents If doc.FullName = "E:\NZ\文章\06 VBA信息獲取與處理\001 在WORD中激活EXCEL.docm"Then mystr = ThisWorkbook.Sheets(2).Cells(2, 3).Value doc.Tables(1).Cell(2, 3).Range.Text = mystr上述代碼是當文件已經打開,定位所給出的文件,然後修訂文件的代碼。③上述文件修訂的代碼,我給出的比較簡單,大家在實際利用的時候可以發揮使用。 本節知識點回向:如何利用CreateObject函數和GetObject 函數來判斷一個給定的文件是否打開?當已經得到文件已經打開時如何定位到這個文件?以上兩個問題就是本節要講解的主要問題,其中的代碼完全可以用作通用代碼來對待。 本節代碼參考文件「001 在WORD中激活EXCEL.docm」 VBA是利用Office實現自己小型辦公自動化的有效手段,這時我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!學習VBA是個過程,也需要經歷一種枯燥的感覺,如太白詩云:眾鳥高飛盡,孤雲獨去閒。相看兩不厭,只有敬亭山。「水善利萬物而不爭」,綿綿密密,微則無聲,巨則洶湧。學習亦如此,知道什麼是自己所需要的,不要蜷縮在一小塊自認為天堂的世界裡,待到暮年時再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機的心靈,把握現在,這才是進取。越是有意義的事情,困難會越多。願力決定始終,智慧決定成敗。不管遇到什麼,都是風景。看淡紛爭,看輕得失。茶,滿也好,少也好,不要計較;濃也好,淡也好,其中自有值得品的味道。去感悟真實的時間,靜下心,多學習,積累福報。而不是天天混日子,也不是天天熬日子。在後疫情更加嚴峻的存量殘殺世界中,為自己的生存進行知識的儲備,特別是新知識的儲備。學習時微而無聲,利用時則巨則洶湧。我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了六部VBA專門教程。第一套:VBA代碼解決方案是VBA中各個知識點的講解,覆蓋絕大多數的VBA知識點,初學必備;第二套:VBA資料庫解決方案資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。第四套:VBA代碼解決方案之視頻是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。第五套:VBA中類的解讀和利用這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。第六套教程:《VBA信息獲取與處理》,這是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。如需要可以可以WeChat: NZ9668學習的過程也是修心的過程,修一個平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內心裡沒有那麼多邪知邪見,也就沒有那麼多妄想。利人就是利己。這些教程也是為幫助大家起航,助上我自己之力,我的上述教程是我多的經驗的傳遞,大家可以根據以上資料1,3,2,6,5或者是4,3,2,6,5的順序逐漸深入的逐漸學習。 每一分收穫都是成長的記錄,怎無憑,正是這種執著,成就了朝霞的燦爛。最後將一闕詞送給致力於VBA學習的朋友,讓大家感受一下學習過程的枯燥與執著:_____________________________
更多關聯閱讀