Printer.PaintPicture LoadPicture(ファイル名)

このように画像を印刷しようとする時、ファイルがJPEG形式だと、スプーラに送られる容量が実際のファイルの6~7倍になってしまいます。
おそらくビットマップに展開してから、送っているのだと思います。
プリンタにビットマップ展開の機能があるので、JPEGのまま転送したいのです。
ネットワークプリンタであるため、転送時間が大変掛かってしまうのでなんとかしたいのです。
何か良い方法はないでしょうか。
市販のソフトやコンポーネント、ライブラリなどを使ってもいいです。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>プリンタにビットマップ展開の機能があるので、JPEGのまま転送したいのです。



その機能は初耳です。
ちなみに機種は何ですか?
もしかして、その機種独自の方式でJPEGで転送するのでは?
そうなら、印刷とは全く違う話です。
# メーカーのHPに情報はありませんか?

この回答への補足

回答ありがとうございました。
すみませんが、私も、人に聞いた程度なので確かなことはわかりません。
プリンタはリコーの製品で、プリンタの機種などは今はちょっと確認出来ないんです。
要点としましては、同じJPEGファイルをExcellやAccessなどで印刷する場合と転送時間が全然違うということです。
容量的に、VBからだとビットマップ展開をしてから転送し、Office製品はJPEGのまま転送しているのではないかと、推測したのですが。
そもそもJPEGのまま転送することは出来るのでしょうか?

補足日時:2002/02/22 12:14
    • good
    • 0
この回答へのお礼

遅くなりましたが、ポイント発行させてもらいます。
とりあえず、別の方法を考えてみます。
ありがとうございました。

お礼日時:2002/02/26 17:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

Qピクチャボックス, PaintPicture 内 LoadPicture関数の使い方

For IA& = Picture02.LBound To Picture02.UBound
Picture02(IA&).AutoRedraw = True
Picture02(IA&).AutoSize = False
Picture02(IA&).ScaleMode = vbPixels
Picture02(IA&).Cls
Next IA&
でSub Form_Load()にて初期化したあとで

IC& = Index
Picture02(IC&).ScaleMode = vbPixels
Picture02(IC&).PaintPicture LoadPicture(InFile$), 0, 0, YokoHaba&, TateTakasa&
Picture02(IC&).Refresh
と読み取ったときに
EOIセグメントが存在しないJPGファイルをInFile$に指定したのときにPicture02(IC&).PaintPictureでハング(CPU=100%, 無応答)します。
ハングアップの検出方法、又はハングアップしない参照方法などの対応をご存知の方いらっしゃいませんか。
Open InFile$ -Close でEOIセグメントの存在をチェックするとわずか50KBのファイルに約1秒(GW-Basic, 80286並の速度)使ってしまいます。より高速な方法を探しています。

OS Win2000 SP2
Visual basic 6.0 SP5
「EOIセグメントが存在しないJPGファイル」はクライアントからサーバーへの送信途中で回線を物理的に切断することにより作成したものです。

For IA& = Picture02.LBound To Picture02.UBound
Picture02(IA&).AutoRedraw = True
Picture02(IA&).AutoSize = False
Picture02(IA&).ScaleMode = vbPixels
Picture02(IA&).Cls
Next IA&
でSub Form_Load()にて初期化したあとで

IC& = Index
Picture02(IC&).ScaleMode = vbPixels
Picture02(IC&).PaintPicture LoadPicture(InFile$), 0, 0, YokoHaba&, TateTakasa&
Picture02(IC&).Refresh
と読み取ったときに
EOIセグメントが存在しないJPGファイルをInFile$に指定したのときにP...続きを読む

Aベストアンサー

こんにちは。KenKen_SP です。

ハングアップの検出方法...これは知りません。で、もう片方の EOI セグメント。
これは Jpeg の End Of Image マーカのことですね?

> Open InFile$ -Close でEOIセグメントの存在をチェックするとわずか50KBの
> ファイルに約1秒(GW-Basic, 80286並の速度)使ってしまいます。

