सेल से कॉपी करते समय उद्धरण छोड़ें


90

समस्या :
प्रोग्राम के बाहर एक्सेल से सेल कॉपी करते समय, डबल-कोट्स अपने आप जुड़ जाते हैं।

विवरण :
मैं एक्सेल 2007 का उपयोग विंडोज 7 मशीन पर कर रहा हूं। यदि मेरे पास निम्न सूत्र वाला सेल है:

="1"&CHAR(9)&"SOME NOTES FOR LINE 1."&CHAR(9)&"2"&CHAR(9)&"SOME NOTES FOR LINE 2."

सेल में आउटपुट (संख्या के रूप में स्वरूपित) एक्सेल में इस तरह दिखता है:

1SOME NOTES FOR LINE 1.2SOME NOTES FOR LINE 2.

सही और उचित। लेकिन, अगर मैं सेल को दूसरे प्रोग्राम में कॉपी करता हूं, जैसे कि नोटपैड, मुझे शुरुआत और अंत में गुस्सा करने वाले दोहरे उद्धरण मिलते हैं। ध्यान दें "CHAR (9)" द्वारा बनाए गए टैब रखे गए हैं, जो अच्छा है।

"1  SOME NOTES FOR LINE 1.  2     SOME NOTES FOR LINE 2."

जब मैं दूसरे प्रोग्राम में कॉपी करता हूं , तो मैं इन दोहरे उद्धरणों को कैसे दिखा सकता हूं? दूसरे शब्दों में, क्या जब सेल को क्लिपबोर्ड पर कॉपी किया जाता है, तो क्या मैं इन्हें स्वचालित रूप से जोड़े जाने से बचा सकता हूं?


क्या आपने प्रारूप को संख्या के अलावा किसी अन्य चीज़ में बदलने की कोशिश की है? मुझे लगता है कि मैंने इसके आस-पास के रास्ते देख लिए हैं, लेकिन मैं इस सटीक समय पर एक्सेल नहीं खोल सकता, अगर कुछ जवाब नहीं मिला तो मैं कुछ मिनटों में वापस आ जाऊंगा।
एडममेक 331

@ मेरे सेटअप पर McAdam331, अगर प्रारूप पाठ जैसा कुछ है, तो सेल सूत्र को विस्थापित करता है, गणना किए गए परिणाम को नहीं। संख्या के रूप में स्वरूपण किसी कारण से इसे ओवरराइड करने लगता है।
आरोन थॉमस

आपने सूत्र का उपयोग करने का विकल्प क्यों चुना? क्या यह इसलिए है क्योंकि Excel टैब वर्णों को सम्मिलित करने का एक आसान तरीका का समर्थन नहीं करता है? मैं इसके आस-पास भी काम नहीं कर सकता, शायद एक्सेल के अलावा भी कुछ विकल्प हैं जिनका आप उपयोग कर सकते हैं लेकिन मुझे यकीन नहीं है कि परियोजना की प्रकृति क्या है।
एडमएमसी 331

इसके अलावा, यह एक परेशानी हो सकती है लेकिन अगर आप एक्सेल खोलते हैं और एक सेल में टाइप करना शुरू करते हैं (जो सामान्य रूप से डिफ़ॉल्ट स्वरूपित होता है) और आप पाठ दर्ज करते हैं, तो यह बिना उद्धरण के कॉपी हो जाएगा। (Excel 2013 और नोटपैड ++ का उपयोग करके परीक्षण किया गया) क्या यह आपकी परियोजना को एक टैब के बजाय केवल 4 रिक्त स्थान दर्ज करने के लिए प्रभावित करेगा? फिर, शेष समस्या को जानने के बिना कहना मुश्किल है।
एडममैके 331

1
@ McAdam331 दुर्भाग्य से मुझे यह काम करने की आवश्यकता है जैसा कि मैंने यहां रखा, अग्रणी और अनुगामी दोहरे उद्धरणों को घटाया। कृपया टैब को इस प्रश्न के फ़ोकस से दूर न जाने दें - उन्हें वहाँ होना चाहिए।
हारून थॉमस

जवाबों:


28

