0

我正在尝试将以下 VB6 代码转换为 C#,但正如预期的那样,我遇到了一些问题。谁能帮我吗?这是我第一次尝试使用 MailMerge 文档进行编码。我认为,即使是一些帮助oWord设置对象也应该让我继续前进。我已经设法通过 ODBC 连接查询 400 系统,使我的 C# Windows Forms 应用程序的 ListView 控件充满了数据,现在我需要使用这些数据来执行 MailMerge 文档。

Dim oWD As Object
Dim oDoc As Object
oDoc.MailMerge.Execute

Set oWord = CreateObject("Word.application")
oWord.Visible = False
Set oDoc = oWord.Documents.Open(docpath & docname & ".doc")

 oWord.ActiveDocument.PrintOut Background:=False
 oWord.ActiveDocument.Saved = True
 oWord.ActiveDocument.Close
 oWord.Windows(1).Activate
 oWord.ActiveDocument.Saved = True
 oWord.ActiveDocument.Close
 oWord.Quit (wdDoNotSaveChanges)

Public Sub CommitGroup(ByVal FileSys As String)

   Set oWord = CreateObject("Word.application")
   oWord.Visible = False
   Set oDoc = oWord.Documents.Open(docpath & docname & ".doc")

   For i = 1 To counter

     oWord.ActiveDocument.MailMerge.DataSource.FirstRecord = i
     oWord.ActiveDocument.MailMerge.DataSource.LastRecord = i

     If FileSys = "NAI" Or FileSys = "NTM" Or FileSys = "PAI" Or FileSys = "PTM" Then
       idx1 = Format(oWord.ActiveDocument.MailMerge.DataSource.DataFields.Item(4).Value, "000000")
       idx2 = ""
       idx3 = ""
       FYIDocName = UCase(Mid(FileSys, 1, 1)) & "%" & idx1 & "%" & idx2 & "%" & idx3 & _
                   "%CORRESPONDENCE%OUTGOING - ACKNOWLEDGEMENT%" & Format(Now, "yyyy-MM-dd-hh.mm.ss") & "BATCH" & i
     Else
       idx1 = Format(oWord.ActiveDocument.MailMerge.DataSource.DataFields.Item(21).Value, "000000")
       idx2 = oWord.ActiveDocument.MailMerge.DataSource.DataFields.Item(4).Value
       idx3 = Format(oWord.ActiveDocument.MailMerge.DataSource.DataFields.Item(5).Value, "000000")
       FYIDocName = UCase(Mid(FileSys, 1, 1)) & "%" & idx1 & "%" & idx2 & "%" & idx3 & _
                   "%CORRESPONDENCE%OUTGOING - ACKNOWLEDGEMENT%" & Format(Now, "yyyy-MM-dd-hh.mm.ss") & "BATCH" & i
     End If
     oWord.ActiveDocument.MailMerge.Execute

     oWord.ActiveDocument.SaveAs FileName:="c:\temp\to fyi\" & Trim(FYIDocName) & "BATCH.doc"
     oWord.ActiveDocument.Close
     oWord.ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextDataSourceRecord
   Next


oWord.Quit (wdDoNotSaveChanges)

End Sub
4

0 回答 0