close

每次都聽人家說寫個shell讓它自己連網站就好啦

聽起來很簡單

但是實際要寫就卡住了

想做的事情是:自動連到某網站數次,沒有input也沒有output

(聽起來很簡單啊......怎麼真的要下筆這麼難)

 

到底要用什麼語言寫呢?

本來想用bash shell,但是完全卡住XD

搜尋了一些關鍵字之後找到curl跟wget,

稍微跑了一下才想起來我這次要跑的網頁需要是登入狀態。

用curl透過某些設定似乎也有可能辦到,不過有點麻煩

(邊忙其他東西,能花在這上面的時間不多。)

 

稍微跟前輩討教了一下,

他說最簡單的方式應該是讓excel直接打開已經登入的瀏覽器。

想了想似乎這也是最容易的方式,所以就開始查資料~

 

一開始前輩提供的關鍵字是:「excel vba マクロ」

可是我看了一些網站之後,發現我還卡在不知道怎麼執行XD

 

所以就稍微換了一些關鍵字,中英夾雜或英日夾雜之類的

wscript shell chrome -url

vba excel chrome 等等

(用公司的電腦搜尋,所以出來一大部分都是日文網站XD)

 

最後東拼西湊加上一點想像力弄出了一些程式碼

居然可以順利打開Q_____Q (太感人了!!!)

而且也是在登入模式下(因為瀏覽器有cookie吧,完全可以迴避掉處理登入身份的問題)

 

以下補上如何執行

(這邊是參考 http://jimmy0930.blogspot.jp/2013/01/vba-vba.html 弄出來的)

步驟如下:

1. 打開excel

2. 這邊附上前輩說的話:ファイル、オプションで
リボンのユーザー設定
開発にチェック付けないと出てこないかも。
就是打開開發者選項啦~
檔案->選項->自訂功能區->最右邊那欄「開發人員」的地方打勾

3. 回到excel,最上方工具列就出現了開發的標籤,點選Visual Basic之後就打開視窗可以開始寫了~

excel  

4. 開啟新的module,並在空白欄填入程式碼。(如圖,灰色部分是打算連結的網址)
vba  

參考程式碼如下:

Option Explicit

Dim ObjG As Object

Sub Chrome_open()
Set ObjG = CreateObject("WScript.Shell")
ObjG.exec ("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe") '這邊是填電腦中chorme的執行檔所在地
ObjG.SendKeys "{^}w"  '基本上是想要開一個視窗就關一個,可是似乎不如預期
Dim i As Integer   '一開始沒加這行,出現變數未定義的錯誤
For i = 1 To 5
ObjG.SendKeys "{^}w"  '基本上是想要開一個視窗就關一個,可是似乎不如預期
ObjG.Run "---" '---的地方放欲指定的網址
Next i

End Sub

5. 回到excel
開發->插入按扭(這邊是用上面的普通按扭,跟activeX無關)
讓按扭執行剛剛寫好的macro
補充一點:有多個chrome視窗時,其實我不確定按扭按下去之後會出現在哪個視窗......
這邊是直接把Excel縮小一半之後,旁邊就放希望他開在那邊的視窗,
然後就成功了@@

 

不過有一點小缺憾

目前設定跑5次的話,就會出來5個Tab,

雖然都是在新視窗,所以要關只要直接關整個視窗就好

但還是希望可以做到跑一個關一個。

這次用了ObjG.SendKeys "{^}w" ,是傳送ctrl+w關掉tab的指令

但有點怪,出來的tab數量完全沒有減少啊@@

有時候會變成一個在原本就開的視窗裡,其他會在新的視窗裡開一堆標籤

倒是程式碼位置放在開網址那個Run後面的話反而會在excel裡面看到^w

前輩表示好像可以用動態active什麼的自動關掉桌面上最上層的程式

(不過要是沒指定好程式名稱的話,會關錯成excel或其他人XD)

下次有空待補!

 

心得:上次寫macro大概是2010年的暑假了吧,而且那時候還不是直接用寫的,是用excel直接做一些事然後錄起來再編輯。

還好蠻多資料可以參考的,雖然關鍵字有點難下......

不過像我這種新手都可以弄出來了(雖然只是個簡單的依設定次數連接網站),看來入門應該不難XD


 

參考資料: 

關於如何用excel寫vba

http://jimmy0930.blogspot.jp/2013/01/vba-vba.html

關於用excel的vba開chrome

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11105585976

http://www.moug.net/tech/exvba/0060072.html

關於開tab

http://hsp.tv/play/pforum.php?mode=pastwch&num=55292

關於SendKeys

https://msdn.microsoft.com/ja-jp/library/cc364423.aspx

關於vba語法(For用法、定義變數、註解)

http://tonari-it.com/excel-vba-for-next/

http://oshiete.goo.ne.jp/qa/6727328.html

https://msdn.microsoft.com/zh-tw/library/bx185bk6.aspx

arrow
arrow
    文章標籤
    vba excel macro chrome
    全站熱搜

    holmes310524 發表在 痞客邦 留言(2) 人氣()