[Excel - VBA] Export naar .txt met cel > 256 karakters

Pagina: 1
Acties:
  • 1.930 views sinds 30-01-2008
  • Reageer

  • Unomomentodado
  • Registratie: Mei 2005
  • Laatst online: 10-08 17:26
Weet iemand raad voor het volgende:

Ik heb een Excelsheet waarin ik een 30-tal velden als 1 regel wil wegschrijven naar een .txt bestand. Samengevoegd is de lengte van de velden meer dan 256 karakters. Het samenvoegen en exporteren wil ik via een macro kunnen uitvoeren.

De samengevoegde cellen heb ik via een macro aan elkaar geplakt en deze schrijf ik weg naar een cel in een andere tijdelijke werkmap (in dezelfde excel-sheet).

Als ik nu via 'Save as' bewaren als Unicodetxt kies dan wordt het de bestand zonder problemen weggeschreven en zie ik in Notepad de gehele regel staan (b.v. 280 karakters).

Nu wil ik hetzelfde resultaat, maar dan in een macro. Ik gebruik hiervoor nu het volgende statement:

Code:
code:
1
2
ActiveSheet.SaveAs FileName:= "c:\bestand.txt", FileFormat:=xlUnicodeText
ActiveWorkbook.Close SaveChanges:=False


Resultaat: een txt bestand waarin de tekststring tot en met karakter 256 staat.

Ik heb nu zo'n beetje alle fileformats geprobeerd, maar geen van allen lijkt te werken (b.v. xlCSVWindows)

Hoe krijg ik het in mijn macro voor elkaar???? :/

  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 02-06 20:28

CoRrRan

Don't Panic!!!

Ik heb geen idee of dit het resultaat oplevert wat je zoekt, maar als ik tekstbestanden maak, doe ik het m.b.v. het FileSystemObject. Zie de code hieronder voor een voorbeeld hoe zo'n textbestand te maken:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub AppendTextFile()

  Const ForReading = 1, ForAppending = 8
  Const TriStateUseDefault = -2, TriStateTrue = -1, TriStateFalse = 0

  Dim objFSO As Object, objTS As Object

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objTS = objFSO.OpenTextFile("C:\testfile.txt", ForAppending, TriStateUseDefault)

  ' This will only append a piece of text right after the last character in the file
  ' and should be followed by "& Chr(10)"
  objTS.Write "Appending text" & vbCrLf

  ' This method will write text directly after the last LINE in the file"
  objTS.WriteLine "This is the fourth line"
  objTS.Close

End Sub
Linkje:
MSDN over FSO

[ Voor 13% gewijzigd door CoRrRan op 20-07-2005 12:04 . Reden: Link toegevoegd ]

-- == Alta Alatis Patent == --


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ik denk dat je probleem ergens anders ligt; tenminste normalitair is er geen enkele reden waarom saveas() cellen zou afbreken na 256 karakters. Ik kan het (met excel 2000) ook niet naspelen.

Gaat het ook mis als je zelf een lange tekst intikt in een cel?
Welke versie van excel gebruik je?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Unomomentodado
  • Registratie: Mei 2005
  • Laatst online: 10-08 17:26
Hartelijk dank CoRrRan! Ik heb op betreffende site gekeken en het is me gelukt! :D

Link

Ik heb nu de volgende code gebruikt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Exporteren
Dim Rij, fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile(Folder_export & Bestandsnaam, True)

Worksheets(temp).Activate 'ga naar het tempblad met te exporteren regels

' Schrijf de regels weg
Rij = 1

   Do
      f1.WriteLine Cells(Rij, 1).Value
      Rij = Rij + 1
   Loop Until Cells(Rij, 1).Value = ""

f1.Close

[ Voor 91% gewijzigd door Unomomentodado op 20-07-2005 12:42 . Reden: Code toegevoegd ]


  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 02-06 20:28

CoRrRan

Don't Panic!!!

Graag gedaan, het is echter wel een 'workaround' zoals Niesje aangeeft.

Ik heb jou eerste methode niet zelf getest, dus mogelijk zit er toch iets fout, maar als dit werkt, dan ben je ook geholpen.

-- == Alta Alatis Patent == --


Verwijderd

Niesje schreef op woensdag 20 juli 2005 @ 12:12:
Ik denk dat je probleem ergens anders ligt; tenminste normalitair is er geen enkele reden waarom saveas() cellen zou afbreken na 256 karakters. Ik kan het (met excel 2000) ook niet naspelen.

Gaat het ook mis als je zelf een lange tekst intikt in een cel?
Welke versie van excel gebruik je?
het bestand wordt weggeschreven als een tekstbestand. het is een bekende "feature" dat excel dan alles na 256 laat vallen (bv. ook wanneer je het werkblad naar een andere map kopieert).

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Nu ben ik niet helemaal gek, dus ik had het voor alle zekerheid, zoals gezeit, eerst getest. Is dat dan een nieuwe feature, want met excel 2000 heb ik echt helemaal nergens last van. :)
ik ken het probleem wel met DDE koppelingen waar Excel weleens eigenzinnig gegevens afkapt, maar met save? Nee

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Niesje schreef op woensdag 20 juli 2005 @ 15:18:
Nu ben ik niet helemaal gek, dus ik had het voor alle zekerheid, zoals gezeit, eerst getest. Is dat dan een nieuwe feature, want met excel 2000 heb ik echt helemaal nergens last van. :)
ik ken het probleem wel met DDE koppelingen waar Excel weleens eigenzinnig gegevens afkapt, maar met save? Nee
verhip, je hebt gelijk!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

8)

[ Voor 60% gewijzigd door Lustucru op 20-07-2005 16:04 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1