注目の投稿

技術者として人として

 技術者として人として これまで、生きてきて、ひとりで解決していくものと考えていた。 知り合いなどの助言もあるが、それだけでも、やり切れない場合があった。 長い間、この性格を作り上げてきて正確などは、変わることがないだろうと決めつけていた。 思考は、そうそう簡単には変わらないもの。 ひとりでは、変わらないものであるということに気づくことができた。 日本では、カウンセリングという文化が浸透していないが、古くは仏教など、生活の為に、必要な事を、学ぶ機会が少ないと思う。 カウンセリングは、それを、実現できるものと思う。 ひとりでは解決できないこと、それは、正しい方法を見つけられないから。それを、学んでいないからで、専門的な第三者が心理学などを通して教えてくれることは救いとなる。 生きにくい世の中であることは間違いない。 生きやすくする方法もあると知ることができた。 技術者は孤独になるときがあり、ひとりでなんともならない時の対策方法を見失う時がある。日本ではカウンセリング文化が浸透していないような気がするが、ひとりでは解決出来ない時。救われる方法があると知る事になる。 https://t.co/LBKNwUyXg5 — chsugiyama (@chx_sugi_001) January 3, 2023

EXCEL VBA エクセルのセルの内容をGoogle 翻訳 から抽出してメッセージに表示

EXCEL VBA

EXCEL 2003 で動作の確認をしています。

◆「要素の調査」について 追記しました。


エクセルのセルの内容を、Google 翻訳  から抽出してメッセージに表示。


翻訳したいときに、IE起動する手間を省く。

ちょっと、翻訳したい時に使用する。

書き換えるときは、「はい」
書き換えないときは、「いいえ」



  • 参照設定は下記のように設定します。


この設定がされていないとエラーになります。

エクセルから AUTOCADや、その他のソフトを制御するときにも、この参照設定がないとエラーになります。

◆Alt+F8 で、VBE(Visual Basic Edtor) を起動して、ツールの参照設定をクリック




◆参照設定の画面が開くので、下記の2つを選択
 これは、エクセルのバージョンによって異なります。

 たくさんあるので、

 探すときは、入力モードを、無変換にしておいて、「M」を入力すると、Maicrosoft 関係の行に、移動しますので、そこからは、↓で探します。




◆Google翻訳のボタンの探し方は、ブラウザの「要素を検証」で探します。

 画面上のどこかで、右クリックすると、「要素の検証」があります。

 これは、Fire Foxが、分かりやすかったです。


◆要素の検証について追記します。

 Chromeでは「要素の検証」で、Fire Foxでは、「要素を調査」という名前です。

 Fire FoxのGoogle 翻訳の画面の文字を入力する左側のIDを見てみます。

 下記のコードの、"source" の部分になります。

 objIE.document.getElementById("source").Value = WD001

 左側の窓のところで、右クリックのメニュから、「要素を調査」をクリックします。



 窓以外がグレイアウトして、窓の部分が白くなっています。


この状態で、画面の右したの「HTML」をクリックすると、このページのHTMLを確認出来るようになります。


選択されている 部分のコードが表示されています。 


textarea id = "soure" と、表示されているので、IDは、「sourse」 ということが分かります。




  
同様に、右側の翻訳結果が表示される窓は、span id = "resoult_box" ということがわかります。

下記のコードでは、この1行の部分になります。

 ReadWd = objIE.document.getElementById("result_box").innerText


翻訳結果を、VBAで取り込むことが出来ます。



  • Vba Code


Option Explicit

'Google翻訳
Sub Google翻訳()

    Dim objIE As Object
    Dim i
    Dim WD001
    Dim RowAc
    Dim ColumnAc
    Dim ReadWd
 
    Set objIE = CreateObject("InternetExplorer.Application")    'IE起動
    objIE.Visible = False
 
    objIE.navigate "https://translate.google.co.jp/?hl=ja"      'Googleに接続
    Call IEWait(objIE)                                          'IEを待機
    WD001 = ActiveCell.Value
    RowAc = ActiveCell.Row
    ColumnAc = ActiveCell.Column
    objIE.document.getElementById("source").Value = WD001
    Call IEButtonClick(objIE, "翻訳")                           ' ボタンを押す
    Call WaitFor(2)                                             ' 停止
    ReadWd = objIE.document.getElementById("result_box").innerText
    objIE.Quit                                                  'IE終了
   
    Dim rc As VbMsgBoxResult
    rc = MsgBox("書換?" & ReadWd, vbYesNo + vbQuestion)
    If rc = vbYes Then
        Cells(RowAc, ColumnAc) = ReadWd
    End If
   
    Set objIE = Nothing
End Sub

'IEを待機する関数
Function IEWait(ByRef objIE As Object)
    Do While objIE.Busy = True Or objIE.readyState <> 4
        DoEvents
    Loop
End Function

'指定した秒だけ停止する関数
Function WaitFor(ByVal second As Integer)
    Dim futureTime As Date

    futureTime = DateAdd("s", second, Now)
    While Now < futureTime
       DoEvents
    Wend
End Function

'ボタンを押す関数
Public Function IEButtonClick(ByRef objIE As Object, buttonValue As String)
    Dim objInput As Object
 
    For Each objInput In objIE.document.getElementsByTagName("INPUT")
        If objInput.Value = buttonValue Then
            objInput.Click
            Exit For
        End If
    Next
End Function



コメント

このブログの人気の投稿

DesignSpark Mechanical オブジェクトの拡大、縮小 "Scale the body"

DesignSpark Mechanical ブレンド SurfaceからSolid作成

DesignSpark Mechanical エクスポートDXF(2D,3D)