none
wordを操作するとき RRS feed

  • 質問

  • wordでの差し込み印刷時の操作を自動化しようとしています。

    VB.netを初めて使いますので,わからないことだらけで困っています。

    どうぞ,お助け願います。

    wordでつくったアドレス帳にはいくつかのデータがあり,これの変更を自動化しようとしています。

    手始めに一連の操作をマクロに記録し,このコードをそっくり流用したいのですが,下の5つのものが

    「宣言されていません」とのエラーが出ています。

    ActiveDocument  wdFormletters    wdOpenFormatAuto wdMergeSubTypeOAL    wdToggle

    どこに,どのように宣言すればよいのでしょうか。お教え願います。

    Private Sub btnB5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnB5.Click
            With CreateObject("word.application")
                .Visible = True
                .documents.Open("D:\B5.docx")
            End With
    
            ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
            ActiveDocument.MailMerge.OpenDataSource(Name:= _
                "D:\五区南町内会\宛先印刷\アドレス帳\三役.mdb", ConfirmConversions:=False, ReadOnly:=False _
                , LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:="", _
                PasswordTemplate:="", WritePasswordDocument:="", WritePasswordTemplate:= _
                "", Revert:=False, Format:=wdOpenFormatAuto, Connection:= _
                "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=D:\五区南町内会\宛先印刷\アドレス帳\三役.mdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Par" _
                , SQLStatement:="SELECT * FROM `Office Address List`", SQLStatement1:="", _
                 SubType:=wdMergeSubTypeOAL)
            ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
    
        End Sub

    2012年4月27日 10:16

回答

  • どうにか解決できました。

    Public Class Form1
        Private btnArray(2) As System.Windows.Forms.Button
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim I As Integer
            btnArray(0) = btnB5
            btnArray(1) = btnA4
            For I = 0 To 1
                AddHandler btnArray(I).Click, AddressOf ButtonClick
            Next
        End Sub
    
        Private Sub ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim strFilename As String
            Dim strPath1 As String
            Dim strPath2 As String
            strPath1 = "D:\五区南町内会\宛先印刷\封筒\"
            strPath2 = "D:\五区南町内会\宛先印刷\アドレス帳\"
    
            Select Case CType(sender, Button).Text
                Case "B5用封筒"
                    strFilename = "B5用封筒.docx"
                Case "A4用封筒"
                    strFilename = "A4用封筒.docx"
            End Select
            'word文書に宛先データを差し込む
            Dim wdApp As Object
            Dim wdDoc As Object
            wdApp = CreateObject("Word.Application")
            wdDoc = CreateObject("Word.Document")
            With wdApp
                'word文書を開く
                .visible = True
                .documents.open(strPath1 & strFilename)
                'wdDoc.Activate()
                '差し込み
                .ActiveDocument.MailMerge.OpenDataSource( _
                Name:=strPath2 & "三役.mdb", ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True _
                , AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="" _
                , WritePasswordTemplate:="", Revert:=False, Format:=0, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "User ID=Admin;Data Source=" & strPath2 & "三役.mdb" & _
                ";Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";" & _
                "Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Par" _
                , SQLStatement:="SELECT * FROM `Office Address List`", SQLStatement1:="", SubType:=2)
            End With
        End Sub
    End Class
    

    • 回答としてマーク Koyan 2012年4月28日 20:34
    • 回答としてマークされていない Koyan 2012年4月28日 20:35
    • 回答としてマーク Koyan 2012年4月28日 20:35
    2012年4月28日 20:33