Konvertierung VB Makro > OO Makro?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Didi
Beiträge: 7
Registriert: So, 18.12.2005 13:03

Konvertierung VB Makro > OO Makro?

Beitrag von Didi »

Ist es möglich dieses VBA Makro in ein OO Makro zu konvertiern :?
Wenn ja könnten Sie mir sagen wie?


Gibt es "Application.GetOpenFilename" unter OO basic?

Danke im voraus

**************************************************************************************************
Sub Macro1()

datifile = Application.GetOpenFilename("Files Job (*.job), *.job")
'col = Array("A", "D")
par = Array("A", "B", "C", "D", "E", "F", "G", "H", "I")
' Range("Variabeln!A0:E596").ClearContents
Range("Schritte!A3:G596").ClearContents
Range("Teile!B6:I596").ClearContents
If datifile = False Then Exit Sub
Open datifile For Input As #1
ActiveSheet.Unprotect
Do While Not EOF(1)
Line Input #1, rigadati
If Mid$(rigadati, 1, 13) = "[Temp:Commo" Then
rg = 2
Do
Line Input #1, rigadati
pos = InStr(rigadati, "=")
dat = Mid$(rigadati, pos + 1)
Range("Variabeln!c" & rg).Value = dat
rg = rg + 1: grp = 0
If Mid$(rigadati, 1, 13) = "[Temp:Plans" Then Exit Do
Loop While Not rigadati = ""
End If
If Mid$(rigadati, 1, 13) = "[Temp:Plans" Then
rg = 3
Line Input #1, rigadati
If Mid$(rigadati, 1, 13) <> "[temp:Parts" Then
pos = InStr(rigadati, "=")
num = Mid$(rigadati, pos + 1)
Range("Variabeln!c13").Value = num
For x = 1 To num
For y = 1 To 7
Line Input #1, rigadati
pos = InStr(rigadati, "=")
dat = Mid$(rigadati, pos + 1)
Range("Schritte!" & par(y) & rg).Value = dat
Next
rg = rg + 1: grp = 0
Next
End If
End If
If Mid$(rigadati, 1, 13) = "[Temp:Parts" Then
rg = 6
Line Input #1, rigadati
pos = InStr(rigadati, "=")
num = Mid$(rigadati, pos + 1)
For x = 1 To num
For y = 1 To 8
Line Input #1, rigadati
pos = InStr(rigadati, "=")
dat = Mid$(rigadati, pos + 1)
Range("Teile!" & par(y) & rg).Value = dat
Next
rg = rg + 1: grp = 0
Next
End If
Loop
' ActiveSheet.Protect
Close
End Sub

*********************************************************************************************************
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Didi,
Ist es möglich dieses VBA Makro in ein OO Makro zu konvertiern
Ja, es ist möglich, jedes VBA Makro in ein OOo Makro zu konvertieren., wobei "konvertieren" vielleicht der falsche Ausdruck ist. Es muss einfach neu programmiert werden - alle Objektzugriffe müssen angepasst werden.

Mit solchen Arbeiten verdienen sich Dienstleister ihren Lebensunterhalt.

Dieses Forum dient nicht dazu, diese Arbeitsplätze zu streichen. Wir helfen aber gerne bei konkreten Fragen - übernehmen aber verständlicherweise nicht die komplette Arbeit.
Application.GetOpenFilename
Nein, da es sich um eine VBA Methode handelt (oder um eine selbstdefinierte?). Entscheidender wäre zu bechreiben, was die Funktion macht und welches Ergebnis erwartet wird - da gibt es sicherlich ähnliche Funktionen mit gleichen Ergebnis in OOo Basic.

Viele Grüße

Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Didi
Beiträge: 7
Registriert: So, 18.12.2005 13:03

Beitrag von Didi »

Hallo Thomas

Ich will doch nicht dass Arbeitsplätze verloren gehen sondern ich will nur mit OO arbeiten

Kannst du mir vieleich weiterhelfen?

Ich muss mit diesem Makro nur TXT Dateien öffnen und in Calc einlesen
ist es möglich wie in VB mit "Application.GetOpenFilename" ein Auswahlfenster zu erstellen?

Ich habe schon Im Forum umhergeschaut und diese Problematik nicht gefunden


