GridControl VB6, Inhalt kopieren

wie bekomme ich es hin das ich aus einem Grid die Daten mit Standard Copy&amp:stuck_out_tongue_winking_eye:aste in z.B. Excel einfügen kann?

Hallo,

wie bekomme ich es hin das ich aus einem Grid die Daten mit
Standard Copy&amp:stuck_out_tongue_winking_eye:aste in z.B. Excel einfügen kann?

Welches Grid meinst Du?
Beim Datagrid habe ich die Eigenschaften .Rows und .Cols nicht gefunden.

Wenn Du das MSHFlexgrid verwendest, ist es leicht.

Private Sub Command1\_Click()
 Dim txt As String
 Dim c As Long, r As Long
 txt = ""
 For r = 0 To MSHFlexGrid1.Rows - 1
 For c = 0 To MSHFlexGrid1.Cols - 1
 txt = txt & MSHFlexGrid1.TextMatrix(r, c) & Chr(9)
 Next
 txt = txt & vbCrLf
 Next
 Clipboard.Clear
 Clipboard.SetText txt
End Sub

Gruß Rainer

Es ist das „MS Flex Grid Control 6.0“…

Ich möchte einfach zwei Zeilen nach Excel kopieren können… direkt in Excel schreiben ginge ja auch, aber dort muß ich das Ziel ja als (Buchstabe, Zahl) eingeben.
Gibt es eine Möglichkeit wie ich ca. 120 Werte in eine Zeile schreiben kann…
For C = A to Z geht ja nicht …

Deswegen dachte ich mir die Daten in zwei Zeilen des Grids zu schreiben und von dort zu kopieren.

ich bin mehr der Gelegenheitsanwender von VB (sorry), habe mir ein Programm geschrieben das von einer Webseite, nach einem bestimmten Schlagwort die Stau KM anzeigt bzw. ausließt und diese zyklisch alle 15 Minuten in eine Textdatei schreibt. Jetzt möchte ich diese Daten (Uhrzeit + Staukilometer) aber in Excel (Zeilen!) haben um daraus Kurven erstellen zu können. Vieleicht hat du als Fachmann eine Idee wie ich das lösen könnte.
oder gibt es eine Möglichkeit wie ich A, B, C, D usw. als Counter erstellen kann?

Hallo,

Deswegen dachte ich mir die Daten in zwei Zeilen des Grids zu
schreiben und von dort zu kopieren.

den Umweg über ein Steuerelement musst Du nicht gehen.

In dem Beispiel schreibe ich die Inhalte aus dem Flexgrid nur in einen String und den schreibe ich in die Zwischenablage.
Einfügen kannst Du das in Excel mit ‚Strg & V‘ (paste)

Wenn Du die Daten anders als in einem Flexgrid hast, kannst Du sie auch direkt in den String schreiben. Du musst nur die Spalten durch einen Tab [Chr(9)] trennen, dann versteht Excel das. Eine Zeile schließt Du mit VbCrLf ab.

Bevor Du in die Zwischenablage schreibst, musst Du die erst leer machen.

Bevor ich noch ein Beispiel schreibe … Wie sehen die Zeilen, die Du einfügen möchtest denn aus, bevor Du die ins Flexgrid schreiben möchtest? Hast Du die in einem Array oder ist das schon eine Zeile in einem Text? Beides ist leicht in die Zwischeablage einzufügen, so daß Du den Inhalt dann einfach mit ‚paste‘ in Excel einfügen kannst.

Ach ja, woher nimmst Du die beiden Zeilen? Kommen die aus einer Textdatei? Dann wäre das eine Aufgabe für Excel-VBA und Du müsstest VB dafür nicht starten.

Gruß Rainer

Die Variabelen habe ich als…
Stau() as integer # die staukilometer der webseite
Zeit() as integer # die uhrzeit als HHMM

diese wollte ich per Schleife (For o to 96) irgendwohinschieben um diese dann als Zeile in Excel zu haben.

Hallo,

Die Variabelen habe ich als…
Stau() as integer # die staukilometer der webseite
Zeit() as integer # die uhrzeit als HHMM

OK.

diese wollte ich per Schleife (For o to 96)
irgendwohinschieben um diese dann als Zeile in Excel zu haben.

Ja, aber am besten gleich in die Zwischenablage, ein Umweg macht keinen Sinn.

Ich gehe mal davon aus, daß die Daten schon in Deinen Feldern stehen.
Mit dem Code unten schreibst Du die in die Zwischenablage und kannst Sie in Excel einfach einfügen. Die Trennzeichen Chr(9), ein Tab, werden von Excel verstanden, Excel schreibt jeden Wert in eine Spalte.

Gruß Rainer

Option Explicit

Dim Stau() As Integer
Dim Zeit() As Integer

Private Sub Command1\_Click()
 Dim i As Integer, txt As String
 For i = LBound(Stau) To UBound(Stau)
 txt = txt & CStr(Stau(i)) & Chr(9)
 Next
 txt = txt & vbCrLf
 For i = LBound(Zeit) To UBound(Zeit)
 txt = txt & CStr(Zeit(i)) & Chr(9)
 Next
 txt = txt & vbCrLf
 Clipboard.Clear
 Clipboard.SetText txt
End Sub

Ah, ja… man addiert einfach den String mit allen Variabelen auf…

Excel benötigt dann nur noch ein Trennzeichen, die Funktion „Text in Spalten ist mir bekannt“.

ich danke dir, damit komme ich dann weiter :smile:

Hallo Andre,

hilft dir das weiter?:

Option Explicit
'
Public Stau(96) As Integer, Zeit(96)
'
Sub Test()
Dim N As Long
For N = 0 To 96
 Stau(N) = (N + 1) \* 3
 Zeit(N) = Now() + N / 24
Next N
Call Stauzeit
End Sub
'
Sub Stauzeit()
Dim N As Long
For N = 0 To 96
 Cells(1, N + 1) = Format(Stau(N), "0")
 Cells(2, N + 1) = Format(Zeit(N), "HH:MM")
Next N
End Sub

Gruß
Reinhard

Hallo Reinhard,

Public Stau(96) As Integer, Zeit(96)

Public geht auf der Form in VB6.0 nicht, das ist Modulen/Klassenmodulen vorbehalten.

Gruß Rainer

Der Springende Punkt ist das ich für die zellenauswahl .Range (A1) stehen habe… was dann mit zwei Countern nicht geht…

Aber wenn das wie von dir mit .Cells funktioniert ist das auch eine gute Sache.

Schaue ich mir mal an, danke.