Gå till innehåll

Exportera utvalda celler som tab-separerad textfil?


Recommended Posts

Postad (redigerade)

Önskar en funktion där jag kan markera rader i två valfria kolumner och få dessa sparade som en tab-separerad textfil.

image.png.c91ffb6d24137082462039868487496d.png

 

Ska bli som

A 21
B 22
C 23

(fast här i editorn är det mellanslag i texten ovan)

Har hittat denna https://github.com/bskinn/excel-csvexporter/releases/tag/v1.2.2 men den kan inte hantera icke-intilliggande kolumner och inte heller TAB (tror jag)

Redigerad av Mikael63
Länk till kommentar
Dela på andra webbplatser

Det är alltid kolumn A som ingår. Det är alltid endast en till kolumn som ska ingå. Antal rader kan variera men det är alltid lika många rader för A och den andra kolumnen.

Jag kan nu välja att dölja B. Markera de båda kvarvarande. Ctrl+C och sedan klistra in i anteckningar.
Med många kolumner blir det lite stök, men det går.

Markering gör jag manuellt och om man hade en makroknapp som typ "selection save as" kanske?

Länk till kommentar
Dela på andra webbplatser

https://docs.microsoft.com/en-us/office/vba/api/excel.range.areas

Kan användas för att växla mellan områdena 

Selection.Areas(1)
Selection.Areas(2)

Då borde du kunna  skapa en tabbseparerad textvariabel som du sen kan spara undan eller pipa till en text-fil

Sub tjo()
Dim str As String
Dim i As Integer

If Selection.Areas(1).Cells.Count <> Selection.Areas(2).Cells.Count Then
MsgBox "falektig markering, gör om, gör rätt"
Exit Sub
End If

For i = 1 To Selection.Areas(1).Cells.Count
    str = str & Selection.Areas(1).Cells(i, 1).Value
    str = str & vbTab
    str = str & Selection.Areas(2).Cells(i, 1).Value
    str = str & vbCrLf
Next i

MsgBox str

'Open "C:\tmp\Tjoho.txt" For Output As #1


End Sub

Jag surnade till och raderade min profil på det andra forumet  så jag hittar inte gamla inlägg. Men visst hade vi en tråd där du fick en en sån där "Open for Output" att fungera?  Behövs det inte en End of file t.ex...

 

Här är en tråd du borde kunna sno låna ifrån

https://stackoverflow.com/questions/43655288/vba-code-to-save-excel-sheet-as-tab-delimited-text-file

  • Thanks 1
Länk till kommentar
Dela på andra webbplatser

Jag gillar din kod där jag får markera enbart det jag önskar få som utdata.

Det är denna du tänker på antar jag:

https://eforum.idg.se/topic/362854-snabbt-söka-och-ersätta-radbrytning-med-text/#comment-1742113

Och lägger jag till motsvarande open så skapas textfilen med önskat innehåll men det blir tomma rader på slutet och det är en av anledningarna till att jag började kolla på alternativ till att spara som tabb-separerad textfil. (Tomma celler som i raderade data i celler kommer med i textfilen.)

Länk till kommentar
Dela på andra webbplatser

Lägg på ett villkor så att den inte skapas någon radbrytning på sista raden så borde du vara hemma:


For i = 1 To Selection.Areas(1).Cells.Count
    str = str & Selection.Areas(1).Cells(i, 1).Value & vbTab
    str = str & Selection.Areas(2).Cells(i, 1).Value
    If Not (i = Selection.Areas(1).Cells.Count) Then str = str & vbNewLine
Next i

Open "C:\tmp\Tjoho.txt" For Output As #1
    Print #1, str;
Close #1

  • Thanks 1
Länk till kommentar
Dela på andra webbplatser

Det visade sig att det inte gjorde något om det fanns en(1) extra radbrytning på slutet.

**