Das restliche Programm werde ich schon selber eine Lösung finden. :(


Danke im Voraus

Didi
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Didi,

Klar helfen wir die. Konkrete Frage, konkrete Antworten.
Ich muss mit diesem Makro nur TXT Dateien öffnen und in Calc einlesen
ist es möglich wie in VB mit "Application.GetOpenFilename" ein Auswahlfenster zu erstellen?
Ich kenne die VB Routine nicht, wenn es aber darum geht, einen Dateinamen über einen Auswahldialog zu erhalten, das geht auch mit OOo.
Ich habe schon Im Forum umhergeschaut und diese Problematik nicht gefunden
Nun, das war dann wohl nicht so genau :wink: Immerhin: Genau diese Problematik wurde 2-3 Posts vor deiner Anfrage behandelt -> Öffnen-Dialog per Makro aufrufen
Aber ok, das kann passieren. Hier nochmals die wichtigsten Codezeilen:

Code: Alles auswählen

oDialog = createunoservice("com.sun.star.ui.dialogs.FilePicker")
	oDialog.displaydirectory="d:\Puffer"
	oDialog.appendFilter("Textdateien", "*.txt")
	oDialog.currentFilter="Textdateien"
	oDialog.execute
	sFileName = oDialog.Files(0) 
	msgbox sFileName
Dies liefert dir einen Datei-Auswahldialog, das voreingestellte Startverzeichnis ist "d:/puffer" und als voreingestellter Filter werden nur Dateien mit der Erweiterung "*.txt" angezeigt. Das alles kannst du natürlich entsprechend verändern. Die Stringvariable "sFileName" beinhaltet jetzt die qualifizierte URL der Datei inklusiv dem Pfad. Genau diese benötigst du, um später die Datei zu öffnen.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo didi

ich hatte ein ähnliches problem und konnte dies durch die dauerhelfer m.dannenhöfer und th.kurmbein im fall eines dbf-importes lösen.

Code: Alles auswählen

Option Explicit
'Erstellt am 3.Januar 2006
Sub ImpDbf
	Dim vDateiDialog 
	Dim vDateiZugang
	dim i as integer
	dim sPfad as string	 		'Startverezichnis der Dialoge
	Dim sDatei as String        'nimmt den Pfad und den Dateinamen auf

	vDateiDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")'Datei Öffnen-Dialog wird erstellt
	vDateiZugang = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")'Dateizugang wird erstellt

'hier wird der Standardpfad festgelegt und in die URL-Schreibweise umgewandelt	
	sPfad = ConvertToUrl("D:\446\GIS")

'prüft ob der angegebene Pfad vorhanden ist.	
	if vDateiZugang.Exists(sPfad) Then
	   vDateiDialog.SetDisplayDirectory(sPfad)
	else
	msgbox ("Der gewählte Pfadname existiert nicht!" + Chr(13)+"Die Routine wird beendet.",0+16,"dBase-Import Fehler")
	exit sub
	End if
	
'Titel des Öffnen-Dialogs wird festgelegt
	vDateiDialog.setTitle("B+P :::dBase-Import:::")
	
'Öffnen Dialog wird auf dBase gestellt
	vDateiDialog.appendfilter("dBase","*.dbf")

'der Variablen i wird der Dateidialog zugewiesen und die if-Abfrage vorbereitet
	i = vDateiDialog.Execute()

'der Variablen sDatei wird der kpl. Dateipfad übergeben	
	If i = 1  then
	  sDatei = vDateiDialog.Files(0)
	end if	
	vDateiDialog.dispose()
	
'Hier findet der eigentliche Import statt
'arg (1)=Array mit 2 Argumenten definieren für den Filter und die Filteroptionen
Dim arg(1) as new com.sun.star.beans.PropertyValue
	arg(0).name = "FilterName" 
	arg(0).value = "dBase" 
	arg(1).name = "FilterOptions"
	arg(1).value = "0"   'System Character Set Umlaute werden richtig wiedergegeben
'if-Abfrage prüft, ob ein Dateiname übergeben worden ist.
	if vDateiZugang.Exists(sDatei) Then
	StarDesktop.loadComponentFromURL(sDatei, "_blank", 0, arg())
	else
		msgbox ("Es wurde keine dbf-Datei ausgewählt!"+ Chr(13)+"Die Routine wird beendet.",0+16,"dBase-Import Fehler")
		exit sub
	end if
End Sub
noch folgende hinweise:

du musst deinen filter und die filteroptionen definieren hierzu gibt es im buch th. kurmbein ein bsp. csv-import und ein link, wo die filter dokumentiert sind.

zum buch:
http://www.galileocomputing.de/1023?GPP=ooo

zur filterdoku:
http://www.dannenhoefer.de/faqstarbasic/Filter.html

beste grüße klaus
Didi
Beiträge: 7
Registriert: So, 18.12.2005 13:03

Beitrag von Didi »

Danke für die Informative Antwort
jetzt bin ich schon wieder einen Schritt nähergekommen


MfG Didi
Antworten