いつもお世話になっております
遣りたいことは
特定のシートを別々に保存
フォルダも作成して特定のシート名で作成する
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マクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
【VBA】指定した検索条件に一致...
-
XL:BeforeDoubleClickが動かない
-
コマンドボタンをクリックでシ...
-
実行時エラー'1004': WorkSheet...
-
EXCEL(VBA)でシート保護がかか...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
エクセルVBA Ifでシート名が合...
-
Excel VBA リンク先をシート...
-
VBA ユーザーフォーム上のチェ...
-
VBA 検索して一致したセル...
-
特定の文字を含むシートだけマ...
-
vbaエクセルマクロ RemoveDupli...
-
VBA 入力月で該当シートを選択...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報