
いつもお世話になっております
遣りたいことは
特定のシートを別々に保存
フォルダも作成して特定のシート名で作成する
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.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
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)が抜けてました。
うまくいかくなと いろいろいじり
わけがわからなくなります。
すみませんです。
お探しの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ランキング
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
Excelマクロのエラーを解決した...
-
【VBA】特定の文字で改行(次の...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
VBAで同じシート名のコピー時は...
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
Worksheet_Changeの内容を標準...
-
XL:BeforeDoubleClickが動かない
-
Excel VBA 文字列のセルを反映...
-
エクセルVBA ListBoxの並び...
-
EXCEL(VBA)でシート保護がかか...
-
VBA ユーザーフォーム上のチェ...
-
Excelマクロで複数シートの特定...
-
【エクセルVBA】「Protect User...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
ExcelのVBAのマクロで他のシー...
-
【VBA】特定の文字で改行(次の...
-
Worksheet_Changeの内容を標準...
-
Excel VBA で自然対数の関数Ln...
おすすめ情報