- ベストアンサー
エクセルVBAで
シート名(例えば取引先名)をそのファイル名にしたい場合はどのようにしたらいいのでしょうか・ 50ぐらいのシートがあり、それぞれのシート名をファイル名にした時に、印刷してということをそのシート数だけくり返したいのですが。 FOR EACHの構文を使えばできそうなことは分かるのですが、シート名の変数の指定?などがうまくいきません。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#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 なお、最低限のエラー処理しかしてませんので試すならテストブックで。
その他の回答 (2)
- hana-hana3
- ベストアンサー率31% (4940/15541)
横レスです。 >できれば、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" のように合成することで、保存フォルダとファイル名を正しく指定することができます。
お礼
回答有難うございました。 そこがどうもよく分からなかったもので おかげですっきりしました。
- papayuka
- ベストアンサー率45% (1388/3066)
ようはブック内の全シート名を得たいんですよね? dim ws as worksheet for each ws in worksheets msgbox ws.name next ws この場で書いているので記述ミスがあるかも、、
補足
シート名を求めるのではなくそのシート名で ファイルを保存するということがしたいのですが。。。
お礼
質問の内容が分かりづらくて申し訳ありませんでした。 解答して戴いたVBAでやりたいことが出来そうです。 できれば、myPath & "\" & ws.Name の部分がどういう 内容なのか教えていただけませんか? どうも有難うございました。