いつもお世話になっております
遣りたいことは
特定のシートを別々に保存
フォルダも作成して特定のシート名で作成する
Fn = Worksheets(ssobj) 個々の部分でエラーになります。
わかる方教えてくれませんでしょぅか
Sub dds()
Dim wsh As Object
Dim fso As Object
Dim ssobj As Worksheet
Dim sobj As String
Dim ary
Dim Fn As String
Set fso = CreateObject("Scripting.FileSystemObject")
ary = Array("A001", "Sheet2")
For Each ssobj In Worksheets(ary)
ssobj.Copy
Application.DisplayAlerts = False
Fn = Worksheets(ssobj)
If Not (fso.FolderExists(Fn)) Then
ActiveWorkbook.Fn Filename:= _
fso.Buildpath(foldername, _
fso.getbasename(Fn))
Application.DisplayAlerts = True
ActiveWorkbook.Close
End If
Next
Set fso = Nothing
End Sub
No.3
- 回答日時:
こんにちは
>Fn = Worksheets(ssobj) 個々の部分でエラーになります。
「型が一致しません」というエラーではありませんか?
ミスが2つ含まれていると思われます。
ssobjはWorksheetオブジェクトのはずなので、
>Worksheets(ssobj)
自体が意味をなさないのと、変数Fnが文字列として宣言されているので、Worksheets(~)を代入しようとすることもおかしいです。
ついでながら、
>fso.FolderExists(Fn)
でフォルダの存在をチェックしようとしているのかもと想像しますけれど、そうであるならFnはフォルダパスのはず。
ですので、Fnには調べたいフォルダパスが代入されていなければならないことになります。
さらには、その後の
>so.Buildpath(foldername, fso.getbasename(Fn))
も意味をなしませんし、foldernameなんて変数がいきなり登場しているのでおかしなことになりそうです。
そもそもが、
>ActiveWorkbook.Fn
なんてメソッドは存在しないので、何をしたいのか不明ですけれど・・・
ご質問文の文章の内容から想像するなら…
・チェックするフォルダパスを作成
・そのフォルダの存在をチェック
存在しない場合はフォルダを作成
・指定パスでブックを保存
のような手順になるものと思いますけれど…
いつもありがとうございます
fso.createfolder (FolderName)が抜けてました。
うまくいかくなと いろいろいじり
わけがわからなくなります。
すみませんです。
No.2ベストアンサー
- 回答日時:
こういうことでしょうか。
あなたのマクロを修正してみました。
Option Explicit
Sub dds()
Dim wsh As Object
Dim fso As Object
Dim ssobj As Worksheet
Dim sobj As String
Dim ary
Dim Fn As String
Dim FolderName As String
Dim newWB As Workbook
Set fso = CreateObject("Scripting.FileSystemObject")
ary = Array("A001", "Sheet2")
For Each ssobj In Worksheets(ary)
Fn = ssobj.name
FolderName = ThisWorkbook.Path & "\" & Fn
If Not (fso.FolderExists(FolderName)) Then
Application.DisplayAlerts = False
fso.createfolder (FolderName)
Set newWB = Workbooks.Add(xlWBATWorksheet)
ssobj.Copy before:=newWB.Worksheets(1)
newWB.Worksheets(2).Delete
newWB.SaveAs (FolderName & "\" & Fn)
newWB.Close
Application.DisplayAlerts = True
End If
Next
Set fso = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) リストボックスに表示されたファイルを削除したい 1 2023/04/19 12:02
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 検索して一致したセル...
-
別のシートから値を取得するとき
-
ExcelVBA シート名を複数セルか...
-
Excelマクロのエラーを解決した...
-
コマンドボタンをクリックでシ...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
VBA 最終行まで数式をコピーする
-
ユーザーフォームに入力したデ...
-
Access エクセルシート名変更
-
excelのマクロで該当処理できな...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
【EXCEL】ワークシートの名前を...
-
Excel マクロについての相談
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
vbaでworksheetfunctionでの複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報