重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (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

なお、最低限のエラー処理しかしてませんので試すならテストブックで。
    • good
    • 0
この回答へのお礼

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

どうも有難うございました。

お礼日時:2004/03/07 09:47

横レスです。



>できれば、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" のように合成することで、保存フォルダとファイル名を正しく指定することができます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/03/07 10:47

ようはブック内の全シート名を得たいんですよね?



dim ws as worksheet
for each ws in worksheets
 msgbox ws.name
next ws

この場で書いているので記述ミスがあるかも、、

この回答への補足

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

補足日時:2004/03/06 18:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!