Ask Your Question

Moritz's profile - activity

2019-04-07 08:28:51 +0200 received badge  Notable Question (source)
2019-04-04 22:29:10 +0200 received badge  Popular Question (source)
2019-04-04 13:10:32 +0200 asked a question Calc: Can I display tooltips for my macros?

Calc: Can I display tooltips for my macros? I wrote a couple of macro functions which works well in the spreadsheet. How

2017-12-18 10:29:03 +0200 received badge  Notable Question (source)
2016-05-10 11:31:42 +0200 received badge  Scholar (source)
2016-05-10 11:31:31 +0200 commented answer Control line endings with print statement

Thanks JohnSUN, That "workaround" solved it. I've no idea why I could not make it work when I tried it...

2016-05-10 10:10:16 +0200 received badge  Popular Question (source)
2016-05-09 12:02:54 +0200 asked a question Control line endings with print statement

I have a Basic macro which writes the contents of a spreadsheet into a text file. This macro was developed on a LO installed on Windows. Now I switched to Linux and have a problem with the line endings in the generated file.

The file must have Windows line endings (\r\n or chr(13)+chr(10)), because it is used in other programs which insist on these line endings.

I tried a couple of approaches to save the \r\n line endings on a Linux installation:

sub ExportAreaToFile
  ' This prints the range "Sheet1.A1:C3" with two different methods into two different text files.

  dim oSheet as object
  dim datarangeAddress as object
  dim sCell as string
  dim sTab as string
  dim sLF as string
  dim i, j as long
  ' ALTERNATIVE B:
  dim result as string

  sTab = chr(9)
  sLF = chr(13) + chr(10)

  ' Open file descriptors
  iNumA = FreeFile
  iNumB = FreeFile
  Open "output_A.txt" for Output as #iNumA
  Open "output_B.txt" for Output as #iNumB

  ' Get range
  oSheet = ThisComponent.Sheets.getByName("Sheet1")
  datarangeAddress = oSheet.getCellRangeByName("A1:C3").RangeAddress()

  ' Loop over our range
  for j = datarangeAddress.StartRow to datarangeAddress.EndRow
    for i = datarangeAddress.StartColumn to datarangeAddress.EndColumn
      sCell = oSheet.getCellByPosition(i, j).string
      ' ALTERNATIVE A:
      print #iNumA, sCell; sTab;
      ' ALTERNATIVE B:
      result = result + sCell + sTab
    next i
    ' ALTERNATIVE A:
    print #iNumA, sLF
    ' ALTERNATIVE B:
    result = result + sLF
  next j

  ' ALTERNATIVE B:
  print #iNumB, result

  close #iNumA
  close #iNumB

Both alternatives do not put \r\n in the output files, despite explicitly adding these characters with print #iNumA, sLF or result = result + sLF.

How can I get this macro to print \r\n on a Linux system?

The same question was asked at LibreOfficeForum.org but I got no answer. I believe it's a bug, which I filed under Bug #99650 and got the advice to try it here.

Thank you for your help!

Stephan