यदि आप Word-Pad, Notepad ++ या Word में चिपकाने का प्रयास करते हैं, तो आपके पास यह समस्या नहीं होगी। सेल वैल्यू को शुद्ध पाठ के रूप में कॉपी करने के लिए, आप जो वर्णन करते हैं उसे प्राप्त करने के लिए आपको एक मैक्रो का उपयोग करना होगा:

कार्यपुस्तिका में जहां आप इसे लागू करना चाहते हैं (या अपने Personal.xls में यदि आप कई कार्यपुस्तिकाओं का उपयोग करना चाहते हैं), तो निम्न कोड को मानक मॉड्यूल में रखें:

कोड:

Sub CopyCellContents()
'create a reference in the VBE to Microsft Forms 2.0 Lib
' do this by (in VBA editor) clicking tools - > references and then ticking "Microsoft Forms 2.0 Library"
Dim objData As New DataObject
Dim strTemp As String
strTemp = ActiveCell.Value
objData.SetText (strTemp)
objData.PutInClipboard
End Sub

अपनी परियोजना (कार्यपुस्तिका) में एक मानक मॉड्यूल जोड़ने के लिए, VBE को Alt+ के साथ खोलें F11और फिर ऊपरी बाएँ प्रोजेक्ट विंडो में अपनी कार्यपुस्तिका पर राइट-क्लिक करें और सम्मिलित करें> मॉड्यूल का चयन करें। कोड मॉड्यूल विंडो में कोड पेस्ट करें जो दाईं ओर खुल जाएगा।

एक्सेल में वापस, टूल्स> मैक्रो> मैक्रोज़ पर जाएं और "CopyCellContents" नामक मैक्रो का चयन करें और फिर संवाद से विकल्प चुनें। यहां आप मैक्रो को शॉर्टकट कुंजी (जैसे सामान्य कॉपी के लिए CTRL+ C) का उपयोग कर सकते हैं - मैंने CTRL+ का उपयोग किया Q

फिर, जब आप किसी एकल कक्ष को नोटपैड / जहाँ भी कॉपी करना चाहते हैं, बस Ctrl + q (या जो कुछ भी आपने चुना है) और फिर अपने चुने हुए गंतव्य में एक CTRL+ Vया संपादित करें> चिपकाएँ।

मेरा उत्तर कॉपी किया गया है (कुछ अतिरिक्त के साथ): यहाँ से

संपादित करें : (टिप्पणियों से)

यदि आपको संदर्भ सूची में Microsoft प्रपत्र 2.0 लाइब्रेरी नहीं मिलती है, तो आप कोशिश कर सकते हैं

  • इसके बजाय FM20.DLL की तलाश है (साभार @Peter Smallwood)
  • क्लिक करें ब्राउज़ करें और चयन करें C:\Windows\System32\FM20.dll(32 बिट विंडोज) (साभार @JWhy)
  • ब्राउज़ करें और चयन C:\Windows\SysWOW64\FM20.dll (64-बिट पर) क्लिक करें

1
ऐसा लगता है कि VBA इसका एकमात्र समाधान है - इनपुट के लिए धन्यवाद।
आरोन थॉमस

1
यदि आप संदर्भों की सूची में Microsoft प्रपत्रों को देय नहीं देख सकते हैं, तो FM20.DLL के लिए ब्राउज़ करें
पीटर स्मॉलवुड

15
अगर मैं नोटपैड ++ में पेस्ट करता हूं तो मुझे अभी भी उद्धरण मिलते हैं।
कैट

1
@monkeyintern मुझे लगता है कि मेरे पास एक सेल में पाठ की कई पंक्तियाँ थीं, और उन्हें प्रति पंक्ति एक पंक्ति में विभाजित करके मुझे इसके चारों ओर ले जाने दें।
कैट

2
@ user3616725 अपडेट किए गए संस्करणों ने इस व्यवहार को बदल दिया हो सकता है, लेकिन Word और नोटपैड ++ (इस टिप्पणी की पोस्ट की तारीख के अनुसार) के वर्तमान संस्करण इन उद्धरणों को तब चिपकाते हैं जब या तो एकल या एकाधिक सेल चयन करते हैं।
टोनी

80

मुझे बस यह समस्या थी और CLEANफ़ंक्शन के साथ प्रत्येक सेल को लपेटकर मेरे लिए इसे ठीक कर दिया। ऐसा करने से अपेक्षाकृत आसान होना चाहिए =CLEAN(, अपने सेल का चयन करना और फिर बाकी कॉलम को ऑटोफिलिंग करना। मैंने ऐसा करने के बाद, नोटपैड या किसी अन्य कार्यक्रम में पेस्ट किया, अब डुप्लिकेट उद्धरण नहीं थे।


20
अतिरिक्त उद्धरणों को मिटाने के लिए अच्छा उत्तर, लेकिन दुर्भाग्य से यह टैब वर्णों को भी मिटा देता है ... जो, प्रश्न में, मैं रखना चाहता हूं। वैसे, इनपुट के लिए धन्यवाद!
हारून थॉमस

यह मेरे लिए काम करता है, मैं टैब के बारे में परवाह नहीं करता था - वास्तव में मैं उन सभी को चाहता था और newline वर्ण वैसे भी हटा दिए गए थे।
कोड़ी

19
यह 32 से नीचे के सभी ASCII वर्णों को हटा देता है।
नेप्लेटनीउदज

1
यही असली जवाब है।
टायलर मूर्ति

10
यह एक अच्छा समाधान नहीं है क्योंकि यह सभी विशेष पात्रों को हटा देता है।
पॉल

25

पहले इसे वर्ड में पेस्ट करें, फिर आप इसे नोटपैड में पेस्ट कर सकते हैं और यह बिना कोट्स के दिखाई देगा


इनपुट के लिए धन्यवाद, लेकिन मैं इसे एक अच्छे समाधान के रूप में चिह्नित नहीं कर सकता। इसके अलावा यह एक समाधान की एक डुप्लिकेट है जो पहले से ही इस प्रश्न की पेशकश की गई है, देखें stackoverflow.com/a/24913557/2658159
आरोन थॉमस

4
धन्यवाद, मुझे यह समाधान पसंद आया। त्वरित और आसान
बाजल

इस एक को अपडेट करते हुए ... मेरे मामले में, मेरा मुद्दा यह था कि मुझे प्राप्त होने वाले एक विशेष प्रकार के अनुरोध के लिए, डेटा एक एक्सेल फाइल में आता है और मुझे इसे एक सादे टेक्स्ट बॉक्स में पेस्ट करना होगा। जब मैं ऐसा करता हूं, तो मुझे उद्धरण मिलते हैं। मैंने अतिरिक्त उद्धरणों को हटाने के लिए एक पाठ संपादक का उपयोग किया था (यह उद्धरण भी उद्धृत करता है .. कष्टप्रद!)। एक सरल समाधान की तलाश में, मैंने पाया कि वर्ड को चिपकाना पहले काम करता है क्योंकि अतिरिक्त उद्धरण समाप्त हो गए हैं। काश मैं इस 10x :)
कार्निक्स

यह टैब वर्णों को हटा देगा। शब्द का उपयोग करते समय कम से कम,
वर्डपैड के

यह आज के लिए भी सबसे अच्छा समाधान है।
ज़िगिमेंटस

6

यदि आप कई कोशिकाओं का चयन करना चाहते हैं और उन सभी को बिना उद्धरण दिए क्लिपबोर्ड में उनके मानों को कॉपी कर सकते हैं जो निम्न कोड उपयोगी हो सकते हैं। यह उपयोक्ता 363616725 से ऊपर दिए गए कोड का संवर्द्धन है।

Sub CopyCells()
 'Attach Microsoft Forms 2.0 Library: tools\references\Browse\FM20.DLL
 'Then set a keyboard shortcut to the CopyCells Macro (eg Crtl T)
 Dim objData As New DataObject
 Dim cell As Object
 Dim concat As String
 Dim cellValue As String
 CR = ""
  For Each cell In Selection
  If IsNumeric(cell.Value) Then
   cellValue = LTrim(Str(cell.Value))
  Else
   cellValue = cell.Value
  End If
  concat = concat + CR + cellValue
  CR = Chr(13)
 Next
 objData.SetText (concat)
 objData.PutInClipboard
End Sub

मुझे लगता है कि यह अब तक का सबसे अच्छा जवाब है।
posfan12

