Страницы: 1
RSS
Учим excel переводить с китайского? Есть идеи?
 
Доброго времени суток.
Господа, возникла веселая проблема, если в ячейке встречается любая китаяйская(японская) белиберда, ее перевести на английский.
Может кто сталкивался с подобными решениями.
например: 美元优
в goggle docs же есть такая формула как translate для этого.
Заранее спасибо за мысли.
 
Код
в goggle docs же есть такая формула как translate для этого 
а что, в Excel нет?
http://excelvba.ru/code/GoogleTranslate
или вы даже поискать не пробовали?
 
к сожалению искать не пробовал, голова немного не тем забита.
Спасибо, большое за пример.
 
А кто подскажет как найти эти самые иероглифы,
То есть как узнать быстрым способом узнать есть ли там иероглифы, а то применять макрос перевода к большому количеству заведомо не содержащих ячеек немного нерационально)
Подскажите пожалуйста.
 
попробовал понять как можно описать регуляркой китайские символы

Код
Sub TestKoreaRegEx()
Dim str
str = "主机"
Код
Set regEx = CreateObject("vbscript.regexp") 
regEx.Pattern = "\b[\x4E00-\x9FFF]+\b"
Set Matches = regEx.Execute(str)
For Each Match In Matches
    MsgBox Match
Next
End Sub

но почему-то оно не работает.
Хотя отдельно символы находятся и принадлежат
Унифицированные иероглифы ККЯ
диапазон:  4E00—9FFF

Кто подскажет в чем проблема?
Изменено: Антон - 19.11.2013 19:49:51
 
а понял, это я захотел чтоб msgbox вывел иероглифы)
Код
For Each Match In Matches
    aa = Translate(str, "en")
    MsgBox aa
Next
Все заработало.
 
нет странно, если в ячейке нету ничего не нашего, то оно ее тоже переводит (
 
Попробуйте, для активной ячейки

Код
Public Sub PrintChinese1()
    Dim pReg As Object, pItem As Object
    Set pReg = CreateObject("VBScript.RegExp")
    pReg.Global = True
    pReg.Pattern = "[\u4E00-\u9FFF]+"
    For Each pItem In pReg.Execute(ActiveCell.Value)
        Debug.Print pItem.Value
    Next
End Sub
Или "в лоб"

Код
Public Sub PrintChinese2()
    Const startChinese As Long = &H4E00
    Const chineseRange As Long = &H51FF
    Dim sText As String, chineseWord As String
    Dim i As Long, sChar As String, codeChar As Long
    
    sText = ActiveCell.Text
    For i = 1 To Len(sText)
        sChar = Mid$(sText, i, 1)
        codeChar = AscW(sChar) - startChinese
        If (codeChar >= 0) And (codeChar <= chineseRange) Then
            chineseWord = chineseWord & sChar
        Else
            If Len(chineseWord) > 0 Then Debug.Print chineseWord
            chineseWord = ""
        End If
    Next
    If Len(chineseWord) > 0 Then Debug.Print chineseWord
End Sub
 
Сработал первый вариант.
Спасибо.
Что касается самого переводчика иногда на строке

Код
XMLHTTP.Open "GET", Replace(URL$, "\", "/"    , "False": XMLHTTP.send 


а именно XMLHTTP.send
выскакивает ошибка Run-time error '-2147467259 (80004005)'
как можно ее обойти, чтоб просто пропускать тогда ячейку?
Изменено: Антон - 20.11.2013 13:24:18
Страницы: 1
Читают тему
Наверх