Const version = "1.3"
Dim iPath, ePfad, mode, Fso, iFile, Text, geteilt, nCount, configPath, config, mess, running, options, comma
Const title = "csvtolatex " & version
If args.Length = 0 Then
configPath = InputBox("Please write the path to your configuration file (*.ctl):", title)
Else
configPath = args(0)
End If
config = False
running = False
Try
Fso = CreateObject("Scripting.FileSystemObject")
iFile = Fso.OpenTextFile(configPath)
'Catch bug As System.IO.FileNotFoundException
' mess = MsgBox("configurationfile not found", 0, title)
' csvtolatex.Exit()
' 'Catch ex As Exception
'mess = MsgBox("Something is wrong with your configurationfile or your path.", 0, title)
'csvtolatex.Exit()
'End Try
'Try
Do Until iFile.AtEndOfStream
Text = iFile.ReadLine
If InStr(Text, "input=") Then
Text = Replace(Text, "input=", "")
iPath = Trim(Text)
End If
If InStr(Text, "output=") Then
If InStr(Text, "output=config=") Then
config = True
End If
Text = Replace(Text, "output=config=", "")
Text = Replace(Text, "output=", "")
ePfad = Trim(Text)
End If
If InStr(Text, "mode=") Then
Text = Replace(Text, "mode=", "")
mode = Trim(Text)
End If
If InStr(Text, "options=") Then
Text = Replace(Text, "options=", "")
options = Trim(Text)
End If
If InStr(Text, "commatopoint") Then
comma = "ctp"
End If
If InStr(Text, "pointtocomma") Then
comma = "ptc"
End If
Loop
If InStr(iPath, ":\") Then
Else
geteilt = Split(configPath, "\")
nCount = UBound(geteilt, 1) - LBound(geteilt, 1)
iPath = Replace(configPath, geteilt(nCount), "") & iPath
iPath = Replace(iPath, "\\", "\")
End If
If InStr(ePfad, ":\") Then
Else
If config Then
Text = configPath
Else
Text = iPath
End If
geteilt = Split(Text, "\")
nCount = UBound(geteilt, 1) - LBound(geteilt, 1)
ePfad = Replace(Text, geteilt(nCount), "") & ePfad
ePfad = Replace(ePfad, "\\", "\")
If (CInt(InStrRev(ePfad, "\")) = CInt(Len(ePfad))) Then
Else
ePfad = ePfad & "\"
End If
End If
If InStr(mode, "math") Then
mode = "$"
ElseIf InStr(mode, "text") Then
mode = ""
Else
mode = "$"
End If
Text = ""
Dim index, delete, lineend, zusatztext, first, spundzetrenner
Dim mnumber, worktext, testnumber, zwischen, addition, arbeitstext, indexi, muellzahl, head
index = "0"
delete = "@€€@µ"
first = True
If InStr(options, "nolines") Then
spundzetrenner = ""
Else
spundzetrenner = "|"
End If
Do Until iFile.AtEndOfStream
Text = iFile.ReadLine
Do While ((InStr(Text, " //")) Or (InStr(Text, "// ")))
Text = Replace(Text, " //", "//")
Text = Replace(Text, "// ", "//")
Loop
Do While ((InStr(Text, ";//;")))
Text = Replace(Text, ";//;", ";//")
Loop
Text = Replace(Text, ";/endhead", ";// /endhead")
Do While ((InStr(Text, "/endhead;")))
Text = Replace(Text, "/endhead;", "/endhead")
Loop
If ((InStr(Text, ";//")) And running) Then
Dim muell
Text = Replace(Text, ";//", "")
arbeitstext = ""
geteilt = Split(Text, ";")
indexi = "0"
nCount = UBound(geteilt, 1) - LBound(geteilt, 1) + 1
If first Then
first = False
Dim columns
columns = "% " & spundzetrenner
For indi = 1 To nCount Step 1
columns = columns & "c" & spundzetrenner
Next
Dim coltext
coltext = "% number of columns: " & nCount
eFile.WriteLine(coltext)
eFile.WriteLine(columns)
End If
muellzahl = "0"
zusatztext = mode
Do
zwischen = 1
If InStr(geteilt(indexi), "/multicolumn{") Then
mnumber = InStr(geteilt(indexi), "/multicolumn{")
testnumber = InStr(geteilt(indexi), "}")
addition = "0"
zwischen = geteilt(indexi)
testnumber = testnumber - 1
zwischen = Left(zwischen, testnumber)
testnumber = InStrRev(zwischen, "{")
testnumber = Len(zwischen) - testnumber
zwischen = Right(zwischen, testnumber)
geteilt(indexi) = Replace(geteilt(indexi), "/multicolumn{", "\multicolumn{")
zusatztext = ""
ElseIf InStr(geteilt(indexi), "/multirow{") Then
geteilt(indexi) = Replace(geteilt(indexi), "/multirow{", " \multirow{")
zusatztext = ""
ElseIf ((Len(geteilt(indexi)) = 0) Or InStr(Text, "/cline{") Or InStr(Text, "\cline{")) Then
zusatztext = ""
Else
zusatztext = mode
End If
testnumber = indexi + 1
If InStr(testnumber, nCount) Then
arbeitstext = arbeitstext & zusatztext & geteilt(indexi) & zusatztext
Else
testnumber = indexi + zwischen
If (InStr(testnumber, nCount) And InStr(geteilt(indexi), "\multicolumn{")) Then
arbeitstext = arbeitstext & zusatztext & geteilt(indexi) & zusatztext
Else
arbeitstext = arbeitstext & zusatztext & geteilt(indexi) & zusatztext & " & "
End If
End If
indexi = indexi + zwischen
Loop Until (InStr(indexi, nCount))
Text = arbeitstext
head = " "
If InStr(Text, "/endhead") Then
Text = Replace(Text, "/endhead", "")
head = " \endhead "
End If
lineend = "\hline"
If InStr(Text, "/cline{") Then
Text = Replace(Text, "/cline{", "\cline{")
End If
If InStr(Text, "\cline{") Then
mnumber = InStr(Text, "\cline{") - 1
arbeitstext = Left(Text, mnumber)
zwischen = Replace(Text, arbeitstext, "")
lineend = zwischen
Text = arbeitstext
End If
If InStr(Text, "/hline") Then
Text = Replace(Text, "/hline", "")
lineend = lineend & "\hline"
End If
If InStr(options, "nolines") Then
lineend = ""
End If
Text = Replace(Text, "/.,", ";")
Text = Text & "\\ " & lineend & head
Text = Replace(Text, " & " & mode & "/blank" & mode, " & ")
Text = Replace(Text, " & " & "/blank", " & ")
Text = Replace(Text, "/blank", "")
If InStr(comma, "ctp") Then
While InStr(Text, ",")
Text = Replace(Text, ",", ".")
End While
ElseIf InStr(comma, "ctp") Then
While InStr(Text, ".")
Text = Replace(Text, ",", ".")
End While
End If
eFile.WriteLine(Text)
End If
If InStr(Text, "/begin{") Then
Text = Replace(Text, "/begin{", "")
Text = Replace(Text, ";", "")
ePath = ePfad & Replace(Text, "}", "")
first = True
running = True
eFile = Fso.CreateTextFile(ePath)
End If
If InStr(Text, "/end") Then
eFile.Close()
running = False
first = False
End If
Loop
iFile.Close()
Text = MsgBox("Conversion complete!", 0, title)
Catch bug As System.IO.FileNotFoundException
mess = MsgBox("configurationfile not found. Your written path is: " & configPath, 0, title)
Catch ex As System.ArgumentException
mess = MsgBox("Something is wrong here, please check your configuration file or your configuration path. Your written path is: " & configPath, 0, title)
Catch e As Exception
mess = MsgBox("Something is wrong here, please check your configuration file.", 0, title)
End Try