2
इस उत्तर के आधार पर मेरे उत्तर को देखें जो इसके साथ निम्नलिखित बग को ठीक करता है: 1. खाली स्ट्रिंग बनाम "0" में एक खाली सेल में परिवर्तित करें। 2. प्रत्येक सेल के बाद टैब (एएससीआईआई 9) बनाम सीआर (एएससीआईआई 13) को जोड़ें। 3. प्रत्येक पंक्ति में एक सीआर (ASCII 13) + LF (ASCII 10) (बनाम CR (ASCII 13)) जोड़ें। ध्यान दें: आप अभी भी एक सेल के भीतर एम्बेड किए गए वर्णों की प्रतिलिपि नहीं बना पाएंगे, जिससे आप उस सेल को उस लक्ष्य से बाहर कर सकते हैं, जो उस सेल को पेस्ट कर रहा है (यानी टैब या सीआर जब एडिट टेबल विंडो ऑफ एक्सेस या एसएसएमएस में पेस्ट हो रहा हो)।
टॉम

^ इसके अलावा "परिवर्तनीय नहीं परिभाषित" कंपाइलर त्रुटि ("सीआर" चर के लिए) को ठीक करता है।
टॉम

4

मेरा समाधान जब मैंने उद्धरण जारी किया, तो मेरे कक्षों के पाठ के अंत से कैरेज रिटर्न वापस करना था। इन कैरिज रिटर्न (बाहरी प्रोग्राम द्वारा सम्मिलित) के कारण, एक्सेल पूरे स्ट्रिंग में उद्धरण जोड़ रहा था।


4
उद्धरण सूत्र के अंदर सीआर / एलएफ (जरूरी नहीं कि अंत में), या इस थ्रेड के मूल प्रश्न (चार (9)) की तरह एक परिणाम हो सकता है।
टर्बो

आपने वास्तव में मेरे जीवन को आसान बना दिया
dE Source

3

"User3616725" से उत्तर देने के संबंध में संभावित समस्या:
विंडोज 8.1 पर Im और "user3616725" से स्वीकृत उत्तर से जुड़े VBA कोड के साथ एक समस्या प्रतीत होती है:

Sub CopyCellContents()
 ' !!! IMPORTANT !!!:
 ' CREATE A REFERENCE IN THE VBE TO "Microsft Forms 2.0 Library" OR "Microsft Forms 2.0 Object Library"
 ' DO THIS BY (IN VBA EDITOR) CLICKING TOOLS -> REFERENCES & THEN TICKING "Microsoft Forms 2.0 Library" OR "Microsft Forms 2.0 Object Library"
 Dim objData As New DataObject
 Dim strTemp As String
 strTemp = ActiveCell.Value
 objData.SetText (strTemp)
 objData.PutInClipboard
End Sub

विवरण:
ऊपर दिए गए कोड और एक्सेल में सेलबोर्ड पर क्लिपबोर्ड चिपकाने से मुझे दो चिन्ह मिलते हैं, जो प्रश्न चिह्न के साथ वर्गों से बने होते हैं, जैसे: and। नोटपैड में चिपकाने से भी कुछ नहीं दिखता है।

समाधान:
काफी समय तक खोज करने के बाद मुझे उपयोगकर्ता "नेगुमुक" से एक और वीबीए स्क्रिप्ट मिली, जो विंडोज एपीआई का उपयोग करती है । यहाँ उसका कोड है कि अंत में मेरे लिए काम किया है:

Option Explicit

