2010-08-02 10 views
6

मैं Excel में डेटा का एक सेट है, जो नीचे की तरह है (एस वी प्रारूप में)ऑटो एक एक्सेल दस्तावेज़ से वर्ड में तालिका बनाने

heading1, heading2, heading3, index 
A , randomdata1, randomdata2, 1 
A , randomdata1, randomdata2, 2 
A , randomdata1, randomdata2, 3 
B , randomdata1, randomdata2, 4 
C , randomdata1, randomdata2, 5 

मैं एक शब्द दस्तावेज है कि प्रस्तुत निर्माण ऑटो के लिए सक्षम होना चाहते हैं यह डेटा, जो अलग-अलग तालिकाओं में शीर्षक 1 द्वारा समूहित जानकारी है। शब्द तो दस्तावेज़

तरह
Table A 
heading1, heading2, heading3, index 
A , randomdata1, randomdata2, 1 
A , randomdata1, randomdata2, 2 
A , randomdata1, randomdata2, 3 

Table B 
heading1, heading2, heading3, index 
B , randomdata1, randomdata2, 4 

Table C 
heading1, heading2, heading3, index 
C , randomdata1, randomdata2, 5 

कृपया कोई इस के साथ मेरी मदद कर सकता है के रूप में यह बहुत उबाऊ प्रतिलिपि & चिपकाने और स्वरूपण के बारे में 20 घंटे की बचत होगी होगा!

किसी भी मदद

+0

अपनी आउटपुट आवश्यकताओं को देखते हुए, मैं नहीं देख सकता कि 'हेडिंग 2' और 'हेडिंग 3' कैसे खेलें। सभी कॉलम के साथ 'randomdata1' और' randomdata2' मतलब * करें *? –

+0

हमम, आपके प्रश्न से थोड़ा उलझन में। हेडिंग 1, हेडिंग 2, हेडिंग 3, इंडेक्स कॉलम हेडिंग्स हैं, क्योंकि वह अनुभाग 4 कॉलम और 5 प्रविष्टियों के साथ एक्सेल में एक टेबल का प्रतिनिधित्व करने के लिए है। इसमें randomData * वाले किसी भी फ़ील्ड का अर्थ केवल परिवर्तनीय मनमानी डेटा का कुछ टुकड़ा है, विवरण महत्वपूर्ण नहीं है। मैंने सभी कॉलमों द्वारा – Dori

+0

को बरकरार रखने के लिए उपरोक्त संपादित किया है ताकि सभी चार कॉलम * प्रति तालिका * उनमें से भरे मूल्यों के साथ * मतलब * में हो? –

उत्तर

9

डोरी के लिए धन्यवाद,

आशा इस समय मदद करने के लिए है।

इस काम के लिए आपको वर्ड का संदर्भ सेट करने की आवश्यकता है - वीबीए संपादक में टूल्स> संदर्भ चुनें और माइक्रोसॉफ्ट वर्ड ## पर स्क्रॉल करें, जहां एक्सेल '07 के लिए ## 12.0 है, एक्सेल '03 के लिए 11.0, इत्यादि। जब भी आप इसे चलाते हैं तो चादर को फ़िल्टर नहीं किया जाना चाहिए, और यद्यपि आपको 1 शीर्षक से सॉर्ट करने की आवश्यकता नहीं है, मुझे लगता है कि आपके पास है।

कोड मानता है कि आपकी सूची सेल ए 1 में शीर्षलेख के साथ शुरू होती है। अगर यह सच नहीं है तो आपको इसे बनाना चाहिए। यह भी मानता है कि डी में आपका अंतिम कॉलम आप उस पंक्ति में समायोजित कर सकते हैं जो "कॉपी" से शुरू होता है।

Sub CopyExcelDataToWord() 

Dim wsSource As Excel.Worksheet 
Dim cell As Excel.Range 
Dim collUniqueHeadings As Collection 
Dim lngLastRow As Long 
Dim i As Long 
Dim appWord As Word.Application 
Dim docWordTarget As Word.Document 

Set wsSource = ThisWorkbook.Worksheets(1) 
With wsSource 
    lngLastRow = .Range("A" & Rows.Count).End(xlUp).Row 
    Set collUniqueHeadings = New Collection 
    For Each cell In .Range("A2:A" & lngLastRow) 
     On Error Resume Next 
     collUniqueHeadings.Add Item:=cell.Value, Key:=cell.Value 
     On Error GoTo 0 
    Next cell 
End With 
Set appWord = CreateObject("Word.Application") 
With appWord 
    .Visible = True 
    Set docWordTarget = .Documents.Add 
    .ActiveDocument.Select 
End With 
For i = 1 To collUniqueHeadings.Count 
    With wsSource 
     .Range("A1").AutoFilter Field:=1, Criteria1:=collUniqueHeadings(i) 
     .Range("A1:D" & lngLastRow).Copy 
    End With 
    With appWord.Selection 
     .PasteExcelTable linkedtoexcel:=False, wordformatting:=True, RTF:=False 
     .TypeParagraph 
    End With 
Next i 

For i = 1 To collUniqueHeadings.Count 
    collUniqueHeadings.Remove 1 
Next i 
Set docWordTarget = Nothing 
Set appWord = Nothing 

End Sub 
+1

उत्तर देने के लिए आपको बहुत बहुत धन्यवाद! दुर्भाग्य से समय पर नहीं दिया गया था क्योंकि इसे कल वितरित किया गया था। हालांकि बहुत सराहना :) – Dori

संबंधित मुद्दे