PDA

Vollständige Version anzeigen : Aus Excel eine ini Datei erstellen


Mitschy71
10.07.2014, 14:23
Hallo Excel Profis,

ich habe folgende Idee wir haben eine Excel Datei in der wir Daten zu Maschinen eingeben. Daraus erstellt der MAschinenführer eine Ini Datei mit der die Maschine programmiert wird.
Gibt es eine Möglichkeit aus jeder Excel Zeile eine ini Datei zu ertsellen und diese dann mit den entsprechenden Werten zu füllen.

die Ini - Datei soll folgender Massen aussehen.

Con1= WertA1
Con2= WertB1
Con3= WertC1
usw. bis WertK1
in der Zeile L1 steht dann der Wert wie die Ini Datei heißen soll
Programm1, das ini müsste angefügt werden.

in der ersten Zeile der Excel Datei steht Con1 Con2 Con3 und ab der zweite Zeile sind die Werte

Ich hoffe ihr versteht was ich meine und könnt mir helfen.

Vielen Dank

Hajo_Zi
10.07.2014, 14:29
mein Archiv schreibt dazu.
INI Datei Rechnungsnummer
Von Jörg Lorenz
‚Nummer aus Textbox in ini schreiben:
Private Sub CommandButton1_Click()
Open "c:\eigene dateien\lfdNr.ini" For Output As #1
Print #1, TextBox1.Text
Close
End Sub
ich hätte mal vermutet das muss auch in einer bestimmten Form geschrieben werden.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

haklesoft
10.07.2014, 14:41
...ich hätte mal vermutet das muss auch in einer bestimmten Form geschrieben werden.Genau. Da muss zunächst ein Abschnittsname in eckigen Klammern ausgegeben werden und der Eintrag dann in der Form Eintrag=Inhalt. Ist ja nicht schwer, das so zu machen.

Nur Word hat innerhalb der Office-Palette ein System-Objekt mit integriertem PrivateProfileString. Warum bloß? :boah:

Hasso
10.07.2014, 14:45
Hallo Mitschy71,

das kannst du so lösen:Option Explicit

Private Sub CommandButton1_Click()

Dim intSpalte As Integer
Dim strDateiname As String

strDateiname = ActiveWorkbook.Path & "\" & Range("L1") & ".ini"
Open strDateiname For Output As #1
For intSpalte = 1 To 11
Print #1, Cells(1, intSpalte) & "="; Cells(2, intSpalte)
Next intSpalte
Close #1
End Sub

Hajo_Zi
10.07.2014, 14:46
Gut dann habe ich das wohl falsch interpretiert, ich dachte es geht um Excel. Aber Nein es geht um Word.
Ich bin dann raus.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Mitschy71
10.07.2014, 14:57
Hallo Hasso,

vielen Dank erstmal für die schnelle Hilfe. Es ist schon fast so wie ich es möchte. Allerdings müsste ich für jede Zeile eine eigene ini datei erzeugen.
In der letzten Spalte der Tabelle steh dann der .ini Dateiname.
Ich hab das Beipspiel mal abgeändert. Geht das?


Gruß Michael

Hasso
10.07.2014, 15:07
Hallo Michael,

dann so:Option Explicit

Private Sub CommandButton1_Click()

Dim intSpalte As Integer
Dim strDateiname As String
Dim lngZeile As Long
Dim lngLetzteZeile As Long

lngLetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For lngZeile = 2 To lngLetzteZeile
strDateiname = ActiveWorkbook.Path & "\" & Cells(lngZeile, "L") & ".ini"
Open strDateiname For Output As #1
For intSpalte = 1 To 11
Print #1, Cells(lngZeile - 1, intSpalte) & "="; Cells(lngZeile, intSpalte)
Next intSpalte
Close #1
Next lngZeile
End Sub

Mitschy71
10.07.2014, 15:16
Hallo Hasso,

kannst du nochmal schauen das er immer die oberste Zeile vor dem = immer die oberste Zeile verwendet wird.
Also immer Con1 = WertA1
und in der 15 Zeile und ini Datei dann auch den Con1 = WertA15.
Jetzt hat nimmt er vor dem = immer den Wert der Zeile darüber.

Vielen Dank, du bist ja super schnell!

Michael

Hasso
10.07.2014, 15:27
Hallo Michael,

du hast recht. Ändere den Code wie folgt:Option Explicit

Private Sub CommandButton1_Click()

Dim intSpalte As Integer
Dim strDateiname As String
Dim lngZeile As Long
Dim lngLetzteZeile As Long

lngLetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For lngZeile = 2 To lngLetzteZeile
strDateiname = ActiveWorkbook.Path & "\" & Cells(lngZeile, "L") & ".ini"
Open strDateiname For Output As #1
For intSpalte = 1 To 11
Print #1, Cells(1, intSpalte) & "="; Cells(lngZeile, intSpalte)
Next intSpalte
Close #1
Next lngZeile
End Sub

haklesoft
10.07.2014, 15:36
jetzt noch nach OpenPrint #1, "[" & Cells(lngZeile, "L") & "]" 'Abschnittsnameeinsetzen, damit es eine echte Ini wird

Hasso
10.07.2014, 16:06
Hallo haklesoft,

ich hatte das so verstanden, dass es sich nicht um eine Windows-INI-Datei handelt, sondern eine spezielle für eine bestimmte Maschine. Deshalb habe ich dort auch keinen Abschnittsnamen eingebaut. Ich wüsste auch nicht, wie der lauten sollte, da Michael dazu keine Angaben gemacht hat.

haklesoft
10.07.2014, 16:43
Hallo Hasso,

wenn die Datei nicht den typischen Aufbau hat, sollte sie m. E. nicht Ini heißen, denn der Zugriff auf eine Ini-Datei erfolgt typischerweise nicht sequentiell sondern über Abschnitt und Schlüssel. Da Michael noch bei der Umsetzung seiner Idee ist, bekommen wir Details vielleicht noch zu sehen.