Private Declare Function OpenClipboard Lib "user32.dll" ( _
    ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
Private Declare Function SetClipboardData Lib "user32.dll" ( _
    ByVal wFormat As Long, _
    ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32.dll" ( _
    ByVal wFlags As Long, _
    ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32.dll" ( _
    ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32.dll" ( _
    ByVal hMem As Long) As Long
Private Declare Function GlobalFree Lib "kernel32.dll" ( _
    ByVal hMem As Long) As Long
Private Declare Function lstrcpy Lib "kernel32.dll" ( _
    ByVal lpStr1 As Any, _
    ByVal lpStr2 As Any) As Long

Private Const CF_TEXT As Long = 1&

Private Const GMEM_MOVEABLE As Long = 2

Public Sub Beispiel()
    Call StringToClipboard("Hallo ...")
End Sub

Private Sub StringToClipboard(strText As String)
    Dim lngIdentifier As Long, lngPointer As Long
    lngIdentifier = GlobalAlloc(GMEM_MOVEABLE, Len(strText) + 1)
    lngPointer = GlobalLock(lngIdentifier)
    Call lstrcpy(ByVal lngPointer, strText)
    Call GlobalUnlock(lngIdentifier)
    Call OpenClipboard(0&)
    Call EmptyClipboard
    Call SetClipboardData(CF_TEXT, lngIdentifier)
    Call CloseClipboard
    Call GlobalFree(lngIdentifier)
End Sub

ऊपर से पहले VBA कोड की तरह इसका उपयोग करने के लिए, उप "Beispiel ()" से बदलें:

Public Sub Beispiel()
    Call StringToClipboard("Hallo ...")
End Sub

सेवा:

Sub CopyCellContents()
    Call StringToClipboard(ActiveCell.Value)
End Sub

और एक्सेल मैक्रो मेनू के माध्यम से इसे चलाएं जैसे कि स्वीकृत उत्तर से "user3616725" से सुझाव दिया गया है:

Excel में वापस, टूल्स> मैक्रो> मैक्रोज़ पर जाएं और "CopyCellContents" नामक मैक्रो का चयन करें और फिर संवाद से विकल्प चुनें। यहां आप मैक्रो को शॉर्टकट की (जैसे सामान्य कॉपी के लिए Ctrl + c) असाइन कर सकते हैं - मैंने Ctrl + q का उपयोग किया।

फिर, जब आप किसी एकल कक्ष को नोटपैड / जहाँ भी कॉपी करना चाहते हैं, बस Ctrl + q (या जो भी आपने चुना है) करें और फिर अपने चुने हुए गंतव्य में Ctrl + v या संपादित करें> चिपकाएँ।


संपादित करें (2015 में 21 नवंबर को):
@ "डॉटक्टर" से टिप्पणी:
नहीं, यह गंभीरता से कोई नया सवाल नहीं है! मेरी राय में यह स्वीकृत उत्तर के लिए एक अच्छा जोड़ है क्योंकि मेरे उत्तर में उन समस्याओं का समाधान है, जिन्हें आप स्वीकृत उत्तर से कोड का उपयोग करते समय सामना कर सकते हैं। यदि मेरी प्रतिष्ठा अधिक होती, तो मैं एक टिप्पणी करता।
@ टिप्पणी "टेपेमम" से:
हां, आप सही हैं, शीर्षक "समस्या:" से शुरू होने वाले उत्तर भ्रामक हैं। बदल गया: "उपयोगकर्ता3636725" से जवाब देने के संबंध में संभावित समस्या: "। एक टिप्पणी के रूप में मैंने निश्चित रूप से बहुत अधिक कॉम्पैक्ट लिखा होगा।


मुझे लगता है कि यह एक वैध उत्तर के रूप में काम करता है (हालाँकि समस्या के साथ खुलने से ऐसा लगता है जैसे आपको एक नई समस्या थी)। और टिप्पणियों को 600 पात्रों पर छाया हुआ है, इसलिए यह निश्चित रूप से उसके लिए बहुत लंबा होगा।
तेईपेम्म

आश्चर्यजनक! धन्यवाद! केवल समस्या यह है कि यह केवल एक सेल के लिए काम करता है लगता है। क्या यह किसी भी तरह से नकल श्रेणियों की अनुमति देने के लिए सुधार किया जा सकता है?
नेप्लाटनीउदज

3

"यदि आप कई सेल का चयन करना चाहते हैं और उन सभी कष्टप्रद उद्धरणों के बिना अपने मूल्यों को क्लिपबोर्ड पर कॉपी करें" ( पीटर स्मॉलवुड के मल्टी-सेल समाधान में बग के बिना ) "निम्नलिखित कोड उपयोगी हो सकता है।" यह पीटर स्मॉलवुड से ऊपर दिए गए कोड का एक संवर्द्धन है (जो "उपयोगकर्ता3636725 से ऊपर दिए गए कोड की वृद्धि है")। यह पीटर स्मॉलवुड के समाधान में निम्नलिखित कीड़े को ठीक करता है:

  • अवॉइड्स "वेरिएबल नॉट डिफाइंड" कंपाइलर एरर ("CR" के लिए - "clibboardFieldDelimiter") यहाँ
  • खाली स्ट्रिंग बनाम "0" में एक खाली सेल में परिवर्तित करें।
  • प्रत्येक सेल के बाद टैब (एएससीआईआई 9) बनाम सीआर (एएससीआईआई 13) को जोड़ें।
  • प्रत्येक पंक्ति के बाद एक सीआर (ASCII 13) + LF (ASCII 10) (बनाम CR (ASCII 13)) को जोड़ें।

नोट: आप अभी भी एक सेल के भीतर एम्बेड किए गए वर्णों की प्रतिलिपि नहीं बना पाएंगे, जिससे आप उस सेल को लक्षित कर रहे हैं जिससे आप उस सेल को पेस्ट कर सकते हैं (यानी टैब या सीआर जब एडिट टेबल विंडो ऑफ़ एक्सेस या एसएसएमएस में पेस्ट हो)।


Option Explicit

Sub CopyCellsWithoutAddingQuotes()

' -- Attach Microsoft Forms 2.0 Library: tools\references\Browse\FM20.DLL
' -- NOTE: You may have to temporarily insert a UserForm into your VBAProject for it to show up.
' -- Then set a Keyboard Shortcut to the "CopyCellsWithoutAddingQuotes" Macro (i.e. Crtl+E)

Dim clibboardFieldDelimiter As String
Dim clibboardLineDelimiter As String
Dim row As Range
Dim cell As Range
Dim cellValueText As String
Dim clipboardText As String
Dim isFirstRow As Boolean
Dim isFirstCellOfRow As Boolean
Dim dataObj As New dataObject

clibboardFieldDelimiter = Chr(9)
clibboardLineDelimiter = Chr(13) + Chr(10)
isFirstRow = True
isFirstCellOfRow = True

For Each row In Selection.Rows

    If Not isFirstRow Then
        clipboardText = clipboardText + clibboardLineDelimiter
    End If

    For Each cell In row.Cells

        If IsEmpty(cell.Value) Then

            cellValueText = ""

        ElseIf IsNumeric(cell.Value) Then

            cellValueText = LTrim(Str(cell.Value))

        Else

            cellValueText = cell.Value

        End If ' -- Else Non-empty Non-numeric

        If isFirstCellOfRow Then

            clipboardText = clipboardText + cellValueText
            isFirstCellOfRow = False

        Else ' -- Not (isFirstCellOfRow)

            clipboardText = clipboardText + clibboardFieldDelimiter + cellValueText

        End If ' -- Else Not (isFirstCellOfRow)

    Next cell

    isFirstRow = False
    isFirstCellOfRow = True

Next row

clipboardText = clipboardText + clibboardLineDelimiter

dataObj.SetText (clipboardText)
dataObj.PutInClipboard

End Sub

0

नोटपैड में पेस्ट करते समय लाइन ब्रेक रखने के लिए, इस लाइन को मैक्रो में बदलें:

strTemp = ActiveCell.Value

द्वारा:

strTemp = Replace(ActiveCell.Value, Chr(10), vbCrLf)

0

कृपया नीचे दिए गए सूत्र का उपयोग करें

=Clean("1"&CHAR(9)&"SOME NOTES FOR LINE 1."&CHAR(9)&"2"&CHAR(9)&"SOME NOTES FOR LINE 2.")

और आपको वही मिलेगा जो आप चाहते हैं ;-)


2
यह चाल है, लेकिन मेरे स्वरूपण (नई लाइनों और टैब) को निकालता है
गेब्रियल जी

0

आप VBA के माध्यम से एक्सेल मैक्रो में ऐसा कर सकते हैं, परिणाम को एक फ़ाइल में भेज सकते हैं:

Sub SimpleVBAWriteToFileWithoutQuotes()
    Open "c:\TEMP\Excel\out.txt" For Output As #1
    Print #1, Application.ActiveSheet.Cells(2, 3)
    Close #1
End Sub

और अगर आप फ़ाइल नाम और सामग्री को कई फ़ाइलों में प्राप्त करना चाहते हैं, तो यहां एक छोटा स्निपेट है जो आउटपुट के चारों ओर दोहरे उद्धरण से बचा जाता है।

Sub DumpCellDataToTextFilesWithoutDoubleQuotes()
    ' this will work for filename and content in two different columns such as:
    ' filename column       data column
    ' 101                   this is some data
    ' 102                   this is more data

    Dim rngData As Range
    Dim strData As String
    Dim strTempFile As String
    Dim strFilename As String
    Dim i As Long
    Dim intFilenameColumn As Integer
    Dim intDataColumn As Integer
    Dim intStartingRow As Integer

    intFilenameColumn = 1     ' the column number containing the filenames
    intDataColumn = 3         ' the column number containing the data
    intStartingRow = 2        ' the row number to start gathering data


    For i = intStartingRow To Range("A1", Range("A1").End(xlDown)).Rows.Count

        ' copy the data cell's value
        Set rngData = Application.ActiveSheet.Cells(i, intDataColumn)

        ' get the base filename
        strFilename = Application.ActiveSheet.Cells(i, intFilenameColumn)

        ' assemble full filename and path
        strTempFile = "w:\TEMP\Excel\" & strFilename & ".txt"

        ' write to temp file
        Open strTempFile For Output As #1
        Print #1, rngData
        Close #1

    Next i

    ' goto home cell
    Application.ActiveSheet.Cells(1, 1).Select
    Range("A1").ClearOutline
