سؤال

الهدف العام هو أخذ نص بتنسيق 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top