Top > OOobbs > 96

OOobbs/96 Edit

  • サマリ: ファイルから8ビットずつ読み込む方法
  • 環境: Calc
  • 状態: 解決
  • 投稿者: Kuma?
  • 投稿日: 2006-03-30 (木) 16:58:12

質問 Edit

OOo2.0.1で指定ファイルのデータを8ビットずつ読み込み、calcのセルにHEX表示するマクロを下記の様に作りました。 ExcelVBAの場合は問題無く動作して表示出来たのですが、calcでは2行目の

Dim bit8 As Byte

でエラー『不明なデータの種類』になってしまいます。calcでは8ビットずつ読み込む方法はどの様にするのでしょうか。宣しくお願い致します。

Sub CommandButton1_Click()

   Dim bit8 As Byte
   Dim r As Integer, n As Integer
   Dim dumpdata As String, bitdata As String
   oSheet1=ThisComponent.getSheets.getByName("操作シート")   
   oSheet2=ThisComponent.getSheets.getByName("出力シート")   
   filepath =oSheet1.getCellRangeByName("b10").String
   If filepath = "" Then
      MsgBox "ファイルパスが設定されていません", 16
      '[b10].Select
      Exit Sub
   End If
   Open filepath For Binary Access Read As #1
   r = 1
   n = 0
   dumpdata = ""
   Do
      Get #1,,bit8
      If bit8 < 16 Then
         bitdata = "0" & Hex$(bit8)
      else
         bitdata =Hex$(bit8)
      End If
      dumpdata = dumpdata & bitdata & " "
      If EOF(1) = True Then
         oSheet2.getCellByPosition(0,r-1).String = dumpdata
         r = r + 1
         Exit Do
      End If
      n = n + 1
      If n >= 24 Then
         oSheet2.getCellByPosition(0,r-1).String = dumpdata
         r = r + 1
         n = 0
         dumpdata = ""
      End If
   Loop
   Close #1
   MsgBox "完了しました。全部で" & Str(r - 1) & " 行有ります。",64

End Sub

回答 Edit

  • やっと分かりました -- Kuma? 2006-04-17 (月) 22:06:34

下記のコードで読めました。

Sub ByteRead

  oFileAcc=CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
  oInputStream=CreateUnoService("com.sun.star.io.DataInputStream")
  vData=oFileAcc.openFileRead(sFileURL)'<---sFileURLは読み込みたいファイルのURL名
  oInputStream.setInputStream(vData)
  on error goto error1
  Do
    bit8=oInputStream.readByte() And &H000000FF
    MsgBox Hex$(bit8)
  Loop
error1:

End Sub



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes