Access初心者です。
使用バージョンは、Access・Wordともに2007です。
Accessのクエリー/テーブルをWord文書に差し込み、Accessから起動してその差し込み文書を印刷したいのですが、うまくいきません。
Getobjectを使ってWordの差し込み文書テストを印刷する以下のようなプロシジャを作成しました。
予め、手動でWordを起動してから、このプロシジャを実行すると、文書『テスト』を開く前に「次の文書を開くと次のコマンドが実行されます。Select*fromテーブル名 データベースのデータが文書に挿入されます続行しますか?」のメッセージが表示されて応答確認が来るのですが、Wordを起動せずに実行すると、上記のメッセージは表示されず、テーブル内のデータに更新がかかっているにもかかわらず、上記メッセージで「いいえ」と応答したのと同様の状態で印刷されます。

はたして、こんなプロシジャでよいのか、使用方法が間違っているのかすら見当がつきません。どなたかアドバイスをお願いいたします。

(作成したプロシジャ)
On Error GoTo エラー発生
Dim WordFilePass As String
WordFilePass = "C:\Users\User1\Documents\テスト.docx"
Dim MyWord As Word.Application
Set MyWord = GetObject(, "Word.Application")
MyWord.Visible = True
MyWord.Documents.Open FileName:=WordFilePass
MyWord.ActiveDocument.PrintOut
MyWord.Application.Quit
Set MyWord = Nothing
エラー発生:
If Err.Number = 429 Then
Set MyWord = CreateObject("Word.Application")
Resume Next
Else
MsgBox "エラーNo : " & Err.Number & vbNewLine & vbNewLine & _
"エラー内容 : " & Err.Description
End If

このQ&Aに関連する最新のQ&A

A 回答 (3件)

変数名がダブっていました。


下記*行変更下さい。

Private Sub InsertDoc(MyDataName As String) 'MyDataNameは、元データのテーブル又はクエリー名 *
Dim myWrd As Object 'オリジナル文書をセット
Dim myTMP As Object 'テンプレート文書用
Dim MyName As String 'テンプレート文書名
Dim myLooP As Long
Dim LineNum As Integer

'差込印刷のオリジナル文書
Const myFileP As String = "C:\差込印刷.doc"
'テンプレートを保存するフォルダパス(+\)
Const myPath As String = "C:\"

LineNum = DCount("*", MyDataName) 'テーブル又はクエリーのレコード数を取得 *
    • good
    • 0
この回答へのお礼

ありがとうございます。
たいへん参考になりました。試行錯誤しましたがおかげさまで、うまくいきました。
お礼がおそくなりもうしわけございませんでした。

お礼日時:2009/05/18 13:08

私も同じことを行おうとして、質問を考えていました。


imogasiさんの回答は、大変参考となりました。ありがとうございました。
リンク先のコードから下記のような形にしてみました。
差し込み実行後、作成されたワード文書を印刷するとともに、ワードファイルとして保存します。印刷は確認していませんが、ファイルは問題なく作成できました。
このような回答の仕方がルール違反でしたら、お詫びします。

Private Sub InsertDoc(MyName As String) 'MyNameは、元データのテーブル又はクエリー名
Dim myWrd As Object 'オリジナル文書をセット
Dim myTMP As Object 'テンプレート文書用
Dim MyName As String 'テンプレート文書名
Dim myLooP As Long
Dim LineNum As Integer

'差込印刷のオリジナル文書
Const myFileP As String = "C:\差込印刷.doc"
'テンプレートを保存するフォルダパス(+\)
Const myPath As String = "C:\"

LineNum = DCount("*", MyName) 'テーブル又はクエリーのレコード数を取得
If LineNum = 0 Then
MsgBox "レコードがありません!", vbExclamation + vbOKOnly, "確認"
Exit Sub
End If
'ワードオブジェクトの取得
Set myWrd = GetObject(myFileP)
Set myTMP = GetObject(Class:="Word.Application")

'差込
For myLooP = 1 To LineNum 'レコード数だけループする
With myWrd
With .MailMerge
.Destination = 0
.SuppressBlankLines = True
With .DataSource
.FirstRecord = myLooP
.LastRecord = myLooP
End With
.Execute Pause:=False
End With

'文書の印刷、保存
MyName = myPath & "差込済み文書" & Format(Date, "yymmdd") & "_" & myLooP & ".doc"
myTMP.Application.ActiveDocument.PrintOut
myTMP.Application.ActiveDocument.SaveAs FileName:=MyName, FileFormat:=wdFormatDocument
myTMP.Application.ActiveDocument.Close
End With
Next

