انجمن تخصصی اکسس
جامع ترین انجمن تخصصی اکسس در خانه اکسس ایران
0
با سلام و عرض خسته نباشید.
من یک فایل Word دارم که با Mail merge به فایل اکسسم متصل شده چطوری می تونم از داخل اکسس مثلا با یک دکمه اون فایل word رو با رکورد جاری باز کنم و پرینت بگیرم
با تشکر
مسعود
پاسخ ها (9)
-
پاسخ پذیرفته شده
0با سلام
شما بایستی مرحله انتخاب رکورد جاری رو در داخل اون پرسشی تعبیه کنید که تحت عنوان [queryname] در کد بالا آورده شده است .
در صورتیکه قادر به اینکار نبودید کد فوق را طوری تغییر دهید که کار نموده تمامی رکوردها را نشان دهد و با فایل های مورد نیاز پیوست نمایید مرحله انتخاب رکورد جاری مانند پست قبلی روی این نیز پیاده شود .
با سپاس
کاویان -
پاسخ پذیرفته شده
-1Function main(filter As String)
Dim wordDoc As New Word.Application
Set wordDoc = CreateObject("Word.Application")
Dim templatePath As String, sourceQuery As String
Dim i As Integer
Dim x As Integer
templatePath = "C:\[filepath]" 'your template here
sourceQuery = "[queryname]" 'name of the query in your database
wordDoc.Visible = True 'set connection as visible
wordDoc.Documents.Open templatePath 'open template
wordDoc.ActiveDocument.MailMerge.OpenDataSource Name:= _
"[path to your database]" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=False, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\yourdatabase.mdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDBatabase P" _
, SQLStatement:="SELECT * FROM `" & sourceQuery & "`", SQLStatement1:="" 'link to data source
wordDoc.ActiveDocument.MailMerge.SuppressBlankLines = True
x = wordDoc.ActiveDocument.MailMerge.DataSource.RecordCount
If x > 0 Then
For i = 1 To x 'merge+print each record individually
wordDoc.ActiveDocument.MailMerge.DataSource.FirstRecord = i
wordDoc.ActiveDocument.MailMerge.DataSource.LastRecord = i
wordDoc.ActiveDocument.MailMerge.Execute Pause:=False
wordDoc.PrintOut Background:=True
wordDoc.ActiveDocument.Close Savechanges:=False
Next i
wordDoc.Documents.Close Savechanges:=False
wordDoc.Application.Quit 'exit Word
Set wordDoc = Nothing
End If
End Function -
پاسخ پذیرفته شده
-
پاسخ پذیرفته شده
0با سلام
برای انجام عمل فیلتر رکورد جاری بایستی خط زیر رو جایگزین کد قبلی در دکمه cmdMergeIt بنمایید .
strSQL = "SELECT pasargad.ID, pasargad.first, pasargad.last FROM pasargad where ((pasargad.id)=" & Me.ID & ");"
برای پرینت گرفتن هم بایستی کد
objWord.Application.Documents(2).PrintOut
به تابع OpenMergedDoc اضافه شود .
نمونه پیوست اصلاح شده است .
با سپاس
کاویان -
پاسخ پذیرفته شده
-
پاسخ پذیرفته شده
-
پاسخ پذیرفته شده
برای ارسال پاسخ وارد شوید
برای ثبت پاسخ لازم است وارد شوید. از فرم مقابل برای ورود استفاده منید و اگر کاربر جدید هستید ثبت نام کنید.
اینجا ثبت نام کنید »