End Sub

0
  • यदि फॉर्मूला में मल्टी लाइन (फॉर्मूला में लाइन ब्रेक होने का मतलब है) तो कॉपी पेस्ट उस तरह से काम करेगा
  • यदि मल्टी लाइन हटा सकते हैं तो कॉपी पेस्ट करते समय कोई उद्धरण नहीं दिखाई देगा।
  • पिछले उत्तर में @greg द्वारा कहा गया CLEAN फ़ंक्शन का उपयोग करें

0

नोट: उद्धरण का कारण यह है कि जब डेटा एक्सेल से क्लिपबोर्ड पर जाता है तो यह पूरी तरह से CSV मानकों का अनुपालन करता है जिसमें मान शामिल करना शामिल होता है जिसमें टैब, नई लाइनें आदि (और दोहरे-उद्धरण वर्णों को दो दोहरे उद्धरण वर्णों के साथ बदल दिया जाता है)

इसलिए एक और दृष्टिकोण, विशेष रूप से ओपी के मामले में जब टैब / नई लाइनें सूत्र के कारण होती हैं, टैब और हार्ड रिटर्न के लिए वैकल्पिक वर्णों का उपयोग करना है। मैं टैब के लिए ascii यूनिट सेपरेटर = char (31) और नई लाइनों के लिए ascii रिकॉर्ड सेपरेटर = char (30) का उपयोग करता हूं।

फिर पाठ संपादक में चिपकाने से अतिरिक्त सीएसवी नियम शामिल नहीं होंगे और आप एक त्वरित खोज कर सकते हैं और उन्हें फिर से बदलने के लिए बदल सकते हैं।

यदि टैब / नई लाइनें डेटा में एम्बेडेड हैं, तो आप उन्हें बदलने के लिए एक खोज कर सकते हैं और एक्सेल में बदल सकते हैं।

चाहे फार्मूला का उपयोग करना हो या डेटा को बदलना हो, सीमांकक चुनने की कुंजी उन वर्णों का उपयोग कभी नहीं करती है जो वास्तविक डेटा में हो सकते हैं। यही कारण है कि मैं निम्न स्तर के एस्की पात्रों की सिफारिश करता हूं।


-1

"क्लीन" फ़ंक्शन पर अपना परिणाम रखकर इन दोहरे उद्धरणों को निकालना भी संभव है।

उदाहरण:

=CLEAN("1"&CHAR(9)&"SOME NOTES FOR LINE 1."&CHAR(9)&"2"&CHAR(9)&"SOME NOTES FOR LINE 2.")

आउटपुट को अन्य प्रोग्राम जैसे नोटपैड ++ पर दोहरे-उद्धरणों के बिना चिपकाया जाएगा।


यह एक डुप्लिकेट उत्तर है। CLEAN ने
नए अंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.