
エクセル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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで#N/Aを含めた平均値...
-
android studioエラー
-
ドメインに参加しようとするとD...
-
循環参照にならない方法があっ...
-
アウトルックで送信時に「名前...
-
BASIC認証エラー時の表示HTML指定
-
クライアントが切断されました。
-
[504 Gateway Timeout]が発生し...
-
RealVNCで管理していたサーバを...
-
プロファイルエラー
-
エクセルVBA 関数エラー箇所を...
-
モジュラス10と11はなぜ多...
-
Tomcat のエラーログ
-
cpコマンドを行うとファイルサ...
-
マイクロソフト社のエラー報告...
-
androidのSocketでの正常なリソ...
-
Virtual Sound Canvas (VSC) で...
-
リモートデスクトップ接続でパ...
-
「DNSサーバーを自動的に取得す...
-
同一のホスト名で何か問題があ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで#N/Aを含めた平均値...
-
循環参照にならない方法があっ...
-
MACアドレス 00:E0:C3 SAKAI って
-
ドメインに参加しようとするとD...
-
プロファイルエラー
-
【QnapNAS】不良HDDと診断され...
-
マクロでのエラーについて
-
アウトルックで送信時に「名前...
-
エクセルVBA 関数エラー箇所を...
-
エクセル #N/Aを印刷時に表示...
-
MacでKCFErrorDomainCFNetwork ...
-
『ゼロサブネット』という言葉...
-
WSUSインストール時に設定ウィ...
-
Skype で検索時にエラーコメン...
-
CPUファン
-
CDManipulatorでのCCCDコピーに...
-
IEでランタイムエラーというの...
-
教えてgooサーバーエラー
-
クライアントが切断されました。
-
ロイロノートのエラーについて ...
おすすめ情報