とりあえず会社で明日使う用にアップ。
エクセルで差込ファイルを作成してワードファイルを開くのに、エクセルひらきっぱだと差込失敗するのでその対応。
ああ、ワードファイル開いてればいったん閉じる操作もしないとだめか。そこまではとりあえず無視だ。
エクセルファイルのシートを同ディレクトリに特定ファイル名で保存して閉じる。
で、ワードの特定ファイルを開く。
ひらがなの部分を実際のファイル名にする。
そのうちちゃんと解説書くけど今日はここまで。
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でフィルタリングつけて差込印刷したのでいろいろあって使えなかった・・・俺の苦労は・・・
エクセルで差込ファイルを作成してワードファイルを開くのに、エクセルひらきっぱだと差込失敗するのでその対応。
ああ、ワードファイル開いてればいったん閉じる操作もしないとだめか。そこまではとりあえず無視だ。
エクセルファイルのシートを同ディレクトリに特定ファイル名で保存して閉じる。
で、ワードの特定ファイルを開く。
ひらがなの部分を実際のファイル名にする。
そのうちちゃんと解説書くけど今日はここまで。
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でフィルタリングつけて差込印刷したのでいろいろあって使えなかった・・・俺の苦労は・・・