ich habe eine Frage bzgl. Basic in Calc. Mein Ziel ist es, aus einem immer identisch aufgebauten Text-Formular alle Zeilen zu kopieren, die Text enthalten. Ich habe bereits einen Code (in VBA - habe leider absolut keine Ahnung von Basic) geschrieben der mir alle Zellen dieser Tabelle kopiert - sofern sie nicht leer sind. Der besagte (wirklich nicht schöne Code) sieht folgendermaßen aus:
Code: Alles auswählen
Option Explicit
Dim blnTMP As Boolean
Public Sub Daten_auslesen()
Dim objDocument As Object
Dim strDatei As String
Dim strPfad As String
Dim objApp As Object
On Error GoTo Fin
' Pfad anpassen
strPfad = "I:\Eigene Dateien\"
Set objApp = OffApp("Word")
' Word nicht sichtbar
'Set objApp = OffApp("Word", False)
If Not objApp Is Nothing Then
strDatei = Dir$(strPfad & "*.doc*", vbDirectory)
Do While strDatei <> ""
Set objDocument = objApp.Documents.Open _
(strPfad & strDatei)
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(1, 1).Range, _
Chr(13) & Chr(7), "")
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(2, 1).Range, _
Chr(13) & Chr(7), "")
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(3, 1).Range, _
Chr(13) & Chr(7), "")
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(4, 1).Range, _
Chr(13) & Chr(7), "")
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(5, 1).Range, _
Chr(13) & Chr(7), "")
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(1, 2).Range, _
Chr(13) & Chr(7), "")
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(2, 2).Range, _
Chr(13) & Chr(7), "")
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(3, 2).Range, _
Chr(13) & Chr(7), "")
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(4, 2).Range, _
Chr(13) & Chr(7), "")
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(5, 2).Range, _
Chr(13) & Chr(7), "")
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(1, 3).Range, _
Chr(13) & Chr(7), "")
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(2, 3).Range, _
Chr(13) & Chr(7), "")
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(3, 3).Range, _
Chr(13) & Chr(7), "")
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(4, 3).Range, _
Chr(13) & Chr(7), "")
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(3).Cell(5, 3).Range, _
Chr(13) & Chr(7), "")
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(1).Cell(1, 2).Range, _
Chr(13) & Chr(7), "")
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(1).Cell(1, 2).Range, _
Chr(13) & Chr(7), "")
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(1).Cell(1, 2).Range, _
Chr(13) & Chr(7), "")
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(1).Cell(1, 2).Range, _
Chr(13) & Chr(7), "")
Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Replace(objDocument.Tables(1).Cell(1, 2).Range, _
Chr(13) & Chr(7), "")
objDocument.Close False
' Die nächste Datei nehmen
strDatei = Dir$()
Loop
MsgBox "Daten erfolgreich übertragen!"
Else
MsgBox "Applikation nicht installiert!"
End If
Fin:
If Not objApp Is Nothing Then
If blnTMP = True Then
objApp.Quit
blnTMP = False
End If
End If
Set objApp = Nothing
If Err.Number <> 0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
End Sub
Private Function OffApp(ByVal strApp As String, _
Optional blnVisible As Boolean = True) As Object
Dim objApp As Object
On Error Resume Next
Set objApp = GetObject(, strApp & ".Application")
Select Case Err.Number
Case 429
Err.Clear
Set objApp = CreateObject(strApp & ".Application")
blnTMP = True
If blnVisible = True Then
On Error Resume Next
objApp.Visible = True
Err.Clear
End If
End Select
On Error GoTo 0
Set OffApp = objApp
Set objApp = Nothing
End Function
Ich hoffe dass ihr mir helfen könnt, bei den "Kollegen" vom Microsoft-Forum habe ich leider keine Antwort erhalten...
Vielen Dank im Voraus
Jerome