

表題の通りですが、文章がピリオド区切り、つまり一つの文のみでDeepLに入力されてしまうので、英文全体をセルから取得したいです。.Valueの箇所を.Textに変更したりはしています。

[code]

    Sub Translate()
    
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Dim Sh_1 As Worksheet
        Set Sh_1 = Worksheets("###########")
        Dim ie As Object
        Set ie = CreateObject("InternetExplorer.Application")
        ie.Visible = True
        Dim lastRow_1 As Long
        lastRow_1 = Sh_1.Cells(Rows.Count, 3).End(xlUp).Row
        Dim loop_1 As Long
        Dim S_english As String
        Dim S_wayaku As String
    
        For loop_1 = 3 To lastRow_1
            S_english = Sh_1.Cells(loop_1, 3).Value
            ie.navigate "https://www.deepl.com/ja/translator#en/ja/" & WorksheetFunction.EncodeURL(S_english)
    
            Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop
            Do
                S_wayaku = ie.document.getElementsByClassName("lmt__target_textarea")(0).innerText
            Loop Until S_wayaku <> ""
            Sh_1.Cells(loop_1, 4).Value = S_wayaku
            Debug.Print loop_1
        Next
    
        ie.Quit 'ie終了
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
    
        MsgBox ("wd")
    
    End Sub
    
[/code]


CC BY-SA 4.0
2021-08-30T03:25:50.203
81107
2022-10-25T23:00:35.063
2022-04-23T06:33:06.723
3060
25766
question
vba 自然言語処理
Excel マクロでDeepLを用いて翻訳する際、英文をピリオド区切りではなくセル内の丸ごとで翻訳したい


> S_english = Sh_1.Cells(loop_1, 3).Value

の表現では、"/"
や"（）","#"を処理する際に問題があり、そこを修正すれば文章丸ごとを翻訳出来ました。（つまり、当該記号が処理する最後の部分となりますこの場合はDeepLに送る値）

英文において、当該記号を内容に応じて適当な接続詞に変更するなどすれば（"/" ⇒
or/andなどに適宜）、問題なくセル内の文章丸ごとを翻訳する事が出来るかと思います。


CC BY-SA 4.0
2021-09-01T10:07:47.877
81161
2021-09-01T10:07:47.877
25766
81107
answer