Anzeige
Archiv - Navigation
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
768to772
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wert einer Zelle in externe Datei schreiben!

Wert einer Zelle in externe Datei schreiben!
06.06.2006 22:10:16
Timo
Hallo!
Ich wollte mal fragen ob es eine Möglichkeit gibt, einen berechneten Wert aus einer Zelle in eine externe Datei schreiben zu lassen.
Wobei sich der Name der externen Datei ständig ändert, und ich diese daher bevor ich den Wert da rein schreiben lasse, irgendwie auswählen kann?
Also ich geb den Dateinamen an und der Wert der Zelle wird in die Datei gechrieben! Ist so etwas machbar?
Gruß Timo

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert einer Zelle in externe Datei schreiben!
06.06.2006 22:21:10
Josef
Hallo Timo!
Im prinzip ja, aber das hängt vom Aufbau der externen Datei ab.
Wie sieht die Tabelle aus und in welche Zelle soll geschrieben werden?
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

AW: Wert einer Zelle in externe Datei schreiben!
06.06.2006 22:25:18
Timo
Hallo Sepp!
Also genau gesagt sind es zwei Zellen! E25 & J25! Die externe Datei heisst z.B. P1538.h!
Gruß Timo
Anzeige
AW: Wert einer Zelle in externe Datei schreiben!
06.06.2006 22:34:15
Josef
Hallo Timo!
Ich wollte nicht wissen wie die Datei heist, ("P1538.h" ist übrigens kein Dateiname einer Exceltabelle!) sondern wie der Aufbau der Tabelle aussieht.
Also Spaltenüberschriften, Datenstruktur, ...
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Die Datei
06.06.2006 23:14:51
Josef
Hallo Timo!
Das nächste mal bitte den Blattschutz entfernen!
Die Zellen "E25", "J25" dürfen nicht gesperrt sein (Format &gt Schutz &gt Haken bei "Gesperrt" rausnehmen)
Dann sollte es dieser Code tun.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub WriteData()
Dim objADOfield As Object
Dim myFile As String, myTable As String
Dim varValue1 As String, varValue2 As String

On Error GoTo ErrExit

myFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlt; *.xla)," & _
  "*.xls; *.xlt; *.xla")
If myFile = "Falsch" Then Exit Sub

myTable = "Schnittdatenermittlung"

With ThisWorkbook.Sheets("Tabelle1")
  varValue1 = .Range("A1").Value 'Wert der nach "E25" übertragen wird
  varValue2 = .Range("A2").Value 'Wert der nach "J25" übertragen wird
End With

With ExcelTable(myFile, myTable, "A1:J25")
  .Move 23
  .Fields(4) = varValue1
  .Fields(9) = varValue2
  .Update
  .Close
End With

ErrExit:

If Err.Number <> 0 Then
  MsgBox "Beim übertragen der Werte ist ein Fehler aufgetreten!" & Space(15), 48, "Hinweis"
Else
  MsgBox "Werte wurden erfolgreich übertragen!" & Space(15), 64, "Hinweis"
End If

End Sub


Public Function ExcelTable(ByRef Path As String, ByRef Table As String, ByRef SourceRange As String) As Object
Dim SQL As String
Dim Con As String
On Error Resume Next
SQL = "select * from [" & Table & "$" & SourceRange & "]"
Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
  & "Extended Properties=Excel 8.0;" _
  & "Data Source=" & Path & ";"
Set ExcelTable = CreateObject("ADODB.Recordset")
ExcelTable.Open SQL, Con, 1, 3
End Function


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
Die Datei
07.06.2006 21:33:38
Timo
Hallo Sepp!
Danke für die schnellen Antworten! Kann ich die Werte auch in eine externe Datei schreiben lassen, die keine Excel-Datei ist?
Gruß Timo
AW: Die Datei
07.06.2006 21:36:26
Josef
Hallo Timo!
Welcher Dateityp? txt, ini, ?
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Die Datei
07.06.2006 21:47:34
Timo
Hallo Sepp!
Bei mir heisst die Datei z.b P1540.h (also immer .h) und lässt sich mit einem Editor betrachten und ändern!
Die ersten Zeilen sehen immer so aus!
##* P1540 = BT01504_00181_P07_IC.TP WOERNERMI 28.03.2006 13: 571910 BYTE
0 BEGIN PGM 50418107 MM
16 CYCL DEF 32.0 TOLERANZ
17 CYCL DEF 32.1 T0,020
20 ;EILGANG:40000,ZUSTELLEN:1200,FRAESEN:2000
21 FN0:Q1=40000 ;EILGANG
22 FN0:Q2=1200 ;ANFAHRVORSCHUB
23 FN0:Q3=2000 ;FRAESVORSCHUB (Hier sollte der Wert von J25 die 2000 überschreiben!)
24 TOOL CALL 1508 Z S10000 (Hier sollte der Wert von E25 die 10000 überschreiben!)
25 LM3M7
Ist so etwas machbar?
Gruß Timo
Anzeige
AW: Die Datei
07.06.2006 22:43:16
Josef
Hallo Timo!
Das ginge dann so.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************


Sub WriteToFile()
Dim strFile As String, strTemp As String
Dim str1 As String, str2 As String
Dim intCheck As Integer, lngIndex As Long
Dim varTemp() As Variant

strFile = Application.GetOpenFilename("Alle Dateien (*.*),*.*")

If strFile = "Falsch" Then Exit Sub

