[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『xlsmファイルをxlsxファイルに変換するvbsを作りたい』(佐藤)
表題の件、教えてください。
何点かエラーが出てきます。
?@76 パスが見つかりません
→はい
マクロなしで保存しますか?
→はい
で先に進みます。
?A元のxlsmファイルを削除したいのに出来ません
すみませんがよろしくお願いいたします。
Option Explicit Dim bk, ex, f, gf, so Set so = CreateObject("Scripting.FileSystemObject") Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName)) Set ex = CreateObject("Excel.Application") ex.Application.DisplayAlerts = False ex.Visible = False For Each f In gf.Files If LCase(so.GetExtensionName(f.Name)) = "xlsm"Then Set bk = ex.Workbooks.Open(gf &"\"&f.Name) bk.SaveAs gf &"\"&so.GetBaseName(f.Name) &".xlsx", 51 bk.Close Set bk = Nothing End If Next ex.Quit Set ex = Nothing Set gf = Nothing Set so = Nothing MsgBox("Finished!")
< 使用 Excel:Excel2016、使用 OS:Windows10 >
>元のxlsmファイルを削除したいのに出来ません
削除するコードは書かれていませんが? (渡辺ひかる) 2019/10/03(木) 09:50
>そのコードを探しているところです
そういうことであれば、そのように書いてもらえるとわかりやすいです
>出来ません
と書かれると、削除しようとしているのに できない と解釈します
それはさておき
Scripting.FileSystemObject を使用しているのであれば
DeleteFile メソッドか
Fileオブジェクト対して Delete メソッドを使用するかでしょう。
ループで Fileオブジェクトを取得しているので 後者の方がベターかと思います。
(渡辺ひかる) 2019/10/03(木) 10:26
メソッドなどもわからないので探してみます
(佐藤) 2019/10/03(木) 10:56
Sub 考えてみた() Dim MyPath As String
Dim FSO As Object, MyFile As Object Set FSO = CreateObject("Scripting.FileSystemObject")
'▼ダイアログを表示してユーザーに処理対象のフォルダを選択させる With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then MyPath = .SelectedItems(1) Else MsgBox "処理中断" Exit Sub End If End With
Stop '←ブレークポイントの変わり
'▼ループ処理で指定したフォルダのxlsmブックを開いて、"別フォルダ"に名前を付けて保存して閉じる For Each MyFile In FSO.GetFolder(MyPath).Files If ThisWorkbook.Name <> MyFile.Name And LCase(FSO.GetExtensionName(MyFile)) = "xlsm" Then With Workbooks.Open(MyFile.Path) .SaveAs _ Filename:="D:\出力先\" & FSO.GetBaseName(MyFile), _ FileFormat:=xlWorkbookDefault .Close End With End If Next MyFile
'▼終了処理 If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close End If
End Sub
↑をこちらでテストしてみましたが、たぶん同じような感じにはなったと思いますので、VBSに拘らないという場合はエクセルVBAも検討してみては如何でしょうか。
■2
>?A元のxlsmファイルを削除したいのに出来ません
元のファイルは消さない方が良くないですか?
変換後のファイルを別フォルダにはき出すようにしておけば処理前と処理後は容易に区別出来るでしょうし、そもそもうっかり必要なソースコードが書かれているブックまで処理しちゃったら元に戻せなくなるリスクがあるとおもいます。
(もこな2 ) 2019/10/03(木) 11:41
こちらで提示されたコードをそのままVBSファイルにして 環境を作って 動かしましたが エラーも出ず、マクロなしのメッセージも出ないで、正常に終了しました
環境はデスクトップです。
76エラーについては、
ネットワークや深いパスの場合、瞬時に取得できないケースがありますが 心当たりはありませんか?
質問者さんも デスクトップなどに配置して実験されることをお勧めします
マクロなしメッセージについては、下記のリンクでも議論されていたようです
https://answers.microsoft.com/ja-jp/msoffice/forum/all/vba/3f3b9872-aa62-4c20-85c0-23a40d9aa69f
(渡辺ひかる) 2019/10/03(木) 11:45
>stopでエラーになってしまいます・・・
って そこからステップ実行(F8キー)できるように もこな2さんが わざわざ入れたもので エラーではありませんよ。
もしかして 掲示されたVBSも 質問者さんが自分で書かれたコードではないのでは? コードの内容も理解されていないのではと推測します。
せっかく、もこな2さんが VBAのコードを提示してくれたのですから ステップ実行するなりして、コードの理解に努めては?
(渡辺ひかる) 2019/10/03(木) 13:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.