• ベストアンサー

エクセルVBAで

シート名(例えば取引先名)をそのファイル名にしたい場合はどのようにしたらいいのでしょうか・ 50ぐらいのシートがあり、それぞれのシート名をファイル名にした時に、印刷してということをそのシート数だけくり返したいのですが。 FOR EACHの構文を使えばできそうなことは分かるのですが、シート名の変数の指定?などがうまくいきません。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1です。 > シート名をファイル名にした時に、印刷して > シート名の変数の指定?などがうまくいきません。 > シート名を求めるのではなくそのシート名で > ファイルを保存するということがしたいのですが。。。 ちょっと意味が掴めないです。 印刷したいのか、保存したいのか、何がうまくいかないのか。 For Each や変数等の単語が出てるので、VBAを理解している方なんですよね? 上手く行かないコードを提示された方が手っ取り早いのですが。。。 Aブック(1度でも保存あること)に複数シートがあるとします。 Aブック内のシートをばらして別々のブックにし、各シート名でAブックと同じフォルダに保存して閉じる。 やりたいのはこういう事ですか? Sub Test() Dim ws As Worksheet, myPath As String myPath = ThisWorkbook.Path For Each ws In ThisWorkbook.Worksheets   ws.Copy   On Error Resume Next   ActiveWorkbook.SaveAs myPath & "\" & ws.Name   ActiveWorkbook.Saved = True   ActiveWorkbook.Close Next ws End Sub なお、最低限のエラー処理しかしてませんので試すならテストブックで。

fisherman2
質問者

お礼

質問の内容が分かりづらくて申し訳ありませんでした。 解答して戴いたVBAでやりたいことが出来そうです。 できれば、myPath & "\" & ws.Name の部分がどういう 内容なのか教えていただけませんか? どうも有難うございました。

その他の回答 (2)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

横レスです。 >できれば、myPath & "\" & ws.Name の部分がどういう myPath には、今開いているブックのパス(myPath = ThisWorkbook.Path )が "C:\xxxxx\yyyyy" のようにパス名が入ります。 ws.Name には、For Each ws In ThisWorkbook.Worksheets で受け取ったワークシート名(.Name)が "zzzzz" と入ります。 単純に繋げると、"C:\xxxxx\yyyyyzzzzz" となってしまい、意図した名前で正しいフォルダに保存できません。 そこで、"C:\xxxxx\yyyyy" & "\" & "zzzzz" として、 "C:\xxxxx\yyyyy\zzzzz" のように合成することで、保存フォルダとファイル名を正しく指定することができます。

fisherman2
質問者

お礼

回答有難うございました。 そこがどうもよく分からなかったもので おかげですっきりしました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

ようはブック内の全シート名を得たいんですよね? dim ws as worksheet for each ws in worksheets  msgbox ws.name next ws この場で書いているので記述ミスがあるかも、、

fisherman2
質問者

補足

シート名を求めるのではなくそのシート名で ファイルを保存するということがしたいのですが。。。

関連するQ&A