![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Vista SP1 Excel2000でマクロを作成中の超初心者です。
マクロコードの修正でエラー続出。四苦八苦しています。どうぞお助けください。
----------------------------------------------------------------------------
イ)現在使用しているマクロを次のように修正したい。
(1)表紙.xls に次のコードを追加する。
Public Const EXCEPT_NAME = "一覧表, 印刷1, データ集, 請求見本"
(2)表紙.xls の次のコードを削除する。
'開始
mySh = Array("A会社", "B会社", "C会社", "D会社",・・・ZZ会社")
(3)代わりに、次のコードを使用する。
For Each SheetName In ActiveWorkbook.Worksheets 'すべての会社シートをアクティブにする
If InStr(EXCEPT_NAME, SheetName.Name) = 0 Then
Sheets(SheetName.Name).Activate
------------------------------
ア)現在の状況
デスクトップにAAフォルダがあります。その中身は
1)表紙.xls------コード記述用(シート名は「表紙」1枚のみ)
2)BBフォルダ
請求書.xls-----
シート名(1)A会社, B会社, C会社, D会社,・・・ZZ会社
(2)一覧表, 印刷1, データ集, 請求見本-----このシートは印刷しない。
イ)現在使用しているマクロ
Sub 請求書連続印刷()
Application.ScreenUpdating = False
ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path
Workbooks.Open (ThisWorkbook.Path & "\BBフォルダ\請求書.xls")
Worksheets("印刷1").Activate
Dim mySh As Variant
Dim i As Long
'請求印刷面のデータの削除
Worksheets("印刷1").UsedRange.Clear
'開始
mySh = Array("A会社", "B会社", "C会社", "D会社",・・・ZZ会社")
For i = LBound(mySh) To UBound(mySh)
Worksheets(mySh(i)).Unprotect 'プロテクトを外す
Call 印刷時削除項目
Worksheets(mySh(i)).Range("A1:Q44").Copy _
Worksheets("印刷1").Cells((i + 1) + 43 * i, 1)
Worksheets(mySh(i)).Protect 'プロテクトを掛ける
Next
Application.CutCopyMode = False
Worksheets("印刷1").PrintPreview
Application.CutCopyMode = False
ActiveWorkbook.Close False
No.2ベストアンサー
- 回答日時:
QNo.4157687の応用で出来ませんか?
コード内容を理解しようとしないとメンテナンスに苦労しますよ。
[F8]キーでワンステップずつ実行したりしてますか?
Sub 請求書連続印刷()
Const EXCEPT_NAME = "一覧表 印刷1 データ集 請求見本"
Dim wb As Workbook
Dim ws As Worksheet
Dim sh As Worksheet
Dim i As Long
Application.ScreenUpdating = False
On Error Resume Next
'開いて作業中の場合。
Set wb = Workbooks("請求書.xls")
On Error GoTo 0
If wb Is Nothing Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\BBフォルダ\請求書.xls")
End If
Set ws = wb.Worksheets("印刷1")
ws.UsedRange.Clear
i = 0
For Each sh In wb.Worksheets
If InStr(EXCEPT_NAME, sh.Name) = 0 Then
sh.Unprotect
sh.Activate '『Call 印刷時削除項目』の中味がわからないので。不必要なら削除
Call 印刷時削除項目
sh.Range("A1:Q44").Copy ws.Cells((i + 1) + 43 * i, 1)
sh.Protect
i = i + 1
End If
Next
Application.ScreenUpdating = True
ws.PrintOut Preview:=True
'開いて作業中だったら、未保存で閉じるのは不味いかもしれないのでそこは判断してください。
wb.Close False
Set ws = Nothing
Set wb = Nothing
End Sub
ありがとうございました。一発で連続印刷できるようになりました。
あなた様のいうとおり、もっと勉強が必要だと痛感しました。今後ともよろしくお願いします。
No.1
- 回答日時:
質問文が長いが、何をしたいのか文章で明確にならないのですか。
読者や回答者には出来るだけ余分なものは読さないでほしい。
余分かどうかは、質問者のプログラムを組む上で、思考訓練になると思う。
質問は困難にぶつかった点だけに出来ないか。例えば質問者にとっては、 Public Const EXCEPT_NAME = "一覧表, 印刷1, データ集, 請求見本"、などは何処かに使うのだろうが、何も疑問は無いでしょう。
プログラムロジックに影響しますか?
ーー
「>mySh = Array("・・・)で定義した(シート名)以外」のシート名を印刷したいということか(それがメインテーマでは)?。
それならArrayに該当するシートかどうかIF文で聞いて、見つからなければ印刷する。それだけのことでは。
これに類することは質問者はやっているようだが。
===
違うなら、コードを作るうえでの、判らない課題を箇条書きにでもしたら。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
印刷ダイアログを表示させない方法
-
Eclipseを使ってソースを印刷し...
-
VBAでエクセルからワードへの差...
-
エクセルの入力履歴を知りたい
-
リッチテキストファイルの印刷
-
エクセル VBA 印刷モジュール
-
クリレポのプリンタ設定について
-
webページの印刷制限について
-
除外シートの連続印刷をしたい
-
VC++の印刷について
-
VBAで印刷スプール終了の判定を...
-
ActiveReportsを使って[印刷ダ...
-
VBAで印刷の成功判定
-
A4の2枚をA3の1枚にする編集方法?
-
VB2010で作成したdllからtlbが...
-
Using System.Drawing がうまく...
-
「読み込み違反」が起きたとき...
-
androidで.exeを実行できますか?
-
VB.NETで参照設定したDLLの修正...
-
OLEPRO32.DLLが見つかりません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
印刷ダイアログを表示させない方法
-
印刷要求順番と印刷出力順番が...
-
プリンターを指定して印刷するには
-
vbaでPDFファイルが印刷されない
-
VBAで印刷スプール終了の判定を...
-
PDFファイルを印刷し終了するには
-
VBからプリンタに出力する時に...
-
ACCESSで設定した帳票の用紙サ...
-
印刷ダイアログを表示させたくない
-
VBscriptでPDFファイルを直接印...
-
ActiveReportsを使って[印刷ダ...
-
VBAで印刷の成功判定
-
Accessフォームで全レコードを...
-
VB.NET+ActiveReports で印刷...
-
A4の2枚をA3の1枚にする編集方法?
-
Eclipseを使ってソースを印刷し...
-
EXCELファイルの複数ダウンロー...
-
VBでExcel印刷する時のプリンタ...
-
Javaから直接プリンターへ印刷...
-
VBAにて指定したセルをプルダウ...
おすすめ情報