バイナリのヘッダ(SOIマーカ)とフッタ(EOIマーカ)だけ見た簡易チェッカーでは
ダメですかね...。これなら VB 標準のファイル I/O で約 700 KBの JPEG でも
計測不能な瞬時で判定できますけど。

(CPU: P4-2.4GHz Mem:512M WinXP VB6.0 or VBA)

適当に書いたコードですけど、参考になりますか?

' // テスト用時間計測 API
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

' // テストプロシージャ
Sub TestProc()
  Dim lRet As Long
  Dim sMsg As String
  Dim t  As Long
  t = timeGetTime()
  lRet = JpegChecker("C:\sample.jpg")
  t = (timeGetTime() - t) / 1000
  Select Case lRet
    Case -1: sMsg = "ファイルオープンエラー"
    Case 0: sMsg = "Jpeg ではない(破損含む)"
    Case 1: sMsg = "Jpeg だと思う"
  End Select
  Debug.Print "Time:= " & Format$(t, "#,###.000sec")
  Debug.Print "Result:= " & sMsg
End Sub

' // 簡易 Jpeg チェッカー
Private Function JpegChecker(ByVal FilePath As String) As Long

  ' 戻り値 1:Jpeg らしい 0:Jpeg ではない -1:ファイルが開けない
  
  Const JPEG_FILEHEADER As String = "FFD8"
  Const JPEG_FILEFOOTER As String = "FFD9"

  Dim Buf() As Byte
  Dim n   As Integer
  Dim i   As Long
  JpegChecker = -1
  If Dir$(FilePath) <> "" Then
    n = FreeFile()
    On Error GoTo ERROR_HANDLER
    Open FilePath For Binary Access Read As #n
      ReDim Buf(LOF(n) - 1)
      Get #n, , Buf
    Close #n
    On Error GoTo 0
    i = UBound(Buf) - 1
    ' Check Jpeg SOI Marker And EOI Marker
    If HexDump(Buf, 0, 2) = JPEG_FILEHEADER And _
      HexDump(Buf, i, 2) = JPEG_FILEFOOTER Then
      JpegChecker = 1
    Else
      JpegChecker = 0
    End If
    Erase Buf
  End If
  Exit Function
ERROR_HANDLER:
  Err.Clear
  Close #n
End Function

' // 16進ダンプ
Private Function HexDump( _
  ByRef Buf() As Byte, _
  ByVal Pos As Long, _
  ByVal Length As Long, _
  Optional ByVal LitteleEdian As Boolean = True _
) As String

  Dim i  As Long
  Dim sTmp As String
  Dim sRet As String
  For i = Pos To Pos + Length - 1
    sRet = sRet & Right$("0" & Hex$(Buf(i)), 2)
  Next
  If LitteleEdian Then
    HexDump = sRet
  Else
    For i = 1 To Len(sRet) Step 2
      sTmp = sTmp & Right$(sRet, 2)
      sRet = Left(sRet, Len(sRet) - 2)
    Next i
    HexDump = sTmp
  End If
End Function

こんにちは。KenKen_SP です。

ハングアップの検出方法...これは知りません。で、もう片方の EOI セグメント。
これは Jpeg の End Of Image マーカのことですね?

> Open InFile$ -Close でEOIセグメントの存在をチェックするとわずか50KBの
> ファイルに約1秒(GW-Basic, 80286並の速度)使ってしまいます。

バイナリのヘッダ(SOIマーカ)とフッタ(EOIマーカ)だけ見た簡易チェッカーでは
ダメですかね...。これなら VB 標準のファイル I/O で約 700 KBの JPEG でも
計測不能な瞬時で判定できますけど...続きを読む

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

Qフォームにビットマップを表示

PaintPicture LoadPicture("c:winnt\winnt.bmp"), _
0, _
0, _
ScaleWidth, _
ScaleHeight

  とかけば最大化で表示はするのですが
  画面のプロパティで背景を指定するときに表示位置の
  並べて表示みたいにしたいのですがどうすればできますでしょうか
  また、そのときに1つ1つのおおきさのしていもできるのですか
  教えてください。
  よろしくお願いします。