myWrd.Close

Set myTMP = Nothing
Set myWrd = Nothing

MsgBox LineNum & "個のファイル" & myPath & "差込済み文書" & Format(Date, "yymmdd") & "_1 - " & _
LineNum & ".doc が作成されました。"

End Sub
    • good
    • 1

初心者と称して、こんなことをやろうとするのは無謀。


ワードの世界にプログラムで入るなら、ワードのVBAの知識が必要。この情報はWEBでも少ない(解説書では皆無?)、し、経験者も少ないと思う。
難しいことをやりたいなら、自分で苦労して勉強する(期間も当然かかる)のが筋。出来なければ、あきらめること。
ーー
ワードの差込印刷のコードはどうなるか
それをアクセスの世界からWord.Applicationの世界に入ったらどう修正が必要か
の情報を探すこと。
ーー
根本的に
アクセスの世界で
アクセスデータークエリで選択・順序ーレポート印刷
ではいけないのか
ーー
質問は
(1)アクセス起動ーワードに変化部分データー地はワード文書ー機能はワードのMailmerge か
(2)アクセス起動ーアクセスに変化部分データー地はワード文書ー機能はMailmerge か
(2)らしいね。
だったら
(3)前記 アクセスの世界で
アクセスデータークエリで選択・順序ーレポート印刷
の方が勉強が易しいと思う。
他ソフトと連携など先の先に勉強することだと思う。
こんな複雑なことをやる必要があるのは、質問者はソフト業界の社員かな。それなら先輩にそういう経験者がいるのではと思うのでその方に聞いたら。そういうパターンの質問ならここに質問することでは無い。個人なら他ソフトにまたがるような仕組みを複雑にしない選択を出来るだろうから、すること。
===
WEBでは、参考になりそうなのは
http://www.accessclub.jp/bbs5/0017/vba4974.html
ぐらいかな。
Googleで「ワード 差込印刷 VBA」で照会しましたか。
エクセルとの関連が多いようだが、丁寧に当たってみては。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
無謀ですか・・・。初心者ゆえのことです。
私はソフト業界の社員ではありません。諸事情により業務でいきなりAccessをする事になりました。
運用上の背景もありWordとの連携印刷を考えました。ネットで調べたらWordを印刷するサンプルが掲載されていたので、使ってみましたが知り合いに誰も聞く人がいないのでここで質問した次第です。
仰せの通り、別の方法も模索しつつ苦労してみます。

お礼日時:2009/05/16 12:39

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q洗面台 シャワーホース ネジ規格

洗面台のシャワーホースが切れた為、交換をしようとネジのサイズを計ってみました。
洗面台内部でネジ接合されています。
ホース側のネジ寸法を測ったのですが規格と一致しません。

ホース端末のネジはオス (固定側はパッキン付き)
ネジ外径は約19mm
ネジピッチは3山で約4mm→(25.4/20)?
ネジ形状は平行ネジ

このネジでPT3/8又はPT1/4に変換出来るブッシングを探しています。

詳しい方宜しくご指導お願いします。

Aベストアンサー

ここにありませんか?
商品検索 | 三栄水栓製作所webサイト ( http://www.san-ei-web.co.jp/view.php?pageId=1008&genre2=7731&genre1=7726&searchFlag=1 )2ページ--続きもあります。

Qcopy C:\Documents and Settings\*.*が出来ない

C:\Documents and Settingsは通常のフォルダではないのですか? copy C:\Documents and Settings\*.* c:\が出来ません。
どの様に指定するのか教えてください。

Aベストアンサー

フォルダやファイル名の Path にスペースが含まれていると
そこで命令文の区切りとして解釈されてしまうのでダブルクォーテーションで
括って、copy "C:\Documents and Settings\*.*" c:\
では如何でしょう?

ただ、当方ではcopy C:\Documents and Settings直下には
ファイルが有りませんので、結局何もコピーできませんでしたけど・・
フォルダごとのコピーなら、Xcopy を使われては?

Qパソコンのネジについて

エレコムの、HDMI端子機器と,、DVI端子機器を、接続可能にするケーブルを購入し、
パソコン側にDVI端子、モニター側にHDMI端子でつないでいるんですが、
パソコン側のモニターケーブルの差し込み口のネジに、
ケーブル(DVI端子)側のネジが、うまく(入って)締めることができません。

>>http://www2.elecom.co.jp/cable/av/cac-htd/index.asp

手で押さえている限りでは、映像はきちんと映るのですが。
締め込むオス側(DVI端子)のネジの直径がほんの少し大きい様で、
うまく、パソコンのモニター端子の差し込み口のネジ穴に、締め込む事ができません。

パソコンのモニター端子の差し込み口のネジ穴(これもネジなので交換可能です)を、
もう少し大きい物に、交換できれば良いのですが、そのようなネジなどあるのでしょうか?

困っています。

よろしく、お願いします。

Aベストアンサー

お使いのPC(ビデオカード)のメーカーと型番は?

DVIのコネクタの固定用ネジはインチネジの#4-40の筈ですが、もしかしたらミリネジのM2.6当たりが付いてる気がしますけど・・・。

http://www.neji.co.jp/kikaku.htm


一応下記のような製品はありますが、もし本当にビデオカード側にミリネジが付いているのなら、そのメーカー等に問い合わせた方がいいと思いますけど。
製造ミス等の可能性があります。

http://www.cabling-ol.net/cabledirect/LN.php

QApplication.DisplayAlerts =Falseでも警告される?

下記のコードを実行するとSheet1という名前のシートがないBookを開いた場合、「統合元ファイル○○のSheet1を開けません」という警告がでます。
無ければ集計しなくていいので「はい」を押せばいいのですが、その都度止まってしまうのは困ります。
Application.DisplayAlerts = False としても警告されるのはなぜでしょうか?出ないようにすることは出来ないのでしょうか?

Sub test03() 'Sheet1のみ開かずに統合
Dim MyFile As String, MyPath As String
Dim SumFile() As Variant, i As Long
MyPath = ThisWorkbook.Path & "\"
MyFile = Dir(MyPath & "*.xls", vbNormal)
Do Until MyFile = ""
If MyFile <> ThisWorkbook.Name Then
ReDim Preserve SumFile(i)
Application.DisplayAlerts = False
SumFile(i) = "'" & MyPath & "[" & MyFile & "]Sheet1'!R1C1:R10C2" 'A1からB10のLinkを変数に代入
Application.DisplayAlerts = True
i = i + 1
End If
MyFile = Dir
Loop
If i = 0 Then MsgBox "データが有りません ( ̄□ ̄;)!!": Exit Sub
Worksheets("Sheet1").Range("A1").Consolidate Sources:=SumFile()
End Sub

下記のコードを実行するとSheet1という名前のシートがないBookを開いた場合、「統合元ファイル○○のSheet1を開けません」という警告がでます。
無ければ集計しなくていいので「はい」を押せばいいのですが、その都度止まってしまうのは困ります。
Application.DisplayAlerts = False としても警告されるのはなぜでしょうか?出ないようにすることは出来ないのでしょうか?

Sub test03() 'Sheet1のみ開かずに統合
Dim MyFile As String, MyPath As String
Dim SumFile() As Variant, i As Long
MyPath...続きを読む

Aベストアンサー

横から失礼します。

> ブックをOpenせずにSheet1の存在確認をする方法はありますか?

これをヒントに関数化してみて下さい。

Sub Sample()

  ' ExecuteExcel4Macro メソッドを使う方法
  ' ダミーアクセスしてエラーになったらシートは無い
  
  Dim strQry As String
  Dim Dummy As Variant
    
  strQry = "'C:\[test.xls]Sheet1'!R1C1"
  Dummy = Application.ExecuteExcel4Macro(strQry)
  If IsError(Dummy) Then
    MsgBox "Sheet1 は無い"
  Else
    MsgBox "Sheet1 が在る"
  End If

End Sub

Qネジ閉め開閉蓋を作るとき

手作りのおもちゃによくネジ式の蓋をつけて中に電池ボックスを仕込むのですが


角材に予穴を小さく開けてネジを入れ込むと、最初はきっちりつくのですが、二回目以降きちんとしまらなくなって困っています。ネジがくるくるといつまでも回り、絞まりきりません。

ネジをつけるのが木材だからいけないんでしょうか?市販の電池式おもちゃのように、プラや塩ビにネジをつけるという方法なら何度もはずしたり閉めたりできますか?

Aベストアンサー

素材が柔らかいプラスチックや木材などに
シッカリしたネジ山を作りたい場合はこういったスピンサートを使います。
http://b-field.net/?pid=7391606

加工の仕方はスピンサートがキツく入る程度に開口してから打ち込むだけですが、
白木などの柔らかい木材ならば打ち込む前にエポキシ接着剤など
浸透性のある接着剤を塗布しておけばさらに強固になります。

Q\_vti_pvt\service.lckが開けないため、書き込めません。

新旧二つのパソコンがLANでつないであります。

新:XP+officeXP(FRONTPAGEなし)
旧:98SE+office2000(FRONTPAGEあり)

これまで旧でweb作成をしていたのですが、旧の外付けだったHDを新に接続しました。

「MyWeb」もこのHDにあります。そこで、旧から新の外付けであるこのHDの「MyWeb」にあるwebを開こうとしたら、タイトルのようなエラーメッセージが出て開けません。

新の方からはこのwebは開けます。

また、LANによるファイルの共有は問題なく出来ます。

XP用のFRONTPAGEを購入せずに、旧でそのままweb作成をしたいのですが、このエラーを解決する方法はあるのでしょうか?

面倒なお尋ねで申し訳ありませんが、よろしくご教示下さい。

Aベストアンサー

以下のサイトが参考になればよいのですが・・・

参考URL:http://support.microsoft.com/kb/303255/ja

Q【ネジ径の】M10×1.5PのMとPの意味って何ですか? どういう意味ですか M10×1.5Pの

【ネジ径の】M10×1.5PのMとPの意味って何ですか?

どういう意味ですか

M10×1.5Pのディスクグラインダーアクセサリーの塩ビ用又は板金用が欲しいです。

M10がインパクトの六角軸の大きさ?

1.5Pは見当も付きません。

M10×1.5Pのグラインダーアクセサリーのディスクでとゆ用と板金用(薄い金属用)を探しています。

塩ビ用の電動ノコギリを買うのは勿体ない。

インパクトはある。

手鋸はしんどいので嫌だという状況です。

Aベストアンサー

M10というのは外径10mmのメートル規格ねじのことを示します。
P1.5というのはねじのピッチ、ねじ山とネジ山の間隔が1.5mmということです。

http://www.toishi.info/jis_iso/index.html#mneji

一般的な100mm径の砥石を使うディスクグラインダー先端の工具取付け用スピンドル部のねじサイズです。

ロックナットの予備も普通に売っているはずです。
http://www.amazon.co.jp/TRUSCO-%E3%83%88%E3%83%A9%E3%82%B9%E3%82%B3%E4%B8%AD%E5%B1%B1-DPDLN-%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%82%B0%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%80%E3%83%BC%E7%94%A8%E6%A8%99%E6%BA%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%8A%E3%83%83%E3%83%88-%E5%85%BC%E7%94%A8%E5%9E%8B/dp/B00B4TCMNO


>M10×1.5Pのディスクグラインダーアクセサリーの塩ビ用又は板金用が欲しいです。

こういう切断砥石のことでしょうか?
http://www.amazon.co.jp/%E4%B8%8D%E6%98%8E-No-108-%E3%83%93%E3%82%AF%E3%83%88%E3%83%AA%E3%83%BC-%E5%88%87%E6%96%AD%E7%A0%A5%E7%9F%B3-FRP%E3%80%81%E5%A1%A9%E3%83%93%E3%80%81%E3%83%97%E3%83%A9%E3%82%B9%E3%83%81%E3%83%83%E3%82%AF%E7%94%A8/dp/B00573054Q


ディスクグラインダーの回転速度が速すぎる場合は変速ダイヤル付きのグラインダーを使用するか、後付の速度コントローラーを使用してください。
http://www.amazon.co.jp/%E3%82%A2%E3%82%A4%E3%82%A6%E3%83%83%E3%83%89-iwood-87305-%E3%82%B9%E3%83%94%E3%83%BC%E3%83%89%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC-PW-1500/dp/B004GFKLMC

M10というのは外径10mmのメートル規格ねじのことを示します。
P1.5というのはねじのピッチ、ねじ山とネジ山の間隔が1.5mmということです。

http://www.toishi.info/jis_iso/index.html#mneji

一般的な100mm径の砥石を使うディスクグラインダー先端の工具取付け用スピンドル部のねじサイズです。

ロックナットの予備も普通に売っているはずです。
http://www.amazon.co.jp/TRUSCO-%E3%83%88%E3%83%A9%E3%82%B9%E3%82%B3%E4%B8%AD%E5%B1%B1-DPDLN-%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%...続きを読む

QWORD校閲用文書

校閲用文書の作成なのですが、PC一台しかないので混乱してます。文書の比較と反映ダイアログボックスで●反映●現在の文書に反映●新しい文書に反映と3つの中から選ぶんですけど、それぞれの違いがよくわかりません。office2002 

Aベストアンサー

もう1つ参考URL書いておきます。

参考URL:http://dr.cyber-e.jp/modules/newbb/viewtopic.php?topic_id=56&forum=20

Q水道の塩ビ管の接続方法

水道の塩ビ管の接続には、接着剤を使うのは知っていますが、
ネジを切ってある部分どうしの接続には、シールテープを使うのでしょうか?
それとも、接着剤を使うのでしょうか?

先日、シールテープを巻いて接続したのですが、
テープをしっかり巻いて(5回ほど)、
しっかりネジ部分も回したつもりだったのですが、
その部分から、水がわずかに漏れてきます。
ひょっとして、間違っていたのでしょうか?

Aベストアンサー

 接着剤とおっしゃっているのはヘルメチック剤だと思うのですが、シールテープもヘルメも隙間充填剤です。ヘルメは接着剤としての機能もありますが、時間がたって乾いたときに収縮して隙間を作らないようにできています。

ヘルメは鋼管用の「黒」と塩ビ管用の「白」がありますが、当然白の方を使います。シールテープを巻く前にヘルメ剤を薄く塗っておいて、シールテープを巻きます。シールテープは巻く方向がありますのでご注意ください。配管の切り口を上に向けたときに時計回りとなります。

 シールテープの巻き方で漏れが防げるかどうか決まります。まずねじの根本の方から巻き始め、きれいに重なるように切り口の方へ巻き上げていきます。そのときシールテープは引っ張りながら巻きます。シールテープはのびますので切り口にふさがるように余ると仕上がりが汚くなりますし、流速を妨害しますので、きれいに切り口にあわせて巻いたらまた根本の方に向かって巻き下げます。シールテープの切り口がネジの部分にさしかからないように巻き始めたところに戻るようにするとよいでしょう。

 シールテープはどのポイントを取っても多くて3重になるように巻くのがふつうだと思いますが、巻いたときに巻きが美しいなら、たいていは漏れません。またメスネジの管(ソケット)に締め込んだときに、余ったシールテープがジュルジュルはみだしてくるようならたいていは失敗です。

 シールテープを巻いたら、軍手をつけた手でシールテープを巻いたネジの部分を強く握り込んでシールテープがネジの隙間に入り込むように管に対して手が時計回りになるようにぐりぐり回してください。その上からヘルメをまた薄く塗りその状態でメスの配管に十分な力でねじ込めば漏れないようになるはずです。

 漏れた場合は外部から何とかしようと考えず、一度ばらして、ネジをきれいにしてもう一度シーリングをやり直すのがよいかと思います。

 自分ちの水道工事やLAN工事しかやったことがないので自信なしとします。LANは埋設ですが、水検知センサーが作動したことはないので、密閉は大丈夫だと思います。あくまで自己流ですが。

 接着剤とおっしゃっているのはヘルメチック剤だと思うのですが、シールテープもヘルメも隙間充填剤です。ヘルメは接着剤としての機能もありますが、時間がたって乾いたときに収縮して隙間を作らないようにできています。

ヘルメは鋼管用の「黒」と塩ビ管用の「白」がありますが、当然白の方を使います。シールテープを巻く前にヘルメ剤を薄く塗っておいて、シールテープを巻きます。シールテープは巻く方向がありますのでご注意ください。配管の切り口を上に向けたときに時計回りとなります。

 シールテ...続きを読む

Qword文書が読めなくなりました

OS:Windows XP Word:office2000
最近WordをSP-3にアップデートしました。
そうすると今まで読めていたファイルが読めなくなってしまいました。エラーは下記です。
『文書名またはパスが間違っています。 次の操作を行ってください :
* 文書またはドライブのアクセス権を確認してください。
* [ファイル] メニューの [開く] をクリックして文書を開いてください。』
 マイクロソフトのホームページを見ましたがよくわかりません。
 Office XPにすれば読めるのでしょうか?

Aベストアンサー

ノーマルな文書が読めないのですね。
Office XPを使える環境ならそちらで読み込んでみては。
ただ、原因は違うところにあるようですが...(?_?)

Wordをセーフモードで立ち上げてメニューのファイル→開くではいかがですか?
[スタート]→[ファイル名を指定して実行]
「 winword /a 」と入力し、OK。
これでもファイルが見つからないなら、保存先を変えてみるとかでも駄目でしょうか?

う~んこれでも駄目なら、判らないですねm(__)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報