発生している問題・エラーメッセージ
個人情報に該当する文章を特殊文字で隠すAPIを利用したExcelVBAマクロを作成しています。
Excelファイルを読み込んで、そのファイルの全シートの各セルに入っているテキスト(文章)をそのAPIに送る、といった流れです。
※APIイメージ
https://ドメイン名/xxxxx/xx/xxxx?apikey=xxxxxxxxxxxxxxxxxxxxxxxx&text={{文章}}
{文章}の部分ですが、1セル毎にAPIに送っているとサーバーに大きく負担が掛かってしまうので、約1000文字を超えない程度にセルのテキストを任意の結合文字を指定して結合し、
APIに送って返却されたテキストをその結合文字でSplitしようとしているのですが、返却されたテキストをみると
①結合文字の中で勝手に改行が入っている。
②結合文字をAPIの機能で個人情報とみなし特殊文字に変えてしまっている。
等の問題が起こりました。(その為正しくSplit出来ません)
前提・実現したいこと
API等に影響を受けないように結合したテキストをSplitして元のセルに戻すには、結合文字をどのようなものにすればよいでしょうか?エンコードやデコードの影響を受けないような文字にするべきだと思うのですが、どれもうまくいっていません。。
試したこと
ちなみにうまくいかなかった結合文字は "★3r☆☆2"、"ehuowea"、"☆★☆2uh☆★☆"、"8888"、vbChCr & "shjd" & vbTab等になります。
補足情報(FW/ツールのバージョンなど)
参考までにプログラムは以下のようになります。
…………
sendText = sendText & 結合文字 & Targetbook.sheets(sNum).Cells(Ro,Co).value
……………
……………
……………
maskedText = MaskingText(sendText)
maskedTextS = Split(maskedText, 結合文字)
For i = 0 to Ubound(maskedTextS)
ReDim Preserve maskedCell(mNum)
maskedCell(mNum).maskedStr = Ubound(maskedTextS)
maskedCell(mNum).sNum = sNum
maskedCell(mNum).Ro = Rox + i
maskedCell(mNum).Co = Co
mNum = mNum + 1
Next
Sub MaskingText(sendText)
Set objHTTP = CreateObject("msxml2.xmlhttp")
paramString = "apikey=xxxxxxxxxx&text=" & sendText
objHTTP.Open "POST", URL, False ', USER_ID, PASSWARD objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded" objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" objHTTP.send (paramString) objHttpStatus = objHTTP.Status If fstMsgFlg = False Then Call WriteHttpStatus fstMsgFlg = True End If If objHttpStatus = 200 Then outText = objHTTP.responseText outText = Replace(outText, "\u003e", ">") outText = Replace(outText, "\u003f", "<") outText = Replace(outText, "\u003c", "<") outText = Replace(outText, "\u003d", "=") outText = Replace(outText, "{""status"":0,""message"":""ok"",""masked_text"":", "") outText = Replace(outText, "\r", Chr(13)) outText = Replace(outText, "\n", "<br>") outText = Right(outText, Len(outText) - 1) outText = Left(outText, Len(outText) - 3) End If Do If InStr(outText, "{{") = 0 Then Exit Do Else maskL = InStr(outText, "{{") maskR = InStr(outText, "}}") MASKING_TEXT = Mid(outText, maskL, maskR + 2 - maskL) outText = Replace(outText, MASKING_TEXT, "<MASKED_TEXT>") End If Loop MaskingText = Replace(outText, "<MASKED_TEXT>", "{{masked}}")
End Sub
以上、どなたか分かる方いましたら宜しくお願い致します。