str1 = ThisWorkbook.Sheets("Tabelle1").Range("E25").Text
str2 = ThisWorkbook.Sheets("Tabelle1").Range("J25").Text

Open strFile For Input As #1

'Zeilenzahl feststellen
Do While Not EOF(1)
  Line Input #1, strTemp
  lngIndex = lngIndex + 1
Loop

Close #1

Redim varTemp(lngIndex - 1)
lngIndex = 0

Open strFile For Input As #1

'Textdatei in Array einlesen
Do While Not EOF(1)
  Line Input #1, strTemp
  varTemp(lngIndex) = strTemp
  lngIndex = lngIndex + 1
Loop

Close #1

'Zeilen suchen und Werte ersetzen
For lngIndex = 0 To UBound(varTemp)
  If Left(varTemp(lngIndex), 10) = "23 FN0:Q3=" Then
    varTemp(lngIndex) = Left(varTemp(lngIndex), 10) & str1 & " ;FRAESVORSCHUB"
    intCheck = intCheck + 1
  ElseIf Left(varTemp(lngIndex), 21) = "24 TOOL CALL 1508 Z S" Then
    varTemp(lngIndex) = Left(varTemp(lngIndex), 21) & str2
    intCheck = intCheck + 1
  End If
  If intCheck = 2 Then Exit For
Next

Open strFile For Output As #1

'Array in Datei schreiben
For lngIndex = 0 To UBound(varTemp)
  Print #1, varTemp(lngIndex)
Next

Close #1

End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Die Datei
08.06.2006 09:30:50
Timo
Hallo Sepp!
Funktioniert fast perfekt! Ich hatte aber vergessen, dass sich bei "24 TOOL CALL 1508 Z S" diese 1508 auch immer ändert!
Da sollte der Wert von Zeile G16 stehen! Kannst du mir das noch ändern? Wäre super! Ich steige da nicht mehr ganz durch!
Vielen Dank nochmal!
Gruß Timo
AW: Die Datei
08.06.2006 11:55:49
Timo
Hallo Sepp!
Hab es gerade doch selbst hinbekommen!
Danke nochmal für alles!
Gruß Timo
AW: Die Datei
08.06.2006 21:30:00
Timo
Hallo Sepp!
Eine Frage hätte ich doch noch. Beim öffnen wird immer standardmäßig der Ordner Eigene Dateien geöffnet.Kann man da auch einen bestimmten Pfad zuordnen?
Gruß Timo
AW: Die Datei
08.06.2006 21:41:21
Timo
Hallo Sepp!
Eine Frage hätte ich doch noch. Beim öffnen wird immer standardmäßig der Ordner Eigene Dateien geöffnet.Kann man da auch einen bestimmten Pfad zuordnen?
Gruß Timo
Anzeige
AW: Die Datei
08.06.2006 21:53:36
Josef
Hallo Timo!
Freud mich, das du das erste problem selber lösen konntest.
Das zeigt, daß du mitarbeitest;-)
Einen Pfad kannst du mit "ChDir" vorgeben.
Beispiel:
ChDir "C:\DeinPfad"

strFile = Application.GetOpenFilename("Alle Dateien (*.*),*.*")

'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Die Datei
08.06.2006 23:23:25
Timo
Hallo Sepp!
Ist ja so einfach wenn man´s weiß!
Vielen Vielen Dank nochmal für alles! Ich muss mich einfach noch viel mehr mit VBA beschäftigen!
Gruß Timo
AW: Die Datei
09.06.2006 09:51:17
Timo
Hallo Sepp!
Eine Frage hätte ich doch noch. Ich habe eine msgbox mit vbyesno zur Sicherheit eingefügt!
z = MsgBox("Programmnummer (" & Left(varTemp(0), 10) & ") richtig?", vbYesNo, "Programm wirklich überschreiben?")
If z = vbYes Then Open strFile For Output As #1
If z = vbNo Then Exit Sub
So wie ich es gemacht habe schreibt es mir jetzt immer die ersten 10 Zeichen der Datei in die Box. Also "Programmnummer (die ersten 10 Zeichen) richtig?"
Meine Frage:
Kann man das auch noch eingrenzen. So dass es mir nur von Zeichen 4-10 in die Box schreibt?
Gruß Timo
Anzeige
AW: Die Datei
09.06.2006 19:19:02
Josef
Hallo Timo!
as geht so.

"Programmnummer (" & Mid(varTemp(0), 4, 10) & ") richtig?"

'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

AW: Die Datei
09.06.2006 20:49:40
Timo
Hallo Sepp!
Vielen Dank! Wie schon mal gesagt, es kann ja so einfach sein, wenn man es weiß.
Das mit dem Pfad funktioniert bei mir nur unter Laufwerk C:\, aber die Dateien stehen unter einem Serverlaufwerk ("M:\S00538_NCFrei\TNC530"). Nur wenn ich das so eingebe funktioniert es nicht. Es geht nur mit Laufwerk C:\MeinPfad. An was liegt das? Kann man einen Server garnicht zuweisen?
Gruß Timo
AW: Die Datei
09.06.2006 22:56:40
Josef
Hallo Timo!
Das musst du so machen.
ChDrive "M" ' Laufwerk wechseln
ChDir "M:\S00538_NCFrei\TNC530" ' Pfad wechseln

'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

AW: Die Datei
09.06.2006 23:44:06
Timo
Hallo Sepp!
Vielene Dank!
Gruß Timo

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige