Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
アクティブセルのある行のデーターをワードに差し込む
投稿日時: 18/06/14 09:28:24
投稿者: cha2

お世話になります。
職場のパソコンのバージョンが分からないので、指定無しですいません。
現在自宅です。
職場の環境として、ネットに制限がありここのやりとり見れません。
そのため、出勤後は夜までお返事が出来ないことをはじめにお詫び致します。
 
教えて頂きたいことは以下のことです。
受付した情報をVBAのユーザーフォームで入力してエクセルで管理してます。
新規登録したデータは、最終行の下に追加され、A列がアクティブされています。
 
ユーザーフォームで入力した際に、
ワードを立ち上げて新規受付をしたデータを、
差込み別のフォルダーに名前をつけて保存したいと思います。
ワードの文章の保存はVBAでしなくても大した負担ではありませんが、
その都度、ワードを開いて差込を行うのは面倒なので、一連の作業としたいと思ってます。
 
エクセルで文書を作成して差し込めばいいのでしょうけれど、
文章についてはワードでの設定が社内で決まっており、
ワード側で差込印刷を今までしておりました。
 
イメージとしては、以下のような感じです。
 
エクセル側
    A B C
 氏名 内容  N O 
1 あ  い  う
2 え  お  か  
3 き  く  け
 
ワード側
 
  き 様 
 
  く のお申込みについては受け付けを完了しております。
  登録内容についてのご質問には、受付番号として け が必要となります。
 
 
ワードをエクセルで操作するのが初めてで、ネット検索もしましたが、
アクティブしているセルの行のみの差込については見つけることができませんでした。
 
まだ、未熟なもので、どなたか教えていただけたら幸いです。
質問自体慣れていませんので失礼がありましたら、申し訳ありませんが、
よろしくお願い致します。
 
  
 
 
 
 

回答
投稿日時: 18/06/14 10:40:06
投稿者: WinArrow
投稿者のウェブサイトに移動

ワードの差込印刷で使用できる(差込データ側)はExcelシートだkではありません。
 
Excelシートを指定した場合は、シート単位、または、セル範囲単位(名前を定義する)になります。
最終行のデータだけで
Word文書1ページになるような、設計ならば、
 
行データをCSVファイルの出力し(勿論、項目行が必要なので、2行になりますが)
CSVファイルを差込データとする方式を提案します。
 
この方式を採用すると
CSV出力〜Wordの差込〜印刷まで一連の処理がマクロでできます。

投稿日時: 18/06/14 21:20:28
投稿者: cha2

早速お返事頂きありがとうございます。
 
ご提案のイメージは理解出来ますが、実際にどのようにするのかわからず、
ネットで検索したのですが、見つかりませんでした。
 
お恥ずかしい話で申し訳ありませんが、もう少し詳しく教えて頂けないでしょうか?
 
また、契約を更新した場合は、最終行でない場合があります。
その際は、ユーザーフォームで検索して、データの更新をしています。
その場合も更新の受付を完了した通知を送付するために、ワードの文章の作成が必要となります。
 
よろしくお願い致します。

回答
投稿日時: 18/06/14 22:53:43
投稿者: simple

印刷対象を絞り込みたいという話でしたら、
例えばネット検索でヒットする、
 
「Word差し込み印刷:特定の人を除外したい(フィルタ)」
http://office-qa.com/Word/wd444.htm
といった記事を参考にしてはどうでしょうか。
 
Wordで手作業をするのが、結局は早いと思いますよ。

回答
投稿日時: 18/06/14 23:43:10
投稿者: WinArrow
投稿者のウェブサイトに移動

CSV出力のサンプルコードを紹介します。
  
実情に併せて粕tz枚図して下さい。
  
引数のTargetは、ユーザーフォームで指定した行のセルとします。
 出力する行をユーザーフォームで取得するコードは、含まれていません。
  
Wordの差込印刷の関するコードはネットで検索すれば入手できると思いますので、
CSVファイルを指定するようのカスタマイズしましょう。
  
以下、サンプル
 
Sub CSVファイル作成(ByVal Target As Range)
Dim Buf As String
Dim Fno As Integer, colx As Long
 
    Fno = FreeFile
     
    Open "D:\test\差込.csv" For Output As #Fno
    With ActiveSheet
        Buf = ""
        '見出し行
        For colx = 1 To 10
            If Buf <> "" Then Buf = Buf & ","
            Buf = Buf & .Cells(1, colx).Value
        Next
        Print #Fno, Buf
        'データ行
        Buf = ""
        For colx = 1 To 10
            If Buf <> "" Then Buf = Buf & ","
            Buf = Buf & .Cells(Target.Row, colx).Value
        Next
        Print #Fno, Buf
    End With
    Close (Fno)
 
 
End Sub
 

回答
投稿日時: 18/06/14 23:50:23
投稿者: WinArrow
投稿者のウェブサイトに移動

CSVファイルという提案した流れでCSV出力のコードを紹介しましたが、
Excelファイル(差込印刷用作業用ファイル)で出力でも構いません。
 
CSVにこだわる必要はありません。

投稿日時: 18/06/15 07:19:21
投稿者: cha2

simpleさん、ありがとうございます。
後程、「Word差し込み印刷:特定の人を除外したい(フィルタ)」 を確認をしてみます。
 
WinArrowさん、ありがとうございます。
教えていただいたサンプルを元に動作確認をしてみます。
 
また、結果をご報告させて頂きますが、取り急ぎお礼まで。

回答
投稿日時: 18/06/15 08:41:52
投稿者: WinArrow
投稿者のウェブサイトに移動

simple さんの引用:

「Word差し込み印刷:特定の人を除外したい(フィルタ)」

simpleさん、
有意義な情報ありがとうございます。
この場を借りて御礼申し上げます。
 
こんなツールもあったんですね・・・・
 
まだまだ、知らないことが多いと痛感しています。
 
大量データの場合のテストには、便利だと思います。
 

投稿日時: 18/06/18 19:33:32
投稿者: cha2

結果報告が遅くなり申し訳有りません。
 
無事に自動で差込が出来ました。
 
皆様有難うございます。
 
ただ、一難去ってまた一難で、ワードに日付がうまく入りません。
 
ふつうのワードの差し込みでなら、設定方法が分かるのですが、
 
VBからだと設定が使えないようです。
 
平成○年○月○日にならず西暦で○/○/○になってしまいます。
 
これは質問をした内容とは別なので、また改めて質問をさせて頂きます。
 
また、よろしくお願いいたします。