Aベストアンサー

あっサンプル出てきましたね。
ぼくも作ってみました。

多分の質問の文章からすると、拡大縮小を行いたいのでは?と思って、縮尺を変えた画像タイル張りを行っております。


画像は#1の方と一緒で、一度ピクチャボックスに読み込んで、その画像を操作しています。
何度もLoadPictureをするより効果的です。

ファイルは定数で宣言しています。
画像の大きさは、呼び込んだファイルの大きさのX,Y方向の0.2倍に設定しています。(変数:sngScale)
適当な値に変更してください。


必要なもの
フォーム
コマンドボタン1
ピクチャボックス1(Visible = False)


Private Const PIC_FILE As String = "c:\winnt\system32\setup.bmp"

Private Sub Command1_Click()
  Dim sngScale  As Single  '元の絵の縮小拡大率
  
  Dim lngPicW   As Long   '呼び込んだ絵の幅
  Dim lngPicH   As Long   '呼び込んだ絵の高さ
  
  Dim lngX  As Long '描画時のX座標
  Dim lngY  As Long '描画時のY座標
  Dim lngW  As Long '描画時の幅
  Dim lngH  As Long '描画時の高さ

  'もとの絵からの縮小拡大率をセット
  sngScale = 0.2

  'ピクチャの
  With Me
    With .Picture1
      'ピクチャボックスに絵を呼び込む
      .AutoSize = True
      .Picture = LoadPicture(PIC_FILE)
      
      'ピクチャボックスのサイズより、絵のサイズを得る
      lngPicW = .ScaleWidth
      lngPicH = .ScaleHeight
    End With
    
    '描画時の絵の幅高さを得る
    lngW = sngScale * lngPicW
    lngH = sngScale * lngPicH
    
    '描画のY座標初期化
    lngY = 0
    Do
      '描画のX座標初期化
      lngX = 0
      Do
        '描画する
        Call .PaintPicture(.Picture1.Picture, lngX, lngY, lngW, lngH, 0, 0, lngPicW, lngPicH, vbSrcCopy)
        
        'X座標を描画時の幅の分、X方向にずらす
        lngX = lngX + lngW
        
      'X座標がフォームの幅を超えた時ループを抜ける
      Loop While lngX < .ScaleWidth
      
      'Y座標を描画時の高さの分、Y方向にずらす
      lngY = lngY + lngH
    
    'Y座標がフォームの高さを超えた時ループを抜ける
    Loop While lngY < .ScaleHeight
  End With
End Sub


余談ですが、描画の命令はPaintPictureが標準でVBにありますが、それ以外にWindowsAPIでBitBltやStretchBltというのがあります。
検索サイトで「描画/方法」で検索をしたらたぶん出てくるとは思いますが、今回はPaintPicureが最も適しています。それは画像の拡大縮小の処理が一番早いからです。
逆に、縮尺を変えずに画像を転送するのであれば、BitBltが適しています。
あくまで余談ですが・・・

あっサンプル出てきましたね。
ぼくも作ってみました。

多分の質問の文章からすると、拡大縮小を行いたいのでは?と思って、縮尺を変えた画像タイル張りを行っております。


画像は#1の方と一緒で、一度ピクチャボックスに読み込んで、その画像を操作しています。
何度もLoadPictureをするより効果的です。

ファイルは定数で宣言しています。
画像の大きさは、呼び込んだファイルの大きさのX,Y方向の0.2倍に設定しています。(変数:sngScale)
適当な値に変更してください。


必要なもの
...続きを読む

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

QVB.NET2008 ビットマップ同時印刷について

お世話になります。
現在、VB.NET2008でbmp形式のファイルの印刷処理を行おうとしています。

やりたいこと:
2つの.bmp ( 一つは帳票.bmp、もう一つはバーコード.bmp ) があります。
印刷を実行すると、帳票.bmpの右上にバーコード.bmpを表示して印刷したいです。

何分、初心者で説明もヘタですみません。
お分かりになる方、ご教授いただけると助かります。

よろしくお願いいたします。

Aベストアンサー

参考URLのページで
「印刷する画像の大きさと位置を指定」を必要な個数行えばよいでしょう。
※画像とバーコードとで、Imageの変数名は分けておいたほうがよい。

参考URL:http://blog.livedoor.jp/akf0/archives/51516420.html

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

Q64ビット環境で作成したアプリは32ビットで動くか

Windows7 64bitを使用しています。
これにVS2008をインストールし、VB、C#でアプリを作成しました。
このアプリは32ビットOSで動作するでしょうか?

動作しないとしたら、32ビットOSでも動作できるアプリを吐き出す設定はどうすればいいでしょうか?

Aベストアンサー

http://www.gan.st/gan/blog/index.php?itemid=3860

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

Q1バイト文字の上位4ビット・下位4ビットの入れ替え方法を教えて下さい

あるパスワードをテキストファイルに書き込む処理です。
そのままだと、パスワードの意味が無いので、上位4ビットと下位4ビットを入れ替えて保存しようと思います。
上位・下位それぞれ4ビットシフトするところまでは出来ました。

 Dim a As Integer
 Dim a1 As Integer
 Dim a2 As Integer
 a = Asc("a")
 a1 = a \ 2 ^ 4
 a2 = a * 2 ^ 4
 MsgBox (Hex(a1))
 MsgBox (Hex(a2))

が、それを8ビットに戻す方法が分かりません。
また、パスワードは1バイト文字による文字列ですが、文字列長分を1バイトずつバッファに読み込んで、変換し、同サイズのバッファに詰め込んでいく処理も分かりません。
以前、MS-C(MSDOS上のC言語)を少しやったので、それでなら分かるのですが、VBは全くの初心者で、調べても調べても見当がつきません。
どうか教えて下さい。
宜しくお願い致します。

Aベストアンサー

●1バイト文字の上位4ビット・下位4ビットの入れ替え
参考。理解・確認のため余分なものを入れている。
骨子は*****のところ。
Sub test01()
h = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", _
"9", "A", "B", "C", "D", "E", "F")
a = Asc("z")
MsgBox "コード" & a
x = a Mod 16 '*****
y = Int(a / 16) '*****
MsgBox "16進表示" & h(x) & " " & h(y)
'もとの数のビット列
s = ""
x = a
For i = 1 To 8
y = x Mod 2
s = y & s
x = Int(x / 2)
Next i
MsgBox "もとの数のビット列" & s
'----
'上位・下位4ビット反転
x = a Mod 16
y = Int(a / 16)
z = x * 16 + y '*****
MsgBox "上位・下位4ビット反転のコード" & z
x = z Mod 16
y = Int(z / 16)
MsgBox "16進表示" & h(x) & " " & h(y)
'------上位・下位4ビット反転のビット列
s = ""
x = z
For i = 1 To 8
y = x Mod 2
s = y & s
x = Int(x / 2)
Next i
MsgBox "上位・下位4ビット反転" & s
End Sub
●文字列長分を1バイトずつバッファに読み込んで、変換し、同サイズのバッファに詰め込んでいく処理も分かりません
上記でもやってますが、
S=""
For i=1 to 文字列長
Xには1バイト分上位・下位4ビット反転した結果を入れる
S=S & X
Next i
を使えば良いです。
下位桁から処理なら
S= X & S
にする。

●1バイト文字の上位4ビット・下位4ビットの入れ替え
参考。理解・確認のため余分なものを入れている。
骨子は*****のところ。
Sub test01()
h = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", _
"9", "A", "B", "C", "D", "E", "F")
a = Asc("z")
MsgBox "コード" & a
x = a Mod 16 '*****
y = Int(a / 16) '*****
MsgBox "16進表示" & h(x) & " " & h(y)
'もとの数のビット列
s = ""
x = a
For i = 1 To 8
y = x Mod 2
s = y & s
x = Int(x / 2)
Next i
MsgBo...続きを読む


人気Q&Aランキング

おすすめ情報