質問: filename8 ``` ソースコード ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) 初心者です。 C:\■実績更新用 というフォルダに すでにVBAで名前を取得しているfilename7(日別データYYYYMMDD.ZIP)のZIPファイル を解凍してエクセルファイルにしたいです。 ここにより詳細な情報を記載してください。
回答: papinianus 様からの質問で解決済みな気がしましたが 一応載せます @kinuasa様のZIP形式で圧縮・解凍を行うVBAマクロから コードを引用しています。 VBA はExcelでしょうか? もしそうであれば「F8」キーで一つずつ追ってみるのがいいかもしれません。 それもでだめならほかの方法で実装して見るのがいいかもしれません。 もし下記の方法等でやってみても同様の現象が発生するようなら 問題はそこではないと切り分けができます。 --追記-- > > VBAで、ZIPファイルを同じフォルダに解凍したいのですが、 > > ZIPファイル以外の全部のファイルがコピーされてしまいます。 > > > もしも Aフォルダの中に「A1.Zip」と「A2.xlsm」があって 解凍後に Aフォルダの中に「A1.Zip」と「A1」(フォルダ) と 「A2.xlsm」 となるようにしたい場合は場合によりますが、基本的に「A1」フォルダは`mkdir`等で作る必要があります。 ``` Option Explicit Sub test1() Dim zipFile As String Dim Folder As String Dim filename7 As String Dim ZipFolder As String filename7 = "Zipフォルダ.zip" Folder = "D:\Users\Desktop\実績更新用" '解凍フォルダ zipFile = Folder & "\" & filename7 'ZIPファイル UnZipFile zipFile, Folder Dim filename8 As String Dim Nm As String Dim Nms Nm = Dir(Folder & "\日別データ_*.xlsm") Do While (Nm <> "") Nms = Nms & " , " & Nm Debug.Print Nm Nm = Dir() Loop Nms = Mid(Nms, 4) filename8 = Nms Range("B11") = filename8 End Sub Public Sub UnZipFile(ByVal SrcPath As Variant, _ Optional ByVal DestFolderPath As Variant = "") 'ZIPファイルを解凍 'SrcPath:元ファイル 'DestFolderPath:出力先、指定しない場合は元ファイルと同じ場所 '※出力先に同名ファイルがあった場合はユーザー判断で処理 With CreateObject("Scripting.FileSystemObject") If .FileExists(SrcPath) = False Then Exit Sub If LCase(.GetExtensionName(SrcPath)) <> "zip" Then Exit Sub If IsFolder(DestFolderPath) = False Then DestFolderPath = .GetFile(SrcPath).ParentFolder.Path End If End With With CreateObject("Shell.Application") .Namespace(DestFolderPath).CopyHere .Namespace(SrcPath).Items End With End Sub Private Function IsFolder(ByVal SrcPath As String) As Boolean IsFolder = CreateObject("Scripting.FileSystemObject").FolderExists(SrcPath) End Function ```