プロが教える店舗&オフィスのセキュリティ対策術

WordのFAX送信表にExcelのデータ(宛先)を差込印刷で設定していて、
Excelの方では各行にチェックボックスと一つの印刷ボタンを
配置しています。
ExcelのVBAでチェックがついていたら、A列の値を1として
Wordを開き印刷したいのですが、Wordの起動に時間がかかってしまいます。
Wordの方にはクエリオプションでA列=1と設定してあります。

データはExcelでなくても構わないのですが、
何かよい方法はないでしょうか?

コードは以下の通りです。

If CheckBox1.Value = True Then
Range("A2").Select
ActiveCell.FormulaR1C1 = "1"
End If

Dim ワード As Object
Dim ワード文書 As Object
Dim フルパス As String

フルパス = "C:\Fax送信表.doc" 'フルパスを作成
Set ワード = CreateObject("Word.Application") 'Wordを起動する
ワード.Visible = True 'Wordを表示する
Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く

A 回答 (1件)

>Excelの方では各行にチェックボックスと一つの印刷ボタンを


配置しています。
●印刷ボタン--1つ--印刷(Fax送信状印刷)ゴーサインのためのボタン。---判ります。
●チェックボックス--行数だけ、多数?--その会社・宛先にFAXするかどうかのボタンですね。折角エクセルのセルというものがありながら、またなぜチェックボタンを貼り付けるのか判らない。それは良いとして、LinkedCellと言うのが、プロパティにあり、ここをA1,A2とかに設定しておけばTrueとかをセットしてくれますが。Trueなんて言葉を嫌ったのかな。
●ExcelVBAで2002とかでも、コントロール配列が使えないとおもうので、
If CheckBox1.Value = True Then
Range("A2").Select
ActiveCell.FormulaR1C1 = "1"
End If
を行数(社数?)個コーディングを書いているのですか。
私も何とか繰り回しに持って行こうとしたが、出来なかった。
Sub test06()
If Worksheets("sheet1").CheckBox1.Value = True Then
Range("A2").Select
ActiveCell.FormulaR1C1 = "1"
End If
End Sub
でないと動かなかった。
せめて
If Worksheets("sheet1").CheckBox1.Value = True Then Cells(2, 1) = 1と1行になりますよ。
●Sub test07()
Dim ワード As Object
Dim ワード文書 As Object
Dim フルパス As String
フルパス = "C:\My Documents\FAX送信状.doc" 'フルパスを作成
Set ワード = CreateObject("Word.Application") 'Wordを起動する
ワード.Visible = True 'Wordを表示する
Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く
End Sub
でテストしたが、ワード文書を開くところまでは、普通のスピードで直ちに(約3秒)開きましたよ。私のCPU、メモリ、ディスクは最定レベルですが。
●このあとワードでのVBAで差しこみ印刷のコーディングが質問ですか。質問内容が良く判らない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!