質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

13814閲覧

フォルダ内のエクセルを全シート一括印刷したい

noncha930

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/03/04 05:07

フォルダ内にエクセルが10以上入っており、
そのエクセルの全シートを一括で印刷させるマクロを組みました。

下記のコードで、現在フォルダ名を指定していますが、
カレントフォルダ内(マクロが格納されているフォルダ)
で実装するにはどのように記述を変えたらよいでしょうか。
★★★の部分を変えたらいいのかと思うのですが
どのようにしたらよいかわからず。。

宜しくお願いしますm(_ _)m


Sub 一括印刷()

ChDir ThisWorkbook.Path

Dim Fol As String
Dim Fname As String
Dim Ws As Worksheet

Fol = "★★★現在はフォルダパスを記載している★★"
Fname = Dir(Fol & "*.xls")

Do While Fname <> ""
If Fname <> ThisWorkbook.Name Then
Workbooks.Open Fol & "" & Fname
For Each Ws In Worksheets
Ws.PrintOut
Next
Workbooks(Fname).Close SaveChanges:=False
End If
Fname = Dir()
Loop

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

フォルダを指定しなければカレントを参照します。

VBA

1Fname = Dir(Fol & "*.xls") 23Fname = Dir("*.xls")

投稿2019/03/04 05:23

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noncha930

2019/03/04 06:53

ありがとうございます。 Fol = "★★★現在はフォルダパスを記載している★★" を削除し Fname = Dir("*.xls") という記述に変更したところ下記のエラーが出てしまいました。 -------- "ファイル名"が見つかりません。ファイル名およびファイルの保存場所が正しいかどうかを確認してください。 最近使用したファイルの一覧からファイルを開こうとしている場合は、そのファイルの名前が変更されていないこと、移動または削除されていないことを確認してください。 ------------------ 恐縮ですが、理由がわからないので教えていただけると幸いです><
noncha930

2019/03/04 06:54

Sub 一括印刷() ChDir ThisWorkbook.Path Dim Fol As String Dim Fname As String Dim Ws As Worksheet Fname = Dir("*.xls") Do While Fname <> "" If Fname <> ThisWorkbook.Name Then Workbooks.Open Fol & "\" & Fname For Each Ws In Worksheets Ws.PrintOut Next Workbooks(Fname).Close SaveChanges:=False End If Fname = Dir() Loop End Sub
ttyp03

2019/03/04 06:55

失礼しましたOpenのところも修正しないとダメでした。 Workbooks.Open Fname
noncha930

2019/03/04 07:03

できました!! いつもありがとうございます>< 大変助かりました!
noncha930

2019/05/14 04:14

Sub 一括印刷() ChDir ThisWorkbook.Path Dim Fol As String Dim Fname As String Dim Ws As Worksheet Fname = Dir("*.xls") Do While Fname <> "" If Fname <> ThisWorkbook.Name Then Workbooks.Open Fname For Each Ws In Worksheets Ws.PrintOut Next Workbooks(Fname).Close SaveChanges:=False End If Fname = Dir() Loop End Sub
noncha930

2019/05/14 04:15

現在このコードでうまく印刷ができています。 【Sheet1】 というシートのみ除外して印刷したい場合はどのようにコードを追記すればよろしいでしょうか。 ご教授いただけると幸いです。
ttyp03

2019/05/14 04:19

この質問は完結していますので、マナー的にも新たに質問を作ってください。 面倒とは思いますがよろしくお願いします。 と思いましたが、直ぐに解決できそうなので回答しちゃいます。 次からはお気をつけください。 PrintOutのところに条件をつけるとよいかと思います。 For Each Ws In Worksheets If Ws.Name <> "Sheet1" Then Ws.PrintOut End If Next
noncha930

2019/05/14 05:35

ルールをよく知らずすみませんでした。 次からそのようにいたします>< コードを記載してみたのですが「オブジェクトが必要です」とエラーになってしまいます。。 入れ込む部分を間違えているでしょうか? Sub 一括印刷() ChDir ThisWorkbook.Path Dim Fol As String Dim Fname As String Dim Ws As Worksheet Fname = Dir("*.xls") If sh.Name = "sheet1" Then Do While Fname <> "" If Fname <> ThisWorkbook.Name Then Workbooks.Open Fname For Each Ws In Worksheets If Ws.Name <> "Sheet1" Then Ws.PrintOut End If Next Ws.PrintOut Workbooks(Fname).Close SaveChanges:=False End If Fname = Dir() Loop End If End Sub
ttyp03

2019/05/14 05:38

Nextの次行に余計なWs.PrintOut行がありますね。 この行は削除してください。
noncha930

2019/05/15 05:54

Sub 一括印刷() ChDir ThisWorkbook.Path Dim Fol As String Dim Fname As String Dim Ws As Worksheet Fname = Dir("*.xls") If sh.Name = "sheet1" Then Do While Fname <> "" If Fname <> ThisWorkbook.Name Then Workbooks.Open Fname For Each Ws In Worksheets If Ws.Name <> "Sheet1" Then Ws.PrintOut End If Next Workbooks(Fname).Close SaveChanges:=False End If Fname = Dir() Loop End If End Sub
noncha930

2019/05/15 05:55

削除したのですが上記と同様のエラーが出てしまいます。。 どこがおかしいか教えていただけますでしょうか。 何度も申し訳ありません。
noncha930

2019/05/15 05:56

除外したいシート名(Sheet1)は存在しています。 ちなみにSheet1が存在しないエクセルの場合はエラーになってしまいますでしょうか?
ttyp03

2019/05/15 06:01

Do While の前にIf文が増えてますね。
noncha930

2019/05/15 06:12

できました(:;) 本当にありがとうございます! 次からは新しい質問をたてます。 ありがとうございました^^
guest

0

★★★の部分を変えたらいいのかと思うのですが
どのようにしたらよいかわからず。。

WEB検索すればすぐにサンプルコードが見つかりますよ。
例えば「Excel vba ブックのフォルダ」をキーワードにググると・・・

excel VBA ブックのフォルダ - Google 検索

投稿2019/03/04 05:23

hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noncha930

2019/03/04 06:54

すでにWEB検索したものを応用して作っておりまして。 躓いている状況です。。
guest

0

自分で書いたコードを理解していないのでしょうか?
ChDir ThisWorkbook.Path
しているので、
Fname = Dir("*.xls")

投稿2019/03/04 05:21

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noncha930

2019/03/04 06:55

WEBで拾ってきたものを応用しており、 且つ自身が初心者の為わからずでして。。 ありがとうございます。
otn

2019/03/04 06:59

なるほど。 ThisWorkbook.Path が、このマクロが付いているExcelファイルが格納されているフォルダ です。 そこに Chdir している(そのフォルダーに注目している状態)ので、一覧は単に、"*.xls" で取れます。
otn

2019/03/04 07:02

もしくは、質問にストレートに答えると、 Fol = ThisWorkbook.Path ですね。
noncha930

2019/03/04 07:04

まだまだ勉強しないとです。。。 ご丁寧にありがとうございます!解決しました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問