2016-01-13 203 views
1

我想向我的Excel工作表添加一個VBA函數,我可以將這些名稱轉換或轉換爲阿拉伯語,以便在我的數據庫中阻止它們。我加入了開發者選項卡,打開編輯器,我增加了以下功能,但它不工作...任何幫助,請Excel函數將英文名稱轉換爲阿拉伯語

Function Translate_To_Arabic(str) As String 
' Tools Refrence Select Microsoft internet Control 


    Dim IE As Object, i As Long 
    Dim inputstring As String, outputstring As String, text_to_convert As String, result_data As String, CLEAN_DATA 

    Set IE = CreateObject("InternetExplorer.application") 
    ' TO CHOOSE INPUT LANGUAGE 

    inputstring = "auto" 

    ' TO CHOOSE OUTPUT LANGUAGE 

    outputstring = "ar" 

    text_to_convert = str 

    'open website 

    IE.Visible = False 
    IE.navigate "http://translate.google.com/#" & inputstring & "/" & outputstring & "/" & text_to_convert 

    Do Until IE.ReadyState = 4 
     DoEvents 
    Loop 

    Application.Wait (Now + TimeValue("0:00:5")) 

    Do Until IE.ReadyState = 4 
     DoEvents 
    Loop 

    CLEAN_DATA = Split(Application.WorksheetFunction.Substitute(IE.Document.getElementById("result_box").innerHTML, "</SPAN>", ""), "<") 

    For j = LBound(CLEAN_DATA) To UBound(CLEAN_DATA) 
     result_data = result_data & Right(CLEAN_DATA(j), Len(CLEAN_DATA(j)) - InStr(CLEAN_DATA(j), ">")) 
    Next 


    IE.Quit 
    transalte_using_vba = result_data 


End Function 
+0

最後一行'transalte_using_vba'的第一部分必須與您的函數名稱相同。例如,如果將函數名稱更改爲'somefunction',則必須將最後一行更改爲'somefunction = result_data'。 – Fadi

+0

我試過這個,但仍然沒有工作....我打開編輯器插入一個新的模塊,將它保存爲一個加載項.xlam,然後我將其添加...但仍然無法工作 – Deve

+0

看到我的答案。這將在您的工作簿中工作,但請注意,此功能非常慢。 – Fadi

回答

2

的問題是,你的代碼的最後一行應該是:

Translate_To_Arabic = result_data 

你mispeeled「翻譯」

另外,還要確保你添加了對Microsoft Internet控件

+2

psssst。你拼寫錯了''''''' –

+0

仍然不能正常工作 – Deve

+1

這是什麼不工作。你彈出錯誤嗎?公式爲「#名稱」或「#REF」或「#N/A」或NULL的結果。 UDF是否沒有運行?我通過將函數放置在一個新模塊中,保存工作表,然後在單元格中輸入'= Translate_To_Arabic(「Test」)'來嘗試你的函數,並且它以阿拉伯語返回。我無法閱讀阿拉伯文,但我認爲它說「測試」。 – JNevill

0

,如果你想使用這個函數使用UDF此代碼:

Function Translate_To_Arabic(Rng As Range) As String 
' Tools Refrence Select Microsoft internet Control 


    Dim IE As Object, i As Long 
    Dim inputstring As String, outputstring As String, text_to_convert As String, result_data As String, CLEAN_DATA 

    Set IE = CreateObject("InternetExplorer.application") 
    ' TO CHOOSE INPUT LANGUAGE 

    inputstring = "auto" 

    ' TO CHOOSE OUTPUT LANGUAGE 

    outputstring = "ar" 

    text_to_convert = Rng.Text 

    'open website 

    IE.Visible = False 
    IE.navigate "http://translate.google.com/#" & inputstring & "/" & outputstring & "/" & text_to_convert 

    Do Until IE.ReadyState = 4 
     DoEvents 
    Loop 

    Application.Wait (Now + TimeValue("0:00:5")) 

    Do Until IE.ReadyState = 4 
     DoEvents 
    Loop 

    CLEAN_DATA = Split(Application.WorksheetFunction.Substitute(IE.Document.getElementById("result_box").innerHTML, "</SPAN>", ""), "<") 

    For j = LBound(CLEAN_DATA) To UBound(CLEAN_DATA) 
     result_data = result_data & Right(CLEAN_DATA(j), Len(CLEAN_DATA(j)) - InStr(CLEAN_DATA(j), ">")) 
    Next 


    IE.Quit 
    Translate_To_Arabic = result_data 


End Function 

您可以在B1:=Translate_To_Arabic(A1)中使用此公式在您的工作簿中使用此函數。現在,如果在單元格A1中鍵入book,則會在單元格B1中看到كتاب。 如果要使用此功能作爲加載項,請參見this link