No.6ベストアンサー
- 回答日時:
こんにちは。
こういう話ではないのでしょうか?
Sub Main()
Call insatu("TestFile.xlsx")
End Sub
Sub insatu(strA As String)
Dim i As Long
With Workbooks.Open(strA)
.Activate
For i = 1 To .Worksheets.Count
If Not .Worksheets(i).Name Like "*いらない*" Then
.Worksheets(i).Select False
End If
Next i
ActiveWindow.SelectedSheets.PrintPreview
' 'ActiveWindow.SelectedSheets.PrintOut ' 大丈夫だとわかったら、上と入れ替えてください。
Application.Wait Now + TimeSerial(0, 0, 10) '終了の前に待ちを入れました。
.Close False
End With
End Sub
No.4
- 回答日時:
No.2です。
>全シート印刷されちゃいました
はい。質問文に
>シート名に'いらない'と入っていたらそのシートは印刷しないで他はすべて印刷する・・・
となっていますので、「いらない」以外のシートはすべて印刷されます。
※ 余計なお世話かもしれませんが、一気に印刷するのではなく
>Worksheets(i).PrintPreview
としておけば印刷プレビューでマクロが止まりますので
確認して手動で印刷する方が紙の無駄がないと思います。m(_ _)m
プレビュー使ってみたらとても便利ですね!ありがとうございます!★ちなみにいらないのシートも全て印刷されちゃうってことです(~_~;)
No.3
- 回答日時:
No1です
>いらない というシートを印刷しない指示の仕方がわからないです
i番目のシート名は、wb.Worksheets(i).Name で得られます(文字列型)
この中に「いらない」が含まれているかどうかを調べる方法はいろいろありますが、一例として
wb.Worksheets(i).Name Like "*いらない*"
で調べることが可能です。
含まれている場合は、TRUEに、含まれていなければ、FALSEになります。
これを利用して、含まれていない場合に印刷するようになさればよいのでは?
>visibleの文書は不要なのですか?
処理の内容によるので、私には要/不要の判断はできません。
wb.Worksheets(i).Visible = True
上記は、当該シートが表示状態である(=非表示に設定されていない)という意味になります。
通常、非表示のシートを利用することはそれほど多くはないと想像しますので、もしかすると不要かもと妄想した次第です。
No.1
- 回答日時:
こんにちは
ご提示のコードは各シートに対して、
.Visible = True
であれば印刷するような、雰囲気にはなっていますので、この条件に『シート名に'いらない'と入っていない』という条件を追加すればよろしいかと。
(.Visibleの条件が不要なら、新しい条件に入れ替えればよいですね)
(↑)の「雰囲気」というのは、実際にはそうはなっていないけれど、構造的にはそれっぽい形になっているという意味です。(詳しくは「おまけ」を参照してください)
シート名に「いらない」という文字列が含まれているかどうかは
wb.Worksheets(i).Name Like "*いらない*"
で判別することが可能ですので、これを利用して条件を作成すればよろしいかと。
<おまけ>
・変数wscntは値を代入してはいますが、以降使用していないので、無くても同じです。
・シートの指定に「Sheets(i)」としたり「wb.Worksheets(i)」を用いたりと混在していますが、統一しておいた方が良いです。(今回の場合は、wb.Worksheets(i)が良いでしょう)
・Exit Forがありますが、最初に印刷を行うと必ずこの処理を通るようになっています。
結果的に、「最初の1シート目を印刷したら終了する」という処理になるので、「すべて印刷」にはなりません。
・問題はないのですが、intA As StringってintAという変数名からInteger型の変数を連想しやすいので、他の方が見る時や後日ご自身で見る時を考慮するなら、内容をイメージしやすい変数名を用いるようにした方がベターだと思います。(今回の場合なら、filePathとか)
ありがとうございます!おまけ部分はわかりやすくて訂正したのできたのですが、いらない というシートを印刷しない指示の仕方がわからないですm(_ _)mまたvisibleの文書は不要なのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Visual Basic(VBA) VBAで不特定枚数印刷をしたいです。 4 2022/08/02 07:30
- Excel(エクセル) エクセルVBAで複数のシート印刷設定 1 2022/09/07 12:03
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
- オープンソース OpenOffice Calc basic で印刷プレビューを表示する方法 1 2023/04/15 12:43
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Excel(エクセル) 請求書と領収書の作成 4 2022/11/10 16:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAの天才来てください
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
VBA 存在しないシートを選...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロでアクティブ...
-
【VBA】指定した検索条件に一致...
-
excelのマクロで該当処理できな...
-
VBAでオブジェクト変数にsetし...
-
エクセル・マクロ シートの非...
-
ブック名、シート名を他のモジ...
-
Excelマクロのエラーを解決した...
-
VBA 検索して一致したセル...
-
Worksheet_Changeの内容を標準...
-
シートが保護されている状態で...
-
エクセルVBAでダブルクリックを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報
Sub insatu(intA As String)
Dim f As String
Dim wb As Workbook
Dim wscnt As Long
Dim i As Long
Set wb = Workbooks.Open(intA)
wscnt = wb.Worksheets.Count
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
wb.Worksheets(i).PrintOut
Exit For
End If
Next i
wb.Close
Set wb = Nothing
End Sub
Sub test1()
insatu ("ファイルパス名")
End Sub
ここまでは作っています