2015-07-10 154 views
0

我需要從this website導入一些數據,爲此我編寫了一個小的Java腳本代碼,這將在下面提及。從網站導入數據:將Java腳本代碼轉換爲VBA代碼

代碼提取分子量

x = document.getElementById('summary') 
y = x.getElementsByTagName('h2') 
count = x.getElementsByTagName('h2').length 
flag=0 
for (i = 0; i < count; i++){ 
    if(y.item(i).textContent == 'Molecular Weight'){ 
    console.log(y.item(i).nextSibling.textContent); 
    flag=1; 
    } 
} 
if(flag==0) 
console.log("Nothing Found"); 

代碼從物性表

x=document.getElementById('physical') 
y=x.getElementsByClassName('TableRow') 
count =x.getElementsByClassName('TableRow').length 
for(i=0;i<count;i++){ 
    z=x.getElementsByClassName('TableRow').item(i) 
    z.children[0].textContent 
    z.children[1].textContent 
} 

提取數據,因此是否有可能通過導入Java腳本脫穎而出?

我認爲VBA會更好,但我是VBA新手,無法確定在VBA中編寫代碼的適當方式。 請給我一些提示,以便我可以朝正確的方向前進。

+0

你可能會用XMLHTTP對象提供最好的服務,但你最終的目標(S)是/是不清楚。您已經提供了javascript函數來檢索單個和特定HTML頁面格式的值。以下爲您提供。 – Jeeped

+0

我的問題可能有點兒不清楚,但我想要的是從excel單元格中挑選最後一部分的單元格,像「111-92-5」將被替換爲另一個字符串(具體稱爲「RN號碼」),這將打開每個「RN號碼」都有新的和獨特的頁面。我的最終目標是從每個頁面提取數據(只有問題中描述的「分子量」和「物理性質」)並將其存儲在Excel表格中。從表中我需要提取每行的前2列。 –

回答

0

不是通過JavaScript導入,您可能想要嘗試以下操作。在excel中,您可以前往File -> Open Url將網站導入電子表格。假設網站的結構是相同的,無論您正在查看的分子如何,您都可以通過查看單元格地址來創建VBA腳本來提取數據。您可以使用Tools -> Macro -> Record New Macro來記錄您的操作。然後一旦完成,您可以通過Tools -> Visual Basic Editor查看VBA代碼。然後,您可以從那裏改進代碼以進一步自動執行該過程。

下面是一個例子:

Workbooks.Open Filename:="http://chem.sis.nlm.nih.gov/chemidplus/rn/112-92-5" 
Range("A44").Select 
Selection.Copy 
Sheets.Add 
Sheets("Sheet2").Select 
Range("B4").Select 
ActiveSheet.Paste 
+0

這是一個網頁,如果我更改地址中的「111-92-5」,可能會出現不同結構的頁面,在這種情況下,您的方法將不起作用。您可以將以上地址更改爲「http:// chem.sis.nlm.nih.gov/chemidplus/rn/61789-40-0」 –

+0

爲什麼要先將所有數據導入excel,然後選取一些特定元素?你不覺得這是非常困難和耗時的過程嗎? –

+0

我看到您確實想要抓取此網站上的一組網頁。你可以使用[phantom.js](http://phantomjs.org/)和node.js(https://nodejs.org/)來抓取你想要利用JavaScript代碼提取你想要的數據的所有頁面。然後將數據保存爲csv格式,以便可以在Excel中打開 – Moollihawkja