エクセル2010 マクロエラーについて
以前 印刷について下記コードを提示して頂きました。
このコードが通る時と2回目の .Zoom = j で止まる時があります。
どなたか検証して頂き、何が原因なのかご教示頂けますでしょうか?
宜しくお願い致します。
Dim myRng As Range
Dim i As Long
Dim j As Long
Dim k As Long
j = 100
With ActiveSheet
Set myRng = .Range("A1", .Cells(Rows.Count, "L").End(xlUp)).Resize(, 16)
For i = 1 To myRng.Columns.Count
If i = 11 Then
.Columns(i).AutoFit
End If
Next i
With .PageSetup
.PrintArea = myRng.Address
.Orientation = xlLandscape
.PaperSize = xlPaperA4
.Zoom = j
Do
k = Application.ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(65))")
If k = 1 Then Exit Do
j = j - 1
.Zoom = j '”ここで実行時エラー1004” PageSetupクラスのZoomプロパティを設定できません”
Loop
End With
.PrintOut Preview:=True
.PageSetup.Zoom = 100
End With
No.2ベストアンサー
- 回答日時:
こんばんは。
そのコードのエラーは、もともと想定済みなのですが、注意点として、あまりも古い問題なので、今さらということで、曖昧にしていました。もちろん、Microsoft側も、曖昧なままにしています。たぶん、現在のバージョンまで直っていないと思います。
この話は、Microsoft Support に残っているかもしれませんが、趣旨は、Zoomなど、画面全体に影響するものは、印刷の設定自体が狂うことがあるそうです。当然ですが、無理な部分のあるコードです。
k = Application.ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(65))")
これは、横方向のページ改行の数を取得しようとしたコードです。
それで、ワザと、マクロ関数を使ったわけです。VBAメソッドでは、かなりのタイムロスが生じるためです。
しかし、それが逆に災いしてしまったようです。
今考えられるのは、2つの方法です。
例えば、
If k = 1 Then Exit Do
j = j - 1
.PrintArea = myRng.Address '*
.Orientation = xlLandscape '*
.PaperSize = xlPaperA4 '*
.Zoom = j
Loop
とフルに入れる方法と、もうひとつは、設定が安定するのを待たせるために、ループのスピードを落とす方法です。
モジュール画面の一番上に
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
と入れておいて、
Do
k = Application.ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(65))")
If k = 1 Then Exit Do
j = j - 1
.Zoom = j
DoEvents '*
Sleep 500 '*500/1000秒 'スピードの調整。二度目からの安定を図る
Loop
このどちらかだと思います。Waitでも良いのですが、Sleepという、Win32API関数を使う理由は、メモリ負担を減らす目的です。なお、これで直らない場合は、エラー・トラップ(On Error Goto ~)を設定してください。事前には、なかなか書きにくかったことで、ご面倒をかけましたが、よろしくご了解願います。
申し訳なく思いつつも、大変感謝しています。
体調は如何でしょうか?
提示して頂いた修正コード2点ですが、
実際に動かしましたところ、最初のフルに入れる方法を活用させて頂きます。
2点目のコードだと、同じく .Zoom = j のところでエラーが発生してしまい、
またOn Error Goto ~を用いてもエラーは回避しても時間が掛かるため
最初のコード(こちらもやや時間はかかりますが)の方が
確実性があるように感じましたので、そちらを使用させて頂きます。
過去に遡り多々ご迷惑をお掛けしました事、申し訳ありませんでした。
しかし、その後素人の悪あがきで、試行錯誤しながら手を変え品を変え
コードを書き換えたりしていましたら、ほぼ思い通りの形となりました。
当初、想定していたもの以上のものが出来るようで、本当に感謝しています。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
循環参照にならない方法があっ...
-
エクセルで#N/Aを含めた平均値...
-
検索をかけた時、ページを開け...
-
/var/log/messagesエラー出力
-
マクロでのエラーについて
-
ネットワークプリンタの印刷エ...
-
エクセルのセルの書式設定→表示...
-
Excel → ADO → ACCESS
-
【QnapNAS】不良HDDと診断され...
-
[504 Gateway Timeout]が発生し...
-
アウトルックで送信時に「名前...
-
【組み込み】HEWのビルドエラー
-
エクセルのコメントの有無をV...
-
ロイロノートのエラーについて ...
-
Windows Live Mailで送受信がで...
-
BASIC認証エラー時の表示HTML指定
-
MovableTypeのコメント投稿にお...
-
エクセルVBA 関数エラー箇所を...
-
応答を解析できません
-
vsftpd 大量転送で時たま途中で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで#N/Aを含めた平均値...
-
循環参照にならない方法があっ...
-
アウトルックで送信時に「名前...
-
Ocn モバイルONE の1GB 追加
-
ドメインに参加しようとするとD...
-
MACアドレス 00:E0:C3 SAKAI って
-
エクセルVBA 関数エラー箇所を...
-
.NETでActiveXコントロールを使う
-
検索をかけた時、ページを開け...
-
クライアントが切断されました。
-
プロファイルエラー
-
ロイロノートのエラーについて ...
-
android studioエラー
-
エクセル #N/Aを印刷時に表示...
-
応答を解析できません
-
BASIC認証エラー時の表示HTML指定
-
MacでKCFErrorDomainCFNetwork ...
-
VBAで入力規則 エラーでも入れ...
-
cpコマンドを行うとファイルサ...
-
マクロでのエラーについて
おすすめ情報