|
用VBA做工具的過程中,遇見這樣一個問題。使用FSO方式或者直接OPEN文件方式,生成的文本文件采用的字符集為當前操作系統(tǒng)默認字符集,不能選擇字符集類型。這樣的文件作為應用程序的配置文件或者作為js代碼文件,常常會因為字符集不是UTF-8,不能直接使用,需要利用記事本進行一次人工的字符集轉(zhuǎn)換。特別麻煩。 近日發(fā)現(xiàn)有一辦法,可以較好的解決這個問題。即是采用ADO的方式,將字符串生成以指定字符集的流文件輸出。 函數(shù)代碼如下,VB或VBA中均可用。注意:需要添加對ADO 對象庫的引用。 ADO方式寫入 '功能:text保存為文件(ADO方式) '輸入:輸出文件地址、內(nèi)容文本、字符集 '輸出:無 Sub WriteToTextFileADO(filePath As String, strContent As String, CharSet As String) Set stm = New ADODB.Stream stm.Type = 2 '以本模式讀取 stm.Mode = 3 stm.CharSet = CharSet stm.Open stm.WriteText strContent '如果文件存在,刪除文件 If Len(Dir(filePath)) > 0 Then Kill filePath End If stm.SaveToFile filePath, 2 stm.Flush stm.Close Set stm = Nothing End Sub使用示例: Call WriteToTextFileADO(Sheets('channel-list').Cells(3, 5) & '\' & feedName & '.xml', feedXml, 'utf-8')ADO方式讀取 '功能:讀取text文件(ADO方式) '輸入:輸入文件地址、字符集 '輸出:無 Function ReadFromFileADO(filePath As String, CharSet As String) As String Dim strRtn As String Set stm = New ADODB.Stream stm.Type = 2 '以本模式讀取 stm.Mode = 3 stm.CharSet = CharSet stm.Open stm.LoadFromFile filePath strRtn = stm.ReadText stm.Close Set stm = Nothing ReadFromFileADO = strRtn End Function![]() |
|
|
來自: Excel實用知識 > 《VBA與EXCEL》