Jump to content

Exportera utvalda celler som tab-separerad textfil?


Recommended Posts

Ö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)

Edited by Mikael63
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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.)

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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)

Edited by Mikael63
hittat
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

***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

 

Edited by MH_
  • Thanks 1
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

×
×
  • Create New...