PDA

View Full Version : سوال: کمک فوری (سوال تخصصی)



Nader700
پنج شنبه 05 بهمن 1402, 22:22 عصر
سلام
من برای خروجی از اکسس به ورد مقاله زیر رو مطالعه کردم و مراحل رو انجام دادم خیلی مفید و کاربردی بود ولی من یه مشکلی که دارم این که فکر کنم تا 255 کارکتر رو به ورد انتقال میده من در آدرس پست و فایل راهنمای اون رو اینجا قرار میدم و از اساتید عزیز تقاضا دارم که به بنده کمک کنن من میخوام در حد یک صفحه ورد تایپ شده رو انتقال بدم و 255 کارکتر کمه
لطفا راهنمایی کنید که چطوری کد ها رو تغییر بدم که به نتیجه دلخواه برسم.
فایل راهنما :
155297155297

https://barnamenevis.org/showthread.php?439892-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%A8%D9%87-%D9%88%D8%B1%D8%AF(Access-To-Word)

eb_1345
جمعه 06 بهمن 1402, 00:35 صبح
سلام
من برای خروجی از اکسس به ورد مقاله زیر رو مطالعه کردم و مراحل رو انجام دادم خیلی مفید و کاربردی بود ولی من یه مشکلی که دارم این که فکر کنم تا 255 کارکتر رو به ورد انتقال میده من در آدرس پست و فایل راهنمای اون رو اینجا قرار میدم و از اساتید عزیز تقاضا دارم که به بنده کمک کنن من میخوام در حد یک صفحه ورد تایپ شده رو انتقال بدم و 255 کارکتر کمه
لطفا راهنمایی کنید که چطوری کد ها رو تغییر بدم که به نتیجه دلخواه برسم.
فایل راهنما :
155297155297

https://barnamenevis.org/showthread.php?439892-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%A8%D9%87-%D9%88%D8%B1%D8%AF(Access-To-Word)




فایل ضمیمه رو بررسی کن !

eb_1345
شنبه 07 بهمن 1402, 19:13 عصر
..............................

Nader700
شنبه 07 بهمن 1402, 22:47 عصر
سلام دستت درد نکنه خیلی ممنونم
ببخشید دیر جواب دادم یه مشکلی داشتم دیر شد
من فایل ضمیمه رو بررسی کردم فایل خوبیه فقط وقتی دکمه روی فرم رو میزنم فایل اکسس هنگ میکنه
بعد اینکه شما یک فیلد در جدول رو انتقال میده من میخوام داخل یک فرمم که بیش از 20 تا فیلد داره تقریبا 9 تا فیلدی رو که من میخوام رو خروجی ورد بگیره
با اون روش بالا کار رو انجام میده . ولی من دو تا از فیلد هام تعداد کاراکتر بیشتری داره و سوالم این بود که یه زحمت بکشید فایل ضمیمه رو چک کنید ببینید راهی هست که کد های اون رو تغییر بدید تا مشکل من رفع بشه ممنون میشم

eb_1345
یک شنبه 08 بهمن 1402, 03:21 صبح
با توجه به اینکه اطلاعات جدول در فرم و در نمای Single Form نمایش داده میشه میتونید کدها رو بصورت زیر هم تغییر دهید:


Public Sub PopulateBookmarks()
Dim sPathName As String
Dim sDocName As String
Dim sFamily As String
Dim sFamilyTable As String
Dim iSeqNum As Integer
Set db = CurrentDb()
Set WordApp = New Word.Application
WordApp.Visible = True
DoCmd.Hourglass True
sPathName = GetCurrentPathName
sDocName = QUOTE & sPathName & "Sanad.Docx" & QUOTE
Set WordDoc = WordApp.Documents.Add(sDocName)
WordDoc.FormFields("ID").result = ID
WordDoc.FormFields("NameP").result = NameP
WordDoc.FormFields("Family").result = Family
'WordDoc.FormFields("Job").result = Job
WordDoc.Bookmarks("Job").Range.InsertAfter Me.Job
Set WordDoc = Nothing
DoCmd.Hourglass False
MsgBox "عمليات انتقال رکورد جاري به محيط ورد به پايان رسيد", vbOKOnly
End Sub

