うちンち

パソコンと家族と、ときどき爆弾。

仮置き

2009-07-29 | エクセルおぼえがき
とりあえず会社で明日使う用にアップ。
エクセルで差込ファイルを作成してワードファイルを開くのに、エクセルひらきっぱだと差込失敗するのでその対応。
ああ、ワードファイル開いてればいったん閉じる操作もしないとだめか。そこまではとりあえず無視だ。
エクセルファイルのシートを同ディレクトリに特定ファイル名で保存して閉じる。
で、ワードの特定ファイルを開く。
ひらがなの部分を実際のファイル名にする。
そのうちちゃんと解説書くけど今日はここまで。
2003で動作確認、2007で動くのか不明。

Sub hozon()
Dim exfile As String
Dim exname As String
Dim wdfile As String
Dim wdname As String

exname = "エクセルファイル名拡張子付"
exfile = ActiveWorkbook.Path & exname

Sheet1.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs filename:=exfile
ActiveWorkbook.Close

wdfile = "ワードファイル名拡張子付"
wdname = ActiveWorkbook.Path & wdfile

Dim wdobj As Object
Dim wdbook As Object

Set wdobj = CreateObject("Word.Application")
wdobj.Visible = True

Set wdbook = wdobj.documents.Open(wdname)

End Sub

でもってワード側のマクロ。

現在のレコード出力

With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
End With

レコード別ファイルで全出力

ActiveWindow.Panes(1).Activate
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With

ファイル名は
"支出伺" & "日付" & "任意の文字列".doc
とする。
日付取得のためにシートのどこかにこっそり起案日を差し込んどく。
これを変数に取り込んで、「エクセルファイルと同じフォルダに以下のファイル名で保存されます」のメッセージとともにユーザーフォームに表示。
任意の文字列をテキストボックスで入力できるようにし、あわせてファイル名の変数として取得。

&ファイル名をつけて保存
ActiveDocument.SaveAs FileName:= ファイル名の変数

<追記>
2007でフィルタリングつけて差込印刷したのでいろいろあって使えなかった・・・俺の苦労は・・・

最新の画像もっと見る