質問させて下さい。
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)
-
Powershellでzip圧縮が出来ない
その他(プログラミング・Web制作)
-
-
4
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
5
Excelの入力規則で2列表示したい
Excel(エクセル)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
Shell.ApplicationのNameSpaceを書き換えたい
Visual Basic(VBA)
-
8
Dirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)
UNIX・Linux
-
9
ファイルをvbaで圧縮したいのですが
Excel(エクセル)
-
10
シート保護とグループ化機能を両立するマクロで
その他(Microsoft Office)
-
11
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
右クリック→新規作成→圧縮(zip...
-
メールのアーカイブってどうい...
-
メールにフォルダを添付したい!
-
Zip形式フォルダの解凍[不明な...
-
ファイル名に日本語が入ってい...
-
動画をメールで送りたい
-
zipにパスワードをかけられない...
-
outlookで個人用フォルダが適切...
-
圧縮フォルダ(zip形式)を2重...
-
フォルダ名や、ファイル名のフ...
-
ファイルの名前に色を付ける方法
-
4GB以上のファイルをエディタで...
-
右クリック フォルダ圧縮 圧縮...
-
フォルダやファイルを他人から...
-
圧縮(ZIP形式)
-
CDに焼くファイルをZIP圧縮して...
-
共有フォルダ内で圧縮したファ...
-
AVIファイルのサイズは?
-
TIFファイルをテキストファイル...
-
500GBのUSBが欲しいのですが曲...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
右クリック→新規作成→圧縮(zip...
-
zipにパスワードをかけられない...
-
メールのアーカイブってどうい...
-
ファイル名に日本語が入ってい...
-
フォルダ名や、ファイル名のフ...
-
Zip形式フォルダの解凍[不明な...
-
メールにフォルダを添付したい!
-
CDに焼くファイルをZIP圧縮して...
-
圧縮すると容量が増える。
-
動画をメールで送りたい
-
フォルダやファイルを他人から...
-
圧縮ファイルを使用すると読み...
-
ファイル名の変更だけで劣化し...
-
至急。PCに詳しい人助けてくだ...
-
圧縮(ZIP形式)
-
ファイルの名前に色を付ける方法
-
圧縮フォルダ(zip形式)を2重...
-
500GBのUSBが欲しいのですが曲...
-
ISOファイルとDVDビデオファイ...
-
音楽CD複数枚を1枚のCD-Rに書...
おすすめ情報