質問させて下さい。
Lhaplus などを使用(導入)することなく、Windows7の標準機能のみでExcelファイルをZipファイルに圧縮する事は可能なのでしょうか?
マクロの動作としては、
1.作業中のBOOKから必要なシートのみをコピーし別BOOKとして保存
2.別BOOKとして保存したファイルを、同一フォルダ内にZipファイルとして圧縮
3.別BOOKを削除
上の1.と3.は出来たのですが、
2.の圧縮についてが、理解できずにおります。
自分なりに調べたところ、Lhaplus をShell関数などで指定し圧縮をする方法などは紹介されていたのですが、Windows7の標準機能のみZip圧縮を行う事は可能なのでしょうか?
ご存知の方がいましたら、ご教授いただければ幸いです。
No.3ベストアンサー
- 回答日時:
こんにちは。
>2.別BOOKとして保存したファイルを、同一フォルダ内にZipファイルとして圧縮
というのは、2007以降のOffice ファイルは、拡張子が変わっただけで、本来は、Zipファイルなのです。あえて、Zipで圧縮する必要があるか分かりませんが、アーカイブに格納ということで、やってみました。
#2さんのリンク先とは、仕組み自体は同じですが、
Set Shell = CreateObject("Shell.Application")
zFolder.CopyHere sFolderItem
で、ZIPフォルダが認識しないことでした。そこで、何度もやった結果、事前に参照設定することで解決しました。
'//
Sub Files2Zip()
Dim myPath As String
Dim ZipFName As String
Dim ZipFNameB As String
Dim FName As Variant
'要参照設定
'Microsoft Shell Controls and Automation
Dim objShell As Shell32.Shell 'レイトバインディングだと抜けがあります。
Dim ar As Variant, fn As String
Dim i As Long, j As Long, k As Long
myPath = ThisWorkbook.Path & "\" '任意の場合は、必ず末尾に¥を入れること
ZipFNameB = myPath & "MyFilesABC" ' & ".zip" "圧縮名
ZipFName = ZipFNameB & ".zip"
'一意の出力ファル名の決定
fn = Dir(ZipFName & ".zip")
Do Until fn = ""
k = k + 1
ZipFName = ZipFNameB & CStr(k) & ".zip"
fn = Dir()
Loop
FName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xl*), *.xl*", _
MultiSelect:=True, Title:="圧縮ファイル選択")
If IsArray(FName) = False Then
Exit Sub
Else
Open ZipFName For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
Set objShell = New Shell32.Shell
For i = LBound(FName) To UBound(FName)
If IsBookOpen(FName(i)) = False Then
'ファイルは必ず閉じた状態で使ってください 'ここで問題が発生することがある
objShell.Namespace(ZipFName).CopyHere FName(i)
Sleep 500
End If
Next i
End If
End Sub
Function IsBookOpen(ByVal FName As Variant)
Dim myFno As Integer
If Dir(FName) <> "" Then
myFno = FreeFile
On Error Resume Next
Open FName For Binary Lock Read Write As #myFno
Close #myFno
End If
If Err.Number = 70 Then
IsBookOpen = True
End If
End Function
'//
ありがとうございます。
また、お礼が非常に遅くなり申し訳ございませんでした。
上記コードで問題なくwin7Excel2007で実行できました。
Print など使用した事のないステートメントや、
アーリーバインディング・レイトバインディングの違い。sleepとwaitの違いについても不勉強でしたので、これも含めて勉強していきたいと思います。
本当にありがとうございました。
No.2
- 回答日時:
ありがとうございます。
また、お礼が非常に遅くなり申し訳ございませんでした。
この件だけでなく、これから学んでいきたい事が非常に多く掲載されており、
非常に参考になりました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ノートパソコン パソコンでmp4の動画ファイルを10個くらい(合計20GB)をフォルダに入れて、容量を軽くしてしまお 2 2023/02/06 02:08
- iPhone(アイフォーン) iPhone ファイル iPhoneのファイルで写真をzipに圧縮した後もう一度展開すると画質は変わ 3 2022/10/21 21:53
- Windows 8 メール送信、zipファイル PDFについて 回答お願いいたします。 Windows8 メールはサクラ 1 2022/05/12 17:49
- 画像編集・動画編集・音楽編集 連続質問です 動画ファイルの圧縮時のビットレートというのについて教えてください 2 2023/08/06 11:50
- PDF PDFファイルの圧縮 1 2022/10/04 13:48
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Android(アンドロイド) androidでzip圧縮してから転送できるファイラー 3 2022/12/11 10:22
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(セキュリティ) PDFファイルのパスワード設定について 1 2022/06/25 10:10
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
[VBA]標準機能のみでパス付zipファイルの解凍
Excel(エクセル)
-
【ExcelVBA】zip圧縮されたCSVからシートに取り込む方法
Visual Basic(VBA)
-
VBA zipファイルの作成
その他(プログラミング・Web制作)
-
-
4
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
5
ファイルをvbaで圧縮したいのですが
Excel(エクセル)
-
6
Shell.ApplicationのNameSpaceを書き換えたい
Visual Basic(VBA)
-
7
Dirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)
UNIX・Linux
-
8
VBAを使ってファイルを圧縮したい
PowerPoint(パワーポイント)
-
9
unzip32.dllの利用について(64bit)
その他(プログラミング・Web制作)
-
10
Powershellでzip圧縮が出来ない
その他(プログラミング・Web制作)
-
11
シート保護とグループ化機能を両立するマクロで
その他(Microsoft Office)
-
12
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
右クリック→新規作成→圧縮(zip...
-
メールのアーカイブってどうい...
-
ファイル名に日本語が入ってい...
-
Zip形式フォルダの解凍[不明な...
-
フォルダ名や、ファイル名のフ...
-
zipにパスワードをかけられない...
-
メールにフォルダを添付したい!
-
右クリック フォルダ圧縮 圧縮...
-
圧縮すると容量が増える。
-
ファイル名の変更だけで劣化し...
-
至急。PCに詳しい人助けてくだ...
-
500GBのUSBが欲しいのですが曲...
-
圧縮フォルダ(zip形式)を2重...
-
動画をメールで送りたい
-
NTFS圧縮したファイルを全部ま...
-
無理を承知で お聞きしたいの...
-
圧縮ファイルを使用すると読み...
-
圧縮の容量が違う
-
アーカイブファイルではありま...
-
CDに焼くファイルをZIP圧縮して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
右クリック→新規作成→圧縮(zip...
-
zipにパスワードをかけられない...
-
メールのアーカイブってどうい...
-
フォルダ名や、ファイル名のフ...
-
ファイル名に日本語が入ってい...
-
メールにフォルダを添付したい!
-
圧縮すると容量が増える。
-
CDに焼くファイルをZIP圧縮して...
-
圧縮(ZIP形式)
-
圧縮ファイルを使用すると読み...
-
動画をメールで送りたい
-
フォルダやファイルを他人から...
-
ファイルの名前に色を付ける方法
-
Zip形式フォルダの解凍[不明な...
-
圧縮フォルダ(zip形式)を2重...
-
【Excel VBA】Windowsの標準機...
-
500GBのUSBが欲しいのですが曲...
-
圧縮の容量が違う
-
パソコンの圧縮データを元に戻...
-
至急。PCに詳しい人助けてくだ...
おすすめ情報