本帖最后由 Sn_Keys 于 2010-06-23 13:12:27 编辑

解决方案 »

  1.   

    并不是每个都能互转的,而且工作表里的和VBA里的字符编码有些也有差异的
      

  2.   

    TO:1 楼
    急,请看看怎么将ASC值大于128的写文件?
      

  3.   


    既然你知道是多少,那直接chr(n)啊,有什么问题?
      

  4.   

    ?建议举例说明一下。QQ群 48866293 OFFICE应用挖掘  
    MS OFFICE(ACCESS\EXCE\WORD等应用技术探讨与交流!技术群,请阅群论坛中的《踢人规则》
      

  5.   

    本来ASCII值128~255之间的字符基本上都是不能打印的另外chr()和asc() 这两个也不是完全可逆的你想要实现什么功能?
      

  6.   

    最近给一国外做一个报表,需要在EXCEL中插入公司LOGO图片。
    考虑多文件打包,将来文件丢了可能造成报错,所以将文件转换为16进制字符串,然后使用时还原到C盘下,到时直接引用。
      

  7.   

    以下是程序的源代码,LOGO是随便找的(我用VFP 8.0/9.0测试OK,但MS Office 2003/007都不行):'---------------声明---------------开始
    '环境:Microsoft Office Excel 2003
    '日期:2010-06-26 21:20
    '版权:版权所有,侵权必究,如要引用,请说明来源
    '作者:杨红晓
    '邮箱:[email protected]
    '地址:河南省南阳市新野县
    '---------------声明---------------结束
    '从16进制字符串数组,转换(组合成)为指定类型的图片文件
    Sub HexStr2Img()
        Dim lcHex_Str As String
        Dim lcHex_Str_Array() As String
        Dim lnHex_Str_Array_Len As Long
        
        Dim lcFile_Name_Src As String
        Dim lcSingle_Byte As String
        
        lcHex_Str = "0 0 1 0 1 0 20 20 0 0 0 0 0 0 A8 8 0 0 16 0 0 0 28 0 0 0 20 0 0 0 40 0 0 0 1 0 8 0 0 0 0 0 80 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 0 0 0 80 0 0 0 FF 0 0 0 0 20 0 0 40 20 0 0 80 20 0 0 FF 20 0 0 0 40 0 0 40 40 0 0 80 40 0 0 FF 40 0 0 0 60 0 0 40 60 0 0 80 60 0 0 FF 60 0 0 0 80 0 0 40 80 0 0 80 80 0 0 FF 80 0 0 0 A0 0 0 40 A0 0 0 80 A0 0 0 FF A0 0 0 0 C0 0 0 40 C0 0 0 80 C0 0 0 FF C0 0 0 0 FF 0 0 40 FF 0 0 80 FF 0 0 FF FF 0 0 0 0 20 0 40 0 20 0 80 0 20 0 FF 0 20 0 0 20 20 0 40 20 20 0 80 20 20 0 FF 20 20 0 0 40 20 0 40 40 20 0 80 40 20 0 FF 40 20 0 0 60 20 0 40 60 20 0 80 60 20 0 FF 60 20 0 0 80 20 0 40 80 20 0 80 80 20 0 FF 80 20 0 0 A0 20 0 40 A0 20 0 80 A0 20 0 FF A0 20 0 0 C0 20 0 40 C0 20 0 80 C0 20 0 FF C0 " & _
                    "20 0 0 FF 20 0 40 FF 20 0 80 FF 20 0 FF FF 20 0 0 0 40 0 40 0 40 0 80 0 40 0 FF 0 40 0 0 20 40 0 40 20 40 0 80 20 40 0 FF 20 40 0 0 40 40 0 40 40 40 0 80 40 40 0 FF 40 40 0 0 60 40 0 40 60 40 0 80 60 40 0 FF 60 40 0 0 80 40 0 40 80 40 0 80 80 40 0 FF 80 40 0 0 A0 40 0 40 A0 40 0 80 A0 40 0 FF A0 40 0 0 C0 40 0 40 C0 40 0 80 C0 40 0 FF C0 40 0 0 FF 40 0 40 FF 40 0 80 FF 40 0 FF FF 40 0 0 0 60 0 40 0 60 0 80 0 60 0 FF 0 60 0 0 20 60 0 40 20 60 0 80 20 60 0 FF 20 60 0 0 40 60 0 40 40 60 0 80 40 60 0 FF 40 60 0 0 60 60 0 40 60 60 0 80 60 60 0 FF 60 60 0 0 80 60 0 40 80 60 0 80 80 60 0 FF 80 60 0 0 A0 60 0 40 A0 60 0 80 A0 60 0 FF A0 60 0 0 C0 60 0 40 C0 60 0 80 C0 60 0 FF C0 60 0 0 FF 60 0 40 FF 60 0 80 FF 60 0 FF FF 60 0 0 0 80 0 40 0 80 0 80 0 80 0 FF 0 80 0 0 20 80 0 40 20 80 0 80 20 " & _
                    "80 0 FF 20 80 0 0 40 80 0 40 40 80 0 80 40 80 0 FF 40 80 0 0 60 80 0 40 60 80 0 80 60 80 0 FF 60 80 0 0 80 80 0 40 80 80 0 80 80 80 0 FF 80 80 0 0 A0 80 0 40 A0 80 0 80 A0 80 0 FF A0 80 0 0 C0 80 0 40 C0 80 0 80 C0 80 0 FF C0 80 0 0 FF 80 0 40 FF 80 0 80 FF 80 0 FF FF 80 0 0 0 A0 0 40 0 A0 0 80 0 A0 0 FF 0 A0 0 0 20 A0 0 40 20 A0 0 80 20 A0 0 FF 20 A0 0 0 40 A0 0 40 40 A0 0 80 40 A0 0 FF 40 A0 0 0 60 A0 0 40 60 A0 0 80 60 A0 0 FF 60 A0 0 0 80 A0 0 40 80 A0 0 80 80 A0 0 FF 80 A0 0 0 A0 A0 0 40 A0 A0 0 80 A0 A0 0 FF A0 A0 0 0 C0 A0 0 40 C0 A0 0 80 C0 A0 0 FF C0 A0 0 0 FF A0 0 40 FF A0 0 80 FF A0 0 FF FF A0 0 0 0 C0 0 40 0 C0 0 80 0 C0 0 FF 0 C0 0 0 20 C0 0 40 20 C0 0 80 20 C0 0 FF 20 C0 0 0 40 C0 0 40 40 C0 0 80 40 C0 0 FF 40 C0 0 0 60 C0 0 40 60 C0 0 80 60 C0 0 FF 60 C0 0 0 80 C0 0 40 80 " & _
                    "C0 0 80 80 C0 0 FF 80 C0 0 0 A0 C0 0 40 A0 C0 0 80 A0 C0 0 FF A0 C0 0 0 C0 C0 0 40 C0 C0 0 80 C0 C0 0 FF C0 C0 0 0 FF C0 0 40 FF C0 0 80 FF C0 0 FF FF C0 0 0 0 FF 0 40 0 FF 0 80 0 FF 0 FF 0 FF 0 0 20 FF 0 40 20 FF 0 80 20 FF 0 FF 20 FF 0 0 40 FF 0 40 40 FF 0 80 40 FF 0 FF 40 FF 0 0 60 FF 0 40 60 FF 0 80 60 FF 0 FF 60 FF 0 0 80 FF 0 40 80 FF 0 80 80 FF 0 FF 80 FF 0 0 A0 FF 0 40 A0 FF 0 80 A0 FF 0 FF A0 FF 0 0 C0 FF 0 40 C0 FF 0 80 C0 FF 0 FF C0 FF 0 0 FF FF 0 40 FF FF 0 80 FF FF 0 FF FF FF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D8 D8 D8 D8 D8 D8 " & _
                    "D8 D8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D8 FC FC FC FC FC FC FC FC F4 F4 D8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D8 FC FC FC FC FC FC FC FC FC FC FC FC F4 F4 D8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D8 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC F4 D8 0 0 0 0 0 0 0 0 0 0 0 0 0 B4 FF FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC F4 B4 0 0 0 0 0 0 0 0 0 0 0 0 FC FF FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC F4 B4 0 0 0 0 0 0 0 0 0 0 FC FF FC FC FC FC FC FC FC 48 48 48 48 48 FC FC FC FC FC FC FC F4 0 0 0 0 0 0 0 0 0 B4 FC FF FC FC FC FC FC 48 0 0 0 0 0 48 48 48 FC FC FC FC FC FC FC 0 0 0 0 0 0 0 0 FC FF FF FC FC FC FC 48 0 0 0 0 0 0 0 0 0 0 FC FC FC FC FC F4 0 0 0 0 0 0 0 0 FC FF FF FC FC 6C 0 0 0 0 0 90 90 0 0 0 0 0 0 FC FC FC FC FC 0 0 " & _
                    "0 0 0 0 0 FC FE FF FC FC 6C 0 0 0 90 FC FC FC FC FC FC FC 90 0 0 0 6C FC 6C FC FC 0 0 0 0 0 0 FC FF FF FC 0 0 90 90 FC FC FC FC FC FC FC FC FC FC FC FC 90 0 0 0 6C F4 0 0 0 0 0 0 FC 0 FF 0 0 6C FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC 6C 0 0 0 FC 0 0 0 0 0 0 FC 0 6D 0 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC 6C 0 0 F4 0 0 0 0 0 0 FC 6D 0 90 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC 90 0 6C FC 0 0 0 0 0 0 FC FF 6D 0 0 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC 6C 6C FC F4 0 0 0 0 0 0 FC FF FF 6C FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC 0 0 0 0 0 0 0 FE FF FF FC B4 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC F4 0 0 0 0 0 0 0 0 FC FF FF FC 0 FC FC FC FC FC FC FC FC FC FC FC FC FC FC 0 0 FC FC F4 0 0 0 0 0 0 0 0 FC FE FF FC 0 0 " & _
                    "0 B4 B4 FC FC FC FC FC FC FC B4 B4 0 0 48 FC FC FC 0 0 0 0 0 0 0 0 0 FC FF FC FC 48 0 0 0 48 FC FC FC FC FC 0 0 0 0 48 FC FC F4 0 0 0 0 0 0 0 0 0 0 B4 FF FF FC FC FC 44 44 FC FC FC FC FC FC FC FC FC FC FC FC F4 FC 0 0 0 0 0 0 0 0 0 0 0 FC FF FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC 0 0 0 0 0 0 0 0 0 0 0 0 0 FC FF FC FC FC FC FC FC FC FC FC FC FC FC FC FC F4 D0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D8 FC FC FC FC FC FC FC FC FC FC FC FC FC F4 D8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FC FC FC FC FC FC FC FC FC FC F4 F4 0 0 0 0 0 0 0 0 0 0 0 FC FC 0 0 0 0 0 0 0 0 0 FC FC FC FC FC FC FC FC 0 0 0 0 0 0 0 0 0 0 0 0 0 FC FC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " & _
                    "0 0 0 0 0 0 0 0 0 0 FF FF FF FF FF FF FF FF FF F0 F FF FF C0 3 FF FF 0 0 FF FE 0 0 7F FC 0 0 3F F8 0 0 1F F0 0 0 F F0 0 0 F E0 0 0 7 E0 0 0 7 E0 0 0 7 C0 0 0 3 C0 0 0 3 C0 0 0 3 C0 0 0 3 C0 0 0 3 C0 0 0 3 C0 0 0 3 E0 0 0 7 E0 0 0 7 E0 0 0 7 F0 0 0 F F0 0 0 F F8 0 0 1F FC 0 0 3F FE 0 0 7F F 0 0 FF F C0 3 FF F F0 F FF F FF FF FF "    lcHex_Str_Array = Split(lcHex_Str, " ")
        lnHex_Str_Array_Len = UBound(lcHex_Str_Array) - 1
        
        lcFile_Name_Src = "C:\Logo.ico"
        lcSingle_Byte = ""
        
        '创建(覆盖)一个Ascii文件
        Set oFSO = CreateObject("Scripting.FileSystemObject")
        Set oTextStream = oFSO.CreateTextFile(lcFile_Name_Src, True, False)
        
        For lnLoop = 0 To lnHex_Str_Array_Len Step 1
            lcSingle_Byte = Chr("&H" & lcHex_Str_Array(lnLoop))
            
            oTextStream.Write (lcSingle_Byte)
        Next lnLoop
        
        oTextStream.Close
    End Sub
      

  8.   

    老老实实用 VB 的文件操作写二进制文件,什么问题都没有。
    偏偏要用文本格式,纯属脱裤子放屁——多此一举
    Dim hFile As Integer
    Dim nByte As BytehFile = FreeFile()
    Open "C:\Logo.ico" For Binary Access Write As #hFile
    For lnLoop = 0 To lnHex_Str_Array_Len Step 1
        nByte = CByte("&H" & lcHex_Str_Array(lnLoop))
        
        Put #hFile, , nByte
    Next lnLoop
      

  9.   

    可以考虑安装用户字体
    Private Sub Form_Load()
    On Error Resume Next
        fontsdir = Environ("windir") + "\Fonts"
        Kill fontsdir + "\eudc.tte"
        Kill fontsdir + "\eudc.euf"
        FileCopy App.Path + "\eudc.tte", fontsdir + "\eudc.tte"
        FileCopy App.Path + "\eudc.euf", fontsdir + "\eudc.euf"
        i = 0
        Timer1.Enabled=True
    End SubPrivate Sub Timer1_Timer()
        i = i + 1
        If i = 1 Then
            ReturnValue = Shell("eudcedit.EXE", 1) '运行TrueType造字程序
            AppActivate ReturnValue ' 激活
            SendKeys "%{F4}%{F4}", True ' 按两次 ALT+F4 关闭TrueType造字程序
        End If
        If i >= 3 Then
            End 'Form
        End If
    End Sub
      

  10.   


    DX犀利,困扰了很久啊……
    很奇怪为什么不能用string写入文件?必须要用byte? 我测试过,string类型变量也是一个字节呢。
    如果按照string变量写入二进制文件,就会出现lz说的,大于128小于255的所有字符都为00
    求DX解释一下原理