ExcelなどのVBA(VB6)で、ファイルを無圧縮モードでzipにアーカイブするコードについて。(dllを使用しない直接バイナリを叩く方法)

前回は、VB.netにて、
http://oyk3865b.blog13.fc2.com/blog-entry-2168.html
ファイルを無圧縮モードで、zipにアーカイブするコードを
公開させて頂きましたが。


今回は、同じVisual Basicでも、少し異なり
VB.netと比べても、やや制約が多い、

Excelなどに付属する
Visual Basic for Applications

(Visual Basic 6系列)
においての、

ファイルを無圧縮モードで、zipにアーカイブするコード

公開させて頂きます。


回のコードは、
VB.net系列のコードと比較して、
Excelなど、VBA機能が付いたOfficeをお持ちの方なら、
すぐにお試しいただけるコードなので、
より身近なコードになっていると思います。
長ったるいコードではございますが、
よろしくお願いいたします。


今回のコードには私の思い違いなど、
不適切な部分が、多分に含まれますので、
適時、修正していただけると幸いでございます。


圧縮せず、そのままzipにアーカイブする方法ですが、
アーカイブする内容のファイルが、
jpegや、mp3、mp4など、すでに圧縮を受けているファイルならば
十分に実用的であると、私自身で考えております。

このコードの作成に関しまして、

◆『The structure of a PKZip file』
https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html


◆『APPNOTE.TXT - .ZIP File Format Specification』
https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT


◆『Free VB projects - Convert integer numbers to binary string and vice versa』
http://www.vbgold.com/vb-projects/integer-to-binary.shtml


◆『[VBA]CRC-32の計算 言語: VB.NET』
https://code.msdn.microsoft.com/office/VBACRC-32-dad7d087


以上のサイト様の情報を、参考・引用させていただきました。


また、今回のコードを含め
手作業でzipファイルを作成する様子を
動画としてまとめております。
http://www.nicovideo.jp/watch/sm27938612

それらも併せて、ご覧頂けると幸いでございます。



以下のコードは、
1.「Excel マクロ有効ブック」を、新規作成して、
2.「Alt」+「F11」キーを押し下げて、表示されるVBAのコード画面に、
3.そのまま、貼り付け、
4.コード中の「dousa_test()」にカーソルを、合わせて
5.「F5」キーを押し下げることで、
動作するようにしてあります。
snapshot011702384.jpg


また、同じコードを持った、
Excel2013の「Excel マクロ有効ブック」を、
https://box.yahoo.co.jp/guest/viewer?sid=box-l-whyh2ir4gsdpaezhglawq7fiyu-1001&uniqid=345ca1c6-cb2e-4355-98cf-b0c3b4450db1
↑こちらの中で、「zipアーカイブ・ルーチン公開用Book」として、
公開いたしております。



あくまで、公開用に必要部分だけに留め
端折ったコードですので、

不十分な部分が多々ございますので、
遂次、ご自身で、修正いただけると幸いです。









以上 大変手抜きで、大まかで不十分かつ、長ったるいコードで 誤っている部分も多々あると思いますが。
何かのお役に立てれば、幸いでございます。


また、同じコードで、さらに端折って
スリム化したものは、Yahoo!の知恵ノートにて、公開いたしております。
http://note.chiebukuro.yahoo.co.jp/detail/n371295


また、
crc32Table変数を、ファイルごとに、初期化していますが
本来は、初回の1回のみ行えばよいものでございます。

しかし、今回は、私の個人的な要請で
CRC-32の算出方法の明確化をしたいため、
まどろっこしくも、ファイルごとに初期化するコードとさせていただきました。
もし、実装される場合は、適当にコードを分割のほど
よろしくお願い申し上げます。

ありがとうございました。

crc32Tableの出力ダンプは、以下の通りです。
0
1996959894
-301047508
-1727442502
124634137
1886057615
-379345611
-1637575261
249268274
2044508324
-522852066
-1747789432
162941995
2125561021
-407360249
-1866523247
498536548
1789927666
-205950648
-2067906082
450548861
1843258603
-187386543
-2083289657
325883990
1684777152
-43845254
-1973040660
335633487
1661365465
-99664541
-1928851979
997073096
1281953886
-715111964
-1570279054
1006888145
1258607687
-770865667
-1526024853
901097722
1119000684
-608450090
-1396901568
853044451
1172266101
-589951537
-1412350631
651767980
1373503546
-925412992
-1076862698
565507253
1454621731
-809855591
-1195530993
671266974
1594198024
-972236366
-1324619484
795835527
1483230225
-1050600021
-1234817731
1994146192
31158534
-1731059524
-271249366
1907459465
112637215
-1614814043
-390540237
2013776290
251722036
-1777751922
-519137256
2137656763
141376813
-1855689577
-429695999
1802195444
476864866
-2056965928
-228458418
1812370925
453092731
-2113342271
-183516073
1706088902
314042704
-1950435094
-54949764
1658658271
366619977
-1932296973
-69972891
1303535960
984961486
-1547960204
-725929758
1256170817
1037604311
-1529756563
-740887301
1131014506
879679996
-1385723834
-631195440
1141124467
855842277
-1442165665
-586318647
1342533948
654459306
-1106571248
-921952122
1466479909
544179635
-1184443383
-832445281
1591671054
702138776
-1328506846
-942167884
1504918807
783551873
-1212326853
-1061524307
-306674912
-1698712650
62317068
1957810842
-355121351
-1647151185
81470997
1943803523
-480048366
-1805370492
225274430
2053790376
-468791541
-1828061283
167816743
2097651377
-267414716
-2029476910
503444072
1762050814
-144550051
-2140837941
426522225
1852507879
-19653770
-1982649376
282753626
1742555852
-105259153
-1900089351
397917763
1622183637
-690576408
-1580100738
953729732
1340076626
-776247311
-1497606297
1068828381
1219638859
-670225446
-1358292148
906185462
1090812512
-547295293
-1469587627
829329135
1181335161
-882789492
-1134132454
628085408
1382605366
-871598187
-1156888829
570562233
1426400815
-977650754
-1296233688
733239954
1555261956
-1026031705
-1244606671
752459403
1541320221
-1687895376
-328994266
1969922972
40735498
-1677130071
-351390145
1913087877
83908371
-1782625662
-491226604
2075208622
213261112
-1831694693
-438977011
2094854071
198958881
-2032938284
-237706686
1759359992
534414190
-2118248755
-155638181
1873836001
414664567
-2012718362
-15766928
1711684554
285281116
-1889165569
-127750551
1634467795
376229701
-1609899400
-686959890
1308918612
956543938
-1486412191
-799009033
1231636301
1047427035
-1362007478
-640263460
1088359270
936918000
-1447252397
-558129467
1202900863
817233897
-1111625188
-893730166
1404277552
615818150
-1160759803
-841546093
1423857449
601450431
-1285129682
-1000256840
1567103746
711928724
-1274298825
-1022587231
1510334235
755167117


スポンサーサイト

テーマ : プログラミング - ジャンル : コンピュータ

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー) URL

プロフィール





最新記事
最新コメント
最新トラックバック



月別アーカイブ
カテゴリ