Jag saknar "Markera som bästa lösning" eftersom det förutom att påpeka just det även ger möjlighet att kunna navigera till det inlägget. Att ändra rubriken till [löst]* är jobbigare och visar inte VAR lösningen finns.

@Andreas Stenhall?

Länk till kommentar
Dela på andra webbplatser

Postad (redigerade)

Meeen Å!?

Vad tusan har jag fibblat till nu? Varje gång jag öppnar en Excelbok öppnas även textfilen, i Excel?

**

Oj.. hrm. jag hade visst fått in textfilen i XLSTART-mappen.

(Testade med
Open ThisWorkbook.Path & "\far.txt" For Output As #1 i en "lös" fil och när jag flyttade koden till EgnaMakron behövde jag ändra till
Open ActiveWorkbook.Path & "\far.txt" For Output As #1)

Redigerad av Mikael63
hittat
Länk till kommentar
Dela på andra webbplatser

Hm.. grundtanken var att man skulle kunna markera värden från två "icke-intilliggande kolumner" och det fungerar ju.

Om det visar sig att värden finns i intilliggande kolumner gör man, naturligt, markeringen på annat sätt och då får man körfel. Skulle man kunna inkludera detta i felmeddelandet i den "egna" MsgBox?

Länk till kommentar
Dela på andra webbplatser

Postad (redigerade)

***ed***

Ändrade:
Selection.Cells.Count
Till
Selection.rows.Count
i tredje IF-satsen
**/ed**

 

Du får väl helt enkelt göra en massa IF och hantera fel efter fel 

Har bara kört koden med msgbox på slutet och vet inte om outputfilen blir rätt (när jag skriver det här inser jag att den dessutom  kommer att släppa igenom en enkolumnsmarkering utan felmeddelande)

Sub tjo()
Dim str As String
Dim i As Integer


If Selection.Areas.Count > 2 Then
MsgBox "du får bara välja två kolumner"
Exit Sub
End If


'Om exakt 2 områden
If Selection.Areas.Count = 2 Then
    'Kolla att områdena har lika många rader.
    If Selection.Areas(1).Cells.Count <> Selection.Areas(2).Cells.Count Then
        MsgBox "Olika antal rader i markeringarna, gör om"
        Exit Sub
    End If

' Kör koden för två områden:
For i = 1 To Selection.Areas(1).Cells.Count
    str = str & Selection.Areas(1).Cells(i, 1).Value & vbTab
    str = str & Selection.Areas(2).Cells(i, 1).Value
    If Not (i = Selection.Areas(1).Cells.Count) Then str = str & vbNewLine
Next i
End If

'Om ett område med två kolumner
If ((Selection.Areas.Count = 1) And (Selection.Columns.Count = 2)) Then
For i = 1 To Selection.Rows.Count
    str = str & Selection.Cells(i, 1).Value & vbTab
    str = str & Selection.Cells(i, 2).Value
    If Not (i = Selection.rows.Count) Then str = str & vbNewLine
Next i
End If



Open "C:\tmp\Tjoho.txt" For Output As #1
   Print #1, str;
Close #1

End Sub

 

Redigerad av MH_
  • Thanks 1
Länk till kommentar
Dela på andra webbplatser

1 timme sedan, MH_ sade:

Har bara kört koden med msgbox på slutet och vet inte om outputfilen blir rätt

Jodå den blir bra!

1 timme sedan, MH_ sade:

dessutom  kommer att släppa igenom en enkolumnsmarkering utan felmeddelande

Ja, men nåt får man ju försöka hålla koll på själv med..

Återigen tack!

Länk till kommentar
Dela på andra webbplatser

Delta i dialogen

Du kan skriva svaret nu och registrera dig senare, Om du har ett konto, logga in nu för att svara på inlägget.

Gäst
Svara i detta ämne...

×   Du har klistrat in innehåll med formatering.   Ta bort formatering

  Only 75 emoji are allowed.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa nytt...