ينتهي لصق VBA من Excel إلى Word بالفرع
-
23-12-2019 - |
سؤال
الهدف العام هو أخذ نص بتنسيق RTF في Excel وتحويله إلى HTML.لم أتمكن حتى الآن من جعل Excel يستجيب بطريقة معقولة لذا حاولت استخدام Word.أنا قادر على التحويل في Word دون مشكلة، لذا أريد أتمتة العملية عن طريق نسخ الخلية من Excel ولصقها في Word ثم تشغيل التعليمات البرمجية لتحويل التنسيق إلى الطريقة التي أريدها.
أواجه مشكلة حيث عندما أقوم باللصق في Word من Excel VBA، يكون اللصق ناجحًا ولكنه ينتقل بعد ذلك إلى End Sub
.
Sub webtext(r As String)
Range(r).Copy
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Set wordApp = CreateObject("word.Application")
Set wordDoc = wordApp.Documents.Add
wordApp.Visible = True
wordApp.Activate
wordApp.Selection.PasteSpecial
'Any code here is missed out
z = MsgBox("tada") 'this will never trigger
x=5 'this will never set
With wordDoc
'Operations on the text pasted would happen here
'but vba never gets here.
End With
'Code jumps to here
End Sub
لقد حاولت استخدام كل من WordDoc وWordApp، وكلاً من اللصق واللصق الخاص، ولكن النتيجة دائمًا هي نفسها.
هل لدى أي شخص أي أفكار حول ما يحدث هنا أو كيفية منعه من الانتهاء دائمًا بعد اللصق.
يحرر:لقد قمت باختبار هذا ويعمل على Office 2010.لا يعمل على اوفيس 2013.
المحلول 2
يبدو أن يتم حلها.لا يستطيع مصحح أخطاء VBA فهم ما يحدث بعد أن يصل إلى قسم WordApp وبالتالي التعليمات البرمجية يبدو للانتقال إلى نهاية القسم.
بالإضافة إلى ذلك، يبدو أن أي تعديلات على الكلمات يجب أن تتم داخل With wordDoc
لأنه قد يكون غريبًا بعض الشيء عند ضرب التعليمات البرمجية بشكل صحيح بينهما في بعض الأحيان (على الرغم من عدم معرفة سبب فقدان مربع الرسالة في المرة الأولى).
شكرًا @brettdj للمساعدة في الاختبار والاعتذار عن خطأي في فهم ما كان يحدث.
نصائح أخرى
عملت بشكل جيد بالنسبة لي كما هو
ولكن أقترح عليك تجربة هذه التعديلات لمعرفة ما إذا كان هذا يعمل (AppActivate
زائدة عن الحاجة).
Sub StartIt()
Call webtext("a1:a10")
End Sub
رئيسي
Sub webtext(r As String)
Range(r).Copy
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Set wordApp = New Word.Application
Set wordDoc = wordApp.Documents.Add
wordApp.Visible = True
With wordDoc
.ActiveWindow.Selection.Paste
End With
End Sub