2012-05-26 72 views
-1

我使用openoffice calc宏將十六進制轉換爲十進制後寫入文本文件,然後對結果使用char函數。當我在openoffice中使用函數 - 在十六進制中轉換'88'時,請參閱下面的內容。它正確顯示在論壇結果中。在寫入文本時打印問號

char

但是,如果我們打開文本文件運行下面的宏,它做同樣的事情後,「?」被展示。我怎樣才能糾正這一點,並獲得文本文件中打印的確切值?

Sub Sheet2 

Dim AsciiString As String 
Dim t As String 
Dim DataArray As Variant 
intFH = FreeFile() 
Open "e:\Temp.txt" For Output As intFH 
t= "&H" & "88" 
AsciiString = AsciiString & chr(cdec(t)) 
Print #intFH, AsciiString 
close #intFH 
End Sub 

回答

0

您是否需要針對Openoffice(根據問題的文本和標籤)或Excel(根據函數和vba代碼)的解決方案?

關於OpenOffice的/ LibreOffice的:您的宏的作品有兩個細微的修改:

  • 只要改變的變量t類型Long,並
  • 刪除cdec()函數調用 - 有一個在OpenOffice的Calc中無此功能,它顯然是來自Excel VBA宏的一種人造物品。

現在,如果你使用ASCII碼(十六進制5E /十進制94^,它將寫入^到文件:

Sub Sheet2 
    Dim AsciiString As String 
    Dim t As Long 
    intFH = FreeFile() 
    Open "/tmp/Temp.txt" For Output As intFH 
    t= "&H" & "5E" 
    AsciiString = chr(t) 
    Print #intFH, AsciiString 
    close #intFH 
End Sub 
+0

嗨,這個公式 「」 作爲結果。公式是= CHAR(HEX2DEC(「88」))。然而,即使在我將原始代碼中的t類型改爲long之後,我在文本文件中得到了一個問號。 – Suresh

+0

我想這是由於**' cdec()'**你正在應用到十六進制字符串的函數。AFAIK在openoffice中沒有這樣的公式 - 這就是爲什麼我問:做喲你需要一個基於excel的解決方案或基於openoffice的解決方案?我的解決方案(沒有'cdec()')可以在openoffice下正常工作。接下來的一點是:你需要**普通的ASCII **編碼還是ISO編碼? '&H5E'是'^'的ASCII十六進制。 – tohuwawohu

+0

您已使用/顯示的字符是= CHAR(94)。我在談論= CHAR(136),並且應該使用openoffice在文本文件中以ascii編碼打印。 – Suresh