در خصوص مشکل محدودیت 255 کارکتر تکست باکس ورد یک گزینه امتحان کردم و تقریبا جواب هم داد و اون اینکه از خاصیت Range.InsertAfter تکست نشانه گذاری شده استفاده کنی
فرض می کنیم تعداد کارکترهای فیلد Job بیشتر از 255 باشد و میخواهی تمام کارکترهای این فیلد در فایل ورد درج شود . برای اینکار بجای کد :


WordDoc.FormFields("Job").result = Job

از کد :


WordDoc.Bookmarks("Job").Range.InsertAfter Me.Job

استفاده کن
تنها مشکل این حالت اینه که متن در داخل تکست باکس درج نمیشه و بعد از تکست باکس درج میشه
فعلا علی الحساب این حالت رو امتحان کن تا بعدا اگه فرصت بود ان شاءالله حالت های دیگه هم امتحان کنیم

Nader700
یک شنبه 08 بهمن 1402, 23:49 عصر
با توجه به اینکه اطلاعات جدول در فرم و در نمای Single Form نمایش داده میشه میتونید کدها رو بصورت زیر هم تغییر دهید:


Public Sub PopulateBookmarks()
Dim sPathName As String
Dim sDocName As String
Dim sFamily As String
Dim sFamilyTable As String
Dim iSeqNum As Integer
Set db = CurrentDb()
Set WordApp = New Word.Application
WordApp.Visible = True
DoCmd.Hourglass True
sPathName = GetCurrentPathName
sDocName = QUOTE & sPathName & "Sanad.Docx" & QUOTE
Set WordDoc = WordApp.Documents.Add(sDocName)
WordDoc.FormFields("ID").result = ID
WordDoc.FormFields("NameP").result = NameP
WordDoc.FormFields("Family").result = Family
'WordDoc.FormFields("Job").result = Job
WordDoc.Bookmarks("Job").Range.InsertAfter Me.Job
Set WordDoc = Nothing
DoCmd.Hourglass False
MsgBox "عمليات انتقال رکورد جاري به محيط ورد به پايان رسيد", vbOKOnly
End Sub

در خصوص مشکل محدودیت 255 کارکتر تکست باکس ورد یک گزینه امتحان کردم و تقریبا جواب هم داد و اون اینکه از خاصیت Range.InsertAfter تکست نشانه گذاری شده استفاده کنی
فرض می کنیم تعداد کارکترهای فیلد Job بیشتر از 255 باشد و میخواهی تمام کارکترهای این فیلد در فایل ورد درج شود . برای اینکار بجای کد :


WordDoc.FormFields("Job").result = Job

از کد :


WordDoc.Bookmarks("Job").Range.InsertAfter Me.Job

استفاده کن
تنها مشکل این حالت اینه که متن در داخل تکست باکس درج نمیشه و بعد از تکست باکس درج میشه
فعلا علی الحساب این حالت رو امتحان کن تا بعدا اگه فرصت بود ان شاءالله حالت های دیگه هم امتحان کنیم

سلام ممنونم که وقت گذاشتی
باشه حتما من این رو تست می کنم و خبرش رو بهتون میدم
من یه مشکلی که دارم اینه که اینترنت خانگی که استفاده می کنم اینترنت ثابت ایرانسل هست که نمیدونم چرا بیشتر مواقع سایت رو بالا نمیاره بخاطر اینه دیر جواب میدم.

Nader700
دوشنبه 09 بهمن 1402, 16:45 عصر
با توجه به اینکه اطلاعات جدول در فرم و در نمای Single Form نمایش داده میشه میتونید کدها رو بصورت زیر هم تغییر دهید:


Public Sub PopulateBookmarks()
Dim sPathName As String
Dim sDocName As String
Dim sFamily As String
Dim sFamilyTable As String
Dim iSeqNum As Integer
Set db = CurrentDb()
Set WordApp = New Word.Application
WordApp.Visible = True
DoCmd.Hourglass True
sPathName = GetCurrentPathName
sDocName = QUOTE & sPathName & "Sanad.Docx" & QUOTE
Set WordDoc = WordApp.Documents.Add(sDocName)
WordDoc.FormFields("ID").result = ID
WordDoc.FormFields("NameP").result = NameP
WordDoc.FormFields("Family").result = Family
'WordDoc.FormFields("Job").result = Job
WordDoc.Bookmarks("Job").Range.InsertAfter Me.Job
Set WordDoc = Nothing
DoCmd.Hourglass False
MsgBox "عمليات انتقال رکورد جاري به محيط ورد به پايان رسيد", vbOKOnly
End Sub

در خصوص مشکل محدودیت 255 کارکتر تکست باکس ورد یک گزینه امتحان کردم و تقریبا جواب هم داد و اون اینکه از خاصیت Range.InsertAfter تکست نشانه گذاری شده استفاده کنی
فرض می کنیم تعداد کارکترهای فیلد Job بیشتر از 255 باشد و میخواهی تمام کارکترهای این فیلد در فایل ورد درج شود . برای اینکار بجای کد :


WordDoc.FormFields("Job").result = Job

از کد :


WordDoc.Bookmarks("Job").Range.InsertAfter Me.Job

استفاده کن
تنها مشکل این حالت اینه که متن در داخل تکست باکس درج نمیشه و بعد از تکست باکس درج میشه
فعلا علی الحساب این حالت رو امتحان کن تا بعدا اگه فرصت بود ان شاءالله حالت های دیگه هم امتحان کنیم

سلام بسیار ممنون و سپاسگزارم
من این روش رو تست کردم جواب میده همون طور که خودتون فرمودین (مشکل این حالت اینه که متن در داخل تکست باکس درج نمیشه و بعد از تکست باکس درج میشه ) البته این روش خوبیش اینه که متن قابل ویرایش هست ولی در حالت قبلی اینجوری نبود
این روش شما روش خوبیه (فقط من برای فیلد های دیگه ای که دارم استفاده کردم بعد از تکس باکس هست راهی هست یه دونه اینتر بخوره خط بعد نشونش بده)
اگه روش بهتری هم غیر از این هست بگید ممنون میشم

eb_1345
دوشنبه 09 بهمن 1402, 22:03 عصر
سلام بسیار ممنون و سپاسگزارم
من این روش رو تست کردم جواب میده همون طور که خودتون فرمودین (مشکل این حالت اینه که متن در داخل تکست باکس درج نمیشه و بعد از تکست باکس درج میشه ) البته این روش خوبیش اینه که متن قابل ویرایش هست ولی در حالت قبلی اینجوری نبود
این روش شما روش خوبیه (فقط من برای فیلد های دیگه ای که دارم استفاده کردم بعد از تکس باکس هست راهی هست یه دونه اینتر بخوره خط بعد نشونش بده)
اگه روش بهتری هم غیر از این هست بگید ممنون میشم

در نمونه اصلاح شده جدید کدها رو بصورت زیر تغییر دادم :
1- برای تمام فیلدها از خاصیت Range.InsertAfter استفاده کردم ( بجهت امکان ویرایش)
2-با استفاده از خاصیت Delete هر کدام از تکست های نشانه گذاری شده رو حذف کردم( در این حالت مقدار هر فیلد مستقیماً در رو بروی کپشن فیلد مربوطه قرار می گیرد)

نمونه اصلاح شده رو بررسی کن !
فقط فراموش نکن در هنگام ذخیره فایل ورد از نام Sanad.docx که بعنوان فایل اصلی که تکست باکس ها در اون درج شده استفاده نکنی!
ضمناً در جدول از دیتا تایپ Long Text برای فیلدی که میخواهی کارکترهای اون بیشتر از 255 باشد استفاده کن!

m3343kh
سه شنبه 10 بهمن 1402, 17:34 عصر
با سلام خدمت دوستان و اساتید محترم

می خواستم خواهش کنم در صورت امکان، دوستان عنوان تاپیک را مرتبط با سوال یا مسئله یا مطلب آموزشی قید بفرمایند تا با نگاه به عنوان، قابل فهم تر باشد.

سپاسگزارم

Nader700
سه شنبه 10 بهمن 1402, 23:28 عصر
در نمونه اصلاح شده جدید کدها رو بصورت زیر تغییر دادم :
1- برای تمام فیلدها از خاصیت Range.InsertAfter استفاده کردم ( بجهت امکان ویرایش)
2-با استفاده از خاصیت Delete هر کدام از تکست های نشانه گذاری شده رو حذف کردم( در این حالت مقدار هر فیلد مستقیماً در رو بروی کپشن فیلد مربوطه قرار می گیرد)

نمونه اصلاح شده رو بررسی کن !
فقط فراموش نکن در هنگام ذخیره فایل ورد از نام Sanad.docx که بعنوان فایل اصلی که تکست باکس ها در اون درج شده استفاده نکنی!
ضمناً در جدول از دیتا تایپ Long Text برای فیلدی که میخواهی کارکترهای اون بیشتر از 255 باشد استفاده کن!

سلام و عرض ادب
من از این روش روی فایل های خودم تست کردم جواب نمیده و اطلاعات رو که انتقال میده نام تکس باکس ها پاک نمیشه
اگه از کد های زیر استفاده نکنم
Err:
If Err.Number = 5981 Then
MsgBox "فايل ورد قابل ويرايش نمي باشد", vbOKOnly
DoCmd.Hourglass False

End If

به تک تک کد های زیر گیر میده
WordDoc.Bookmarks("id").Range.Delete
و اگه استفاده کنم از کد های بالا فایل اکسس حالت هنگ پیدا میکنه و تکس باکس ها هم پاک نمیشن
جالبه فایل شما کار میکنه
به نظرتون مشکل کجاست ؟

eb_1345
چهارشنبه 11 بهمن 1402, 03:03 صبح
سلام
باید فایلتون بررسی بشه!

Nader700
دوشنبه 30 بهمن 1402, 23:08 عصر
سلام
باید فایلتون بررسی بشه!

سلام
یک مشکل کوچیک دیگه دارم
اونم اینه که من میخوام یه خروجی ورد دیگه داخل همون فرم به یک شکل دیگه از یک قسمت از اطلاعات بگیرم یعنی 2 تا خروجی ورد به من بده
من کدها رو ست می کنم کل فرم وقتی لود میشه ارور فانکشن میده و اجازه نمیده به نظرتون چیکار کنم ؟

eb_1345
سه شنبه 01 اسفند 1402, 00:51 صبح
سلام
یک مشکل کوچیک دیگه دارم
اونم اینه که من میخوام یه خروجی ورد دیگه داخل همون فرم به یک شکل دیگه از یک قسمت از اطلاعات بگیرم یعنی 2 تا خروجی ورد به من بده
من کدها رو ست می کنم کل فرم وقتی لود میشه ارور فانکشن میده و اجازه نمیده به نظرتون چیکار کنم ؟

سلام
بدون شرح...

Nader700
سه شنبه 01 اسفند 1402, 22:33 عصر
سلام
بدون شرح...

سلام خیلی خیلی ممنونم
فقط یه مشکل کوچیک داره اونم اینه که اگه یکی از اون فیلد هایی که داخل فرم هست رو خالی بذاریم ( من ممکنه بعضی از فیلد ها رو پر نکنم ) یا خالی باشه عمل انتقال به ورد رو انجام نمیده
خودتون فایل رو چک کنید متوجه میشین
مثلا فامیلی بهرامی رو پاک کنید و بعد روی خروجی ورد کلیک کنید متوجه میشین
ممنون میشم اگه بازم راهنمایی بفرمایید

eb_1345
چهارشنبه 02 اسفند 1402, 03:58 صبح
سلام
بعد از دو خط کد :


Set WordDoc1 = WordApp.Documents.Add(sDocName)
Set WordDoc2 = WordApp.Documents.Add(sDocName)

کد زیر رو اضاافه کن :


If Len(Me.Family) = 0 Or IsNull(Me.Family) Then Me.Family = " "

برای فیلدهای دیگه هم که احساس می کنی ممکنه خالی باشن به همین این صورت عمل کن !

m3343kh
چهارشنبه 02 اسفند 1402, 19:06 عصر
سلام
آخه این هم شد اسم برای تاپیک!!!

Nader700
چهارشنبه 02 اسفند 1402, 22:52 عصر
سلام
بعد از دو خط کد :


Set WordDoc1 = WordApp.Documents.Add(sDocName)
Set WordDoc2 = WordApp.Documents.Add(sDocName)

کد زیر رو اضاافه کن :


If Len(Me.Family) = 0 Or IsNull(Me.Family) Then Me.Family = " "

برای فیلدهای دیگه هم که احساس می کنی ممکنه خالی باشن به همین این صورت عمل کن !

بسیار بسیار عالی
خیلی ممنونم

Nader700
یک شنبه 20 اسفند 1402, 21:31 عصر
سلام
باید فایلتون بررسی بشه!

سلام مجدد خدمت شما استاد بهرامی عزیز
من قبلا که فرمودین فایل باید بررسی بشه من به یک روش دیگه حل کردم ولی الان به مشکل برخوردم
من فایل نمونه رو خدمتتون پیوست می کنم خودتون فایل نمونه رو چک کنید
مشکل اینه که
من از این روش روی فایل های خودم تست کردم جواب نمیده و اطلاعات رو که انتقال میده نام تکس باکس ها پاک نمیشه
اگه از کد های زیر استفاده نکنم
Err:
If Err.Number = 5981 Then
MsgBox "فايل ورد قابل ويرايش نمي باشد", vbOKOnly
DoCmd.Hourglass False

End If

به تک تک کد های زیر گیر میده
WordDoc.Bookmarks("id").Range.Delete
و اگه استفاده کنم از کد های بالا فایل اکسس حالت هنگ پیدا میکنه و تکس باکس ها هم پاک نمیشن
جالبه فایل شما کار میکنه
به نظرتون مشکل کجاست ؟

eb_1345
سه شنبه 29 اسفند 1402, 12:47 عصر
سلام مجدد خدمت شما استاد بهرامی عزیز
من قبلا که فرمودین فایل باید بررسی بشه من به یک روش دیگه حل کردم ولی الان به مشکل برخوردم
من فایل نمونه رو خدمتتون پیوست می کنم خودتون فایل نمونه رو چک کنید
مشکل اینه که
من از این روش روی فایل های خودم تست کردم جواب نمیده و اطلاعات رو که انتقال میده نام تکس باکس ها پاک نمیشه
اگه از کد های زیر استفاده نکنم
Err:
If Err.Number = 5981 Then
MsgBox "فايل ورد قابل ويرايش نمي باشد", vbOKOnly
DoCmd.Hourglass False

End If

به تک تک کد های زیر گیر میده
WordDoc.Bookmarks("id").Range.Delete
و اگه استفاده کنم از کد های بالا فایل اکسس حالت هنگ پیدا میکنه و تکس باکس ها هم پاک نمیشن
جالبه فایل شما کار میکنه
به نظرتون مشکل کجاست ؟

سلام آقا نادر عزیز!
ببخشید از اینکه در دادن پاسخ تأخیر چند روزه ای صورت گرفته ! به دلایلی چند روزی نتونستم در تالار بازدیدی داشته باشم
راستش من هم خیلی متوجه نشدم که با توجه به اینکه مشخصات هر دو فایل ورد یکی میباشد چرا در فایل شما دستور Delete انجام نمیشه . من اومدم بجای Delete از کلمه Cut استفاده کردم و جواب داد . حالا شما هم فعلا در نمونه خودت کلمه Cut رو جایگزین Delete کن تا ان شاءالله بعداً اگه لازم شد دلیل پاک نشدن تکست باکس با کلمه Delete در فایل شما رو بررسی کنم.

Nader700
چهارشنبه 01 فروردین 1403, 12:36 عصر
سلام آقا نادر عزیز!
ببخشید از اینکه در دادن پاسخ تأخیر چند روزه ای صورت گرفته ! به دلایلی چند روزی نتونستم در تالار بازدیدی داشته باشم
راستش من هم خیلی متوجه نشدم که با توجه به اینکه مشخصات هر دو فایل ورد یکی میباشد چرا در فایل شما دستور Delete انجام نمیشه . من اومدم بجای Delete از کلمه Cut استفاده کردم و جواب داد . حالا شما هم فعلا در نمونه خودت کلمه Cut رو جایگزین Delete کن تا ان شاءالله بعداً اگه لازم شد دلیل پاک نشدن تکست باکس با کلمه Delete در فایل شما رو بررسی کنم.

سلام استاد بهرامی عزیز
ممنونم که بر بنده منت گذاشتین و جواب منو دادین . بسیار ممنون و سپاسگزارم
خداوند اموات شما رو رحمت کنه