文字列変数をutf-8でエンコードされたファイルに保存する必要があります。別のアプリケーションから変数を取得できる vba スクリプトがあります。
Sub Main
ChanNum = DDEInitiate("MacroEngine","MacroGetVar")
Var$ = DDERequest$(ChanNum,"VariableFromOutside")
DDETerminate ChanNum
sContent = Var
MsgBox sContent
End Sub
そのスクリプトは sContent のみを表示できますが、以下に示すように、次のスクリプトでこの文字列をさらに処理する必要があります
Sub saveUTF_File(FileUrl,sCode)
' save text into utf-8 format
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=sCode
.SaveToFile FileUrl,2
.Close
End With
Set objStream = Nothing
End Sub
FilePath = "C:\file.html"
saveUTF_File FilePath,sContent
しかし、sContent 変数が Sub Main プロシージャから継承されていないため、うまくいきません。私の質問は、どうすればそれができるのですか? 助けてくれてありがとう。
私のコードは今
Function TextOutside() As Variant
ChanNum = DDEInitiate("MacroEngine","MacroGetVar")
Var$ = DDERequest$(ChanNum,"VariableFromOutside")
DDETerminate ChanNum
TextOutside = Var
' MsgBox TextOutside
End Function
Sub saveUTF_File(FileUrl,sCode)
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=sCode
.SaveToFile FileUrl,2
.Close
End With
Set objStream = Nothing
End Sub
FilePath = "C:\file.html"
sContent = TextOutside()
saveUTF_File FilePath, sContent
以下のスクリプトはエラーなしで動作しますが、残念ながら結果を C:\file.html に保存したくありません :( なぜ?
Global sContent
Sub Main()
ChanNum = DDEInitiate("MacroEngine","MacroGetVar")
Var$ = DDERequest$(ChanNum,"VariableFromOutside")
DDETerminate ChanNum
sContent = Var
MsgBox sContent
End Sub
Sub saveUTF_File(FileUrl,sCode)
' save text into utf-8 format
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText = sCode
.SaveToFile FileUrl,2
.Close
End With
Set objStream = Nothing
End Sub
Sub DoAll()
Dim FilePath
'
' Main is called before here.
'
FilePath = "C:\file.html"
saveUTF_File FilePath, sContent
End Sub