問題: 最近老婆讓我給上二年級的孩子做一份生字拼音表(帶聲調(diào)),這樣孩子每天就可以讀拼音默寫詞語,也就不需要家長陪在身邊朗讀了。 錄入字母容易解決,但標(biāo)聲調(diào)就不好辦了。我百度了一下,金山詞霸提供了一個網(wǎng)頁工具,輸入漢字可轉(zhuǎn)換成帶聲調(diào)的拼音。那問題來了:現(xiàn)在有八百多個生詞,如果要每一個都這樣查一次然后拷貝粘貼出來,簡直太麻煩了。 方案: 既然拼音也是要錄入到Excel的,那么用VBA來操作網(wǎng)頁,把輸入漢字-->點(diǎn)擊“開始轉(zhuǎn)換”按鈕-->拷貝轉(zhuǎn)換結(jié)果-->粘貼到Excel等步驟自動化,就省事多了。 代碼: Private Sub CommandButton1_Click() Dim IE As Object Dim i As Integer i = 1 '打開網(wǎng)頁:創(chuàng)建一個IE對象,然后給一些屬性賦值。Visible是可見性,navigate是網(wǎng)頁地址 Set IE = CreateObject('internetexplorer.application') With IE .Visible = True .navigate 'http://hanyu.iciba.com/pinyin.html' '等待網(wǎng)頁完全加載 Do Until .ReadyState = 4 DoEvents Loop '拷貝漢字到網(wǎng)頁文本框,然后點(diǎn)擊轉(zhuǎn)換按鈕,并取出轉(zhuǎn)換結(jié)果 Do While Sheets('sheet1').Cells(i 1, 1).Value <> '' '從IE.Document.all句柄中把頁面上要使用的節(jié)點(diǎn)找出來。這里的方法是: .document.all('source').Value 給以source為ID的文本框賦值 .document.all.tags('img')(1).Click 點(diǎn)擊圖片集合里的第二張圖片 .document.all('to').Value 取出以to為ID的文本框內(nèi)容 .document.all('source').Value = Sheets('sheet1').Cells(i 1, 1).Value .document.all.tags('img')(1).Click
Do Until .ReadyState = 4 DoEvents Loop
Sheets('sheet1').Cells(i 1, 2).Value = .document.all('to').Value i = i 1 Loop '關(guān)閉網(wǎng)頁 .quit End With End Sub 代碼解釋:(見注釋) 貼士: 1)VBA只能操作IE瀏覽器,原因就一句話:都是微軟家的產(chǎn)品嘛 2)要先引用Micorsoft Internet Controls 拓展: 你的工作中是否遇到過需要抓取網(wǎng)頁數(shù)據(jù)的任務(wù)呢。。。? |
|