在WORD中打開EXCEL的方案中,作為通用講解,我這裡提供給大家兩種方案。這種操作雖然有很多的方法,本節利用的兩種方案也或許不符合你的編程習慣,但這沒有關係,我的教程就是把我認為比較好的應用介紹給大家。讀者可以嘗試。
1 利用OPEN語句完成
例如,我們要實現上述界面中的第一個按鈕「打開報表」。當我們的報告讀到這裡時,我們只需點擊一下這個按鈕就可以打開我們事先設置好的文件。我們看下面的代碼:
Public myfile As String '定義文件中要利用到的EXCEL文件
Private Sub CommandButton3_Click() '打開文件
Set XLApp = CreateObject("excel.application")
'設置要打開的文件
MYPT = ActiveDocument.Path
myfile = "001 工作表.XLSM"
XLApp.workbooks.Open MYPT & "\" & myfile
XLApp.Visible = True
mystr = XLApp.Sheets(1).Range("A1").Value
Set XLApp =nothing
End Sub
代碼的截圖:
代碼的講解:這個過程中我們要實現打開我們指定的文件,這裡用了一個myfile變量來表示這個文件,在取得當前路徑後,用OPEN語句來實現打開的命令,當然在之前還要實現一下這個應用程式的引用Set XLApp = CreateObject("excel.application"),如果是在其他的應用程式,只需要變更這裡就可以實現不同的引用了。
① Set XLApp = CreateObject("excel.application")
設置EXCEL應用程式的引用
② '設置要打開的文件
MYPT = ActiveDocument.Path
取得當前文件的路徑,這裡要注意將要打開的文件要和當前文件的路徑一致。
③ myfile = "001 工作表.XLSM"
設置要打開文件的文件名
④ XLApp.workbooks.Open MYPT & "\" & myfile
XLApp.Visible = True
打開文件,並使文件可見。
⑤ mystr = XLApp.Sheets(1).Range("A1").Value
這句和本講的內容沒有任何關係,只是給代碼人員留出了一句示例,假如我們想提取打開的EXCEL文件中某個單元格的數據到word文檔中就可以使用這樣的語句了。Mystr就是我們獲得的字符串。後續的應用就要看實際需要了。
2 利用shell()函數來完成這項工作
關於shell()函數,我在我的第一套教程「VBA代碼解決方案」中給大家講解過,這裡再給大家講解一下:shell(),它既不是工作表函數,也不是api函數,它是vba自帶的函數。api是應用程式接口,shell是應用程式和系統之間的橋梁。
它的用法很簡單,就是執行一個可執行文件。與開始菜單的運行功能一樣。
語法:Shell(pathname[,windowstyle])
pathname 是要執行的程序名,可能還包括目錄或文件夾
Windowstyle 表示在程序運行時窗口的樣式
常數 值 描述
vbHide 0 窗口是隱藏的,並且焦點被傳遞給隱藏窗口。
vbNormalFocus 1 窗口擁有焦點,並且恢復到原來的大小與位置。
vbMinimizedFocus 2 窗口縮小為圖符並擁有焦點。
vbMaximizedFocus 3 窗口最大化並擁有焦點。
vbNormalNoFocus 4 窗口被恢復到最近一次的大小與位置。當前活動窗口仍為活動窗口。
vbMinimizedNoFocus 6 窗口縮小為圖符。當前活動窗口仍為活動窗口。
下面我們看看打開」001 工作表.XLSM",的代碼:
Sub mynz()
myfile = Chr(34) & "E:\NZ\文章\06 VBA信息獲取與處理\001工作表.XLSM" & Chr(34)
Shell "excel.exe " & myfile
End Sub
代碼截圖:
代碼講解:這段代碼是非常簡單的,將路徑和文件名賦給shell函數後就可以實現,需要我們注意的是語句的寫法,chr(34)代表的是雙引號,需要用雙引號將文件名再次括起來,然後這個函數才可以正確的讀懂含有空格的文件名,當然不要忘了在excel.exe的後面也要加上空格。
本節知識點回向:上面的兩種方案都是可以打開EXCEL文件的,我們在實際的應用中可以選擇利用。在本節中我們需要注意下面幾個知識點:
① 如何建立應用程式的引用。
② 如何利用OPEN語句打開文件。
③ 如何利用shell函數打開文件。
④ 利用shell函數如何處理文件名中的空格問題。
本節代碼參考文件「001 在WORD中激活EXCEL.docm」
在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!學習VBA是個過程,也需要經歷一種枯燥的感覺,如太白詩云:眾鳥高飛盡,孤雲獨去閒。相看兩不厭,只有敬亭山。
「水善利萬物而不爭」,綿綿密密,微則無聲,巨則洶湧。學習亦如此,知道什麼是自己所需要的,不要蜷縮在一小塊自認為天堂的世界裡,待到暮年時再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機的心靈,把握現在,這才是進取。越是有意義的事情,困難會越多。願力決定始終,智慧決定成敗。不管遇到什麼,都是風景。看淡紛爭,看輕得失。茶,滿也好,少也好,不要計較;濃也好,淡也好,其中自有值得品的味道。去感悟真實的時間,靜下心,多學習,積累福報。而不是天天混日子,也不是天天熬日子。在後疫情更加嚴峻的存量殘殺世界中,為自己的生存進行知識的儲備,特別是新知識的儲備。學習時微而無聲,利用時則巨則洶湧。
VBA是利用Office實現自己小型辦公自動化的有效手段,我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了六部VBA專門教程。
第一套:VBA代碼解決方案是VBA中各個知識點的講解,覆蓋絕大多數的VBA知識點,初學必備;
第二套:VBA資料庫解決方案資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。
第三套:VBA數組與字典解決方案數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。
第四套:VBA代碼解決方案之視頻是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。
第五套:VBA中類的解讀和利用這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。
第六套教程:《VBA信息獲取與處理》,這是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。
學習的過程也是修心的過程,修一個平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內心裡沒有那麼多邪知邪見,也就沒有那麼多妄想。利人就是利己。這些教程也是為幫助大家起航,助上我自己之力,我的上述教程是我多的經驗的傳遞,大家可以根據1,3,2,6,5或者是4,3,2,6,5的順序逐漸深入的逐漸學習。
每一分收穫都是成長的記錄,怎無憑,正是這種執著,成就了朝霞的燦爛。最後將一闕詞送給致力於VBA學習的朋友,讓大家感受一下學習過程的枯燥與執著:
浮雲掠過,暗語無聲,
唯有清風,驚了夢中啼鶯。
望星,疏移北鬥,
奈將往事雁同行。
阡陌人,昏燈明暗,
忍顧長亭。
多少VBA人,
暗夜中,悄聲尋夢,盼卻天明。
怎無憑!
分享成果,隨喜正能量