2012-09-09 8 views
6

यह वास्तव में सरल होना चाहिए, लेकिन मैं फोरम फोरम कर रहा हूं और कुछ भाग्य के साथ उत्तर खोजने के लिए घंटों के लिए उत्तर देता हूं, इसलिए मैं (अनिच्छा से) खुद का प्रश्न बना रहा हूं।नई कार्यपुस्तिका में रेंज और चिपकाने की प्रतिलिपि

जो मैं करने की कोशिश कर रहा हूं वह बस एक नई कार्यपुस्तिका बना रहा है, और उस कार्यपुस्तिका में किसी अन्य कार्यपुस्तिका से एक श्रेणी पेस्ट करें। सरल लगता है ..?

मेरी मूल कार्यपुस्तिका, चलो बुक 1 पर कॉल करें। मैं एक नई वर्कबुक, बुक 2 बनाने की कोशिश कर रहा हूं, जिसे मैं मान सेल्स ए 1: बी 10 से कॉपी करूंगा।

यहाँ मेरी कोड में से एक संस्करण है (Book1 खुला के साथ शुरू):

Range("A1:B10").Copy 
Set NewBook = Workbooks.Add 
    With NewBook 
     .SaveAs Filename:="Book2.xls" 
    End With 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

यह एक "श्रेणी वर्ग के PasteSpecial विफल रहा" त्रुटि देता है।

  • जोड़ा 'कार्यपुस्तिकाएं ("Book2.xls") को सक्रिय करें।' कोड
  • PasteSpecial लाइन
  • की कोशिश की 'में अतिरिक्त तर्कों को हटा दिया, .Paste: मैं कोई भाग्य के साथ निम्नलिखित फिक्स की कोशिश की है .PasteSpecial '
  • बदल' 'में Selection.PasteSpecial' के बजाय 'ActiveSheet.PasteSpecial'
  • स्पष्ट रूप से प्रतिलिपि श्रेणी का संदर्भ दे, कार्यपुस्तिका और चादर संदर्भ
  • पहले नई कार्यपुस्तिका बनाने सहित, तो ग प्रदर्शन ओपी, नई कार्यपुस्तिका को पुनः सक्रिय करने और पेस्टिंग

उपर्युक्त समाधानों में से कोई भी काम नहीं करता ... इस चरण में कोई भी ज्ञान कृतज्ञतापूर्वक प्राप्त होगा!

उत्तर

16

क्या आप यह कोशिश कर रहे हैं? मैंने कोड पर टिप्पणी की है ताकि कोड को समझने में आपको कोई समस्या न हो।

Option Explicit 

Sub Sample() 
    Dim wbI As Workbook, wbO As Workbook 
    Dim wsI As Worksheet, wsO As Worksheet 

    '~~> Source/Input Workbook 
    Set wbI = ThisWorkbook 
    '~~> Set the relevant sheet from where you want to copy 
    Set wsI = wbI.Sheets("Sheet1") 

    '~~> Destination/Output Workbook 
    Set wbO = Workbooks.Add 

    With wbO 
     '~~> Set the relevant sheet to where you want to paste 
     Set wsO = wbO.Sheets("Sheet1") 

     '~~>. Save the file 
     .SaveAs Filename:="C:\Book2.xls", FileFormat:=56 

     '~~> Copy the range 
     wsI.Range("A1:B10").Copy 

     '~~> Paste it in say Cell A1. Change as applicable 
     wsO.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
    End With 
End Sub 
3

यह मेरे लिए काम करता है।

Private Sub CommandButton1_Click() 
Dim newWB As Workbook, currentWB As Workbook 
Dim newS As Worksheet, currentS As Worksheet 

'Copy the data you need 
Set currentWB = ThisWorkbook 
Set currentS = currentWB .Sheets("Sheet1") 
currentS .Range("A:M").Select 
Selection.Copy 

'Create a new file that will receive the data 
Set newWB = Workbooks.Add 
    With newWB 
     Set newS = newWB.Sheets("Sheet1") 
     newS.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
     'Save in CSV 
     Application.DisplayAlerts = False 
     .SaveAs Filename:="C:\Temporary.csv", FileFormat:=xlCSV 
     Application.DisplayAlerts = True 
    End With 
End Sub 
संबंधित मुद्दे

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