- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
- Go to OOobbs/96.
** [[OOobbs/96]] [#uabfa37a]
-''サマリ'': ファイルから8ビットずつ読み込む方法
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[Kuma]]
-''投稿日'': 2006-03-30 (木) 16:58:12
*** 質問 [#a3f23694]
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
*** 回答 [#f9b45c8a]
-やっと分かりました -- [[Kuma]] &new{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
#comment