Laden...
T
traude myCSharp.de - Member
BA Student Mechatronik Thüringen Dabei seit 21.08.2006 19 Beiträge
Benutzerbeschreibung

Forenbeiträge von traude Ingesamt 19 Beiträge

30.08.2006 - 16:15 Uhr

Um meine Frage zu präzesieren. Ich möchte geren von einem Datagrid basiernd aus alle Feldnamen meiner zu grunde liegenden AccessDB auslesen und der von euch benannte Befehl hilft mir leider nicht weiter weil selbst wenn ich ihn in Access dirkt eingebe nicht erkannt wird.

Was ist mein Fehler oder liege ich hier generell falsch?

Gruß Traude

30.08.2006 - 15:11 Uhr

Hallo,

deine Links haben mir leider nicht weiter geholfen, da zB auch Fehlermeldungen ausgegeben werden, bei mir leider nicht.Bei zeigt die Werte nicht an bzw befüllt die OutputZeilen nicht mit Inhalt.

Fals jemand eine Antwort darauf hat, wäre ich echt froh! 🙁
Den per Hand führt er es aus.
Habe mal eine Quelltext angehangen.

Habt dank, traude.


using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using System.Collections;
using System.Runtime.InteropServices;


namespace Excel_Regression
{
	/// <summary>
	/// Zusammenfassung für Class1.
	/// </summary>
	class Class1
	{
		/// <summary>
		/// Der Haupteinstiegspunkt für die Anwendung.
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			//Excel - Instanz erzeugen und sichbar schalten, bzw öffnen, Freischalten des COM-Objektes mit Marshal.ReleaseComObject nicht nötig

			Excel._Application excel = new Excel.ApplicationClass();
			excel.Visible = true;

			// Arbeitsmappe ohne Vorlage erzeugenn 

			Object missing = Missing.Value;
			excel.Workbooks.Add(missing);

			// Das aktive Workbook referenzieren
			Excel.Workbook workbook = excel.ActiveWorkbook;

			// Arbeitsmappe erzeugen

			if ( workbook.Worksheets.Count == 0)
			{
				workbook.Worksheets.Add(missing,missing,missing, missing);
			}

			// Das erste Arbeitsblatt referenzieren

			Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];

			// A2 bis A6 & B2 bis B6 bechreiben

			worksheet.get_Range("A2", missing).Value = "2";
			worksheet.get_Range("A3", missing).Value = "4";
			worksheet.get_Range("A4", missing).Value = "8";
			worksheet.get_Range("A5", missing).Value = "16";
			worksheet.get_Range("A6", missing).Value = "32";

			worksheet.get_Range("B2", missing).Value = "2";
			worksheet.get_Range("B3", missing).Value = "4";
			worksheet.get_Range("B4", missing).Value = "8";
			worksheet.get_Range("B5", missing).Value = "16";
			worksheet.get_Range("B6", missing).Value = "32";

			// Regression
			
			//Zellenauswahl
			Excel.Range yValues = (Excel.Range)worksheet.get_Range("A2","A6");
			Excel.Range xValues = (Excel.Range)worksheet.get_Range("B2","B6");
			Excel.Range output = (Excel.Range)worksheet.get_Range("D2","D6");

			// Add-In "Analyse Funktionen" laden
			excel.Workbooks.Open(excel.LibraryPath + @"\Analyse\ATPVBAEN.XLA", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
			excel.Workbooks.get_Item("atpvbaen.xla").RunAutoMacros(Excel.XlRunAutoMacro.xlAutoActivate);

			// Nicht den kompletten Pfad angeben!
			excel.Run(@"ATPVBAEN.XLA!Regress", yValues, xValues, false, false, Type.Missing, output, false, false, false, false, Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
		
			worksheet.get_Range("B7",missing).Value = "fertig";


			//Excel schliessen

			//excel.Quit();


			//ComObjekt freigeben

			System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
			
			excel = null;
			GC.Collect();

30.08.2006 - 11:34 Uhr

Hallo,

ich habe das selbe Problem und da ich auf diesn Gebiet Laie bin, frage ich lieber bevor ich noch mehr graue Haare bekomme.

Der oben stehende SQL Befehl makiert mir alle Feld bzw Spaltennamen der Tabelle in er Datenbank INFORMATION_SHEMA oder?

Gruß traude

30.08.2006 - 09:02 Uhr

Ja du hast schon recht wenn man es im Ganzen betrachtet ist MS schon nicht schlecht, was nicht bedeutet das es gut ist. Sie haben schon viel dazu gelernt, aber wenn ich zB momentan die Acces Hilfe ansehe weiß auch nicht. Beispiel für Sql Befehle, die in der Abfrage bei Acces gar nicht funktionieren.
Aber wenn man so ein Riesen wie MS sieht mit einer unüberschaubaren Menge an Software, dann versteht amn auch warum die sich nicht so beherzt um solche Detail kümmern können, wie irgendeine kleine Schmiede, Schade eigentlich. Aber MSDN ist schon ein großer Schritt , aber oft für mich als Laien schwer überblickbar bzw verständlich, aber vielleicht ist Auch die .net Umgebung eher für das tägliche Geschäft gemacht wurden als für Einsteiger oder welche die sich mal probieren wollen.

Zu Borland oder Delphi kann ich leider keine Aussage trefefn, war bisser immer nur in .net. Nur noch ein bissel Prolog und Oberron, aber das ist ja noch länger her und denk ich mal nicht zu vergleichen.

Gruß traude

30.08.2006 - 08:42 Uhr

Hallo,

ich möchte gerne die Feldnamen eines Accestabellenblattes auslesen. Ich bin zwar mit der Farge etwas abseits von C#, aber ich verwende zur Abfrage C# 😁

Weiß jemand ob es ein SQL Befehl dazu gibt, wenn ja wie dieser heißt?

Vielen Dank im Vorraus

Gruß traude

28.08.2006 - 13:00 Uhr

Hallo,

das war eine hervoragende Idee, vielen Dank. Ansonsten ist die von dir vorgeschlagene Bibliothek echt super, schöne Beispiele und gut durch struktuiert. Ich galube da sieht man den Unterschied zwischen einer kleinen Software Scmiede und MS.

Danke traude

28.08.2006 - 06:41 Uhr

Hallo,

danke für den Link, die ANgst vor dem Schuh hab ich auch, auch wenn vielleicht eher ein Toaster raus kommt.

HAst du dich zufällig mit dem erstern kostenlosen Tool schon beschäftigt? Ich finde nämlich wder in den mitglieferten Beispielen noch in der Hilfe die Richtige methode oder Klasse für das Zoomen. Wahrscheinlich darum weil ich ander falschen suche oder in die falsche Richtung denke. 🤔

Gruß traude

25.08.2006 - 14:34 Uhr

Hallo,

das ist schlecht.

Wenn ich ein axMSchart zoomen ist folgender Gedankengang richtig?

Ich lass mir über AxMSChart20Lib.AxMSChart.MousePosition die Mausposition ausgeben. Dann zoome ich über Graphics.transform den Punkt und die Nachbarschaft?

Hier zu kommen mir folgende Fragen:

Gibt dei MousePosition die Position über dem Chart wieder oder im Display?

Graphic.transform wandelt doch nur Point oder PonitF, wie kann ich das mit dem Bildpunkt verbinden?

Bin mir bei diesem Gedankengang selber sehr unschlüssig un möchte nicht zu viel Energie in den falschen Weg stecken.

Gruß traude

24.08.2006 - 14:32 Uhr

Danke, für die kleine Erläuterung.

Doch habe ich immernoch das Problem das er zwar das AddIn ausführt aber die Regression nicht , bzw sie gibt er mir nichts aus, bzw die Output Zelle beinhaltet einnen undef. Wert , woran könnte das liegen?

Muss noch eine Anweisung zum anzeigen machen, aber dafür hat man doch eigentlich die OutputZelle angegeben?

Gruß traude

24.08.2006 - 09:56 Uhr

Hallo Rainbird,

Danke für dein Unterstützung. Ich kenne den Recorder schon, doch leider denke ich bei der Umsetztung von VBA in C# noch genug diesem Klassenschema.

Kann man auch in Datagrids oder generelle Formen zoomen?

Gruß traude

24.08.2006 - 07:49 Uhr

Hallo Rainbird,

möchte mich ertsaml für Ihre Gedult und doch sehr hilfreichen Antworten bedanken. 👍

Wenn ich Ihre Erklärung zum Marshal.ReleaseComObject richtig versteh, dient es dazu das den Com Anschluss für eine nächste Insatnz frei zu machen, in dem ich die alte auflöse?

Hat somit :

Marshal.ReleaseComObject(excel);

die selbe Wirkung wie ...?


excel = null;
GC.Collect(); 

Wenn ich den Makro-Recorder während des Programmablaufs mitlaufen lasse, zeichnet dieser nichts auf, woran liegt das? ?(

Den von Ihnen habe ich verwendet, doch gibt er mir nichts aus, bzw die Output Zelle beinhaltet einnen undef. Wert , woran könnte das liegen? 🤔

Gruß traude

23.08.2006 - 09:44 Uhr

Hallo herbivore,

Danke für die Antwort. Eigentlich ist es ja ganz einfach, aber das seht und fällt mit der Mathmatik, mal sehen. 😁

Gruß Traude

23.08.2006 - 07:19 Uhr

Hallo,

ich möchte gerne in ein Excel Diagramm zoomen, doch war meine bisherige Recherche recht erfolglos. Unter welchen Stichwörtern sollte ich Suchen? Ist das überhaupt möglich?

Gruß Traude

23.08.2006 - 07:02 Uhr

Hallo,

ich möchte gerne in ein Diagramm zoomen, entweder in C# oder Excel. Doch leider fehlt mir hierfür das passend Stichwort um Material für dieses Thema zu finden. In welcher Richtung sollte ich Suchen?

Gruß traude

22.08.2006 - 13:31 Uhr

Hallo,

danke für die Antwort. Aber ich finde es ist noch relativ leicht , sich in der .net Framework zu recht zu finden, da sich hier doch viel Mühe mit den Komentaren gegeben wurde. Doch sich in den Com Bilitheken zu recht zu finden ist exrem schwer. Natürlich liegt das Können in der Übung, aber wenn die Klassen so gestalltet sind das der erste oder weite logische Zusammenhang nicht richtig ist, dann weiß ich auch nicht ob ich mich als Unbedarfter nur dämlich anstelle oder irgendwo jemand sein Spieltrieb freien lauf gelassen hat, bei der Erstellung der Klassen.

Denn warum muss die Bennenung der Diagrammachsen so unmissverständlich anders sein als des Diagrammtitels, es greift doch auf ein und das selbe zu.

Wirklich mehr als die Grundlegende Arbeitsweiße von C sharb kann ich aus Büchern nicht nehmen. Direkte Klassenerklärungen welche direkt Eigenschaften erklären, findet man selten oder nie.

Ok, fals jemand auch damit Probleme hat.


//Festlegung des Diagrammtyps

workbook.ActiveChart.ChartType = Excel.XlChartType.xlXYScatterLines;
	
				
//Zulassen und Bennen eines Diagrammtitels
workbook.ActiveChart.HasTitle = true;
workbook.ActiveChart.ChartTitle.Caption = "Messreihe";
			
//Zulassen und Bezeichen der Diagrammachsen			
Excel.Axis xAchse = (Excel.Axis)workbook.ActiveChart.Axes(Excel.XlAxisType.xlCategory,Excel.XlAxisGroup.xlPrimary);
xAchse.HasTitle = true;
xAchse.AxisTitle.Caption = "xValue";

Excel.Axis yAchse = (Excel.Axis)workbook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary);
yAchse.HasTitle = true;
yAchse.AxisTitle.Caption = "yValue";

Gruß traude

22.08.2006 - 11:24 Uhr

Hallo,

danke für die Antwort, aber umgesetzen konnte ich es noch nicht.

Das von Ihnen angesprochene freischalten von Excel.Application habe ich ausgelassen, da der Zugriff auf Excel über COM funktioniert, oder worin liegt die Aufgabe diese Befehls?
Warum genau, ist eine gute Frage.

Es dazu das er den Makro zur Regession nicht findet, doch ich erkenne den Grund hierfür nicht.

( _Eine nicht behandelte Ausnahme des Typs 'System.Runtime.InteropServices.COMException' ist in Excel Regression.exe aufgetreten.

Zusätzliche Informationen: Microsoft Excel kann das Makro 'C:\Programme\Office2000\Office\Makro\Analyse\ATPVBAEN.XLA!Regress' nicht finden_ )

das ist mein Quellcode


using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using System.Collections;

.
.
.

//Excel - Instanz erzeugen und sichbar schalten, bzw öffnen
// Freischalten des COM-Objektes mit Marshal.ReleaseComObject nicht nötig

Excel._Application excel = new Excel.ApplicationClass();
excel.Visible = true;


// Arbeitsmappe ohne Vorlage erzeugenn 

Object missing = Missing.Value;
excel.Workbooks.Add(missing);


// Das aktive Workbook referenzieren

Excel.Workbook workbook = excel.ActiveWorkbook;


// Arbeitsmappe erzeugen

if ( workbook.Worksheets.Count == 0)
{
workbook.Worksheets.Add(missing,missing,missing, missing);
}


// Das erste Arbeitsblatt referenzieren

Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];


// A2 bis A6 & B2 bis B6 bechreiben

worksheet.get_Range("A2", missing).Value2 = "2";
worksheet.get_Range("A3", missing).Value2 = "4";
worksheet.get_Range("A4", missing).Value2 = "8";
worksheet.get_Range("A5", missing).Value2 = "16";
worksheet.get_Range("A6", missing).Value2 = "32";

worksheet.get_Range("B2", missing).Value2 = "2";
worksheet.get_Range("B3", missing).Value2 = "4";
worksheet.get_Range("B4", missing).Value2 = "8";
worksheet.get_Range("B5", missing).Value2 = "16";
worksheet.get_Range("B6", missing).Value2 = "32";


// Regression	
			
Excel.Range yValues = (Excel.Range)worksheet.get_Range("A2","A6");
Excel.Range xValues = (Excel.Range)worksheet.get_Range("B2","B6");
Excel.Range output = (Excel.Range)worksheet.get_Range("D2","D6");

			
excel.Run("C:\\Programme\\Office2000\\Office\\Makro\\Analyse\\ATPVBAEN.XLA!Regress", yValues, xValues, false, false, Type.Missing, output, false, false, false, false, Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

Was würden Sie sagen, woran es liegt?

Gruß traude

21.08.2006 - 11:38 Uhr

Hallo,

ist es möglich die Regression in Excel von C# aus zu starten?

Der VBA-Code ist

Application.Run "ATPVBAEN.XLA!Regress", ActiveSheet.Range("y-Werte "), _
ActiveSheet.Range("x-Werte"), False, False, , ActiveSheet.Range( _
"Ausgabebereich"), False, False, False, False, , False

Ich habe es schon probiert in C# Code um zu schreiben, doch ich bin kläglich gescheitert. X(

Wenn es überhaupt möglich ist, wie muss der Code aus sehen?

Gruß traude

21.08.2006 - 09:48 Uhr

Hallo,

ich möchte gerne von C# vorhandene Makros in einer excel datei aufrufen und ablaufen lassen.

Ich bin nur auf den Befehl

workbook.RunAutoMacros(Excel.XlRunAutoMacro which);

gestoßen und nach allerlei rum probiererei, bin ich nichtt weit gekommen.

Was erwartet er bei "Excel.XlRunAutoMacro which". Ich weiß nicht wie ich den Namensbezug auf das MAkro anlegen soll.

Gruß traude

21.08.2006 - 09:39 Uhr

Hi,

ich eigne mir monentan den Zugriff von C# auf Excel an. Doch leider ist das umschreiben von VBA zu C# oft nicht mehr als ein Raten ins Blaue. ?(

Ich möchte gerne die Diagrammachsen bezeichen, komme aber nicht auf den richtigen code für c# 🤔

in VBA:

ActiveChart.Location Where:=xlLocationAsNewSheet  
With ActiveChart  
    .HasTitle = True  
    .ChartTitle.Characters.Text = &quot;Titel&quot;  
    .Axes(xlCategory, xlPrimary).HasTitle = True  
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = &quot;Argumente&quot;  
    .Axes(xlValue, xlPrimary).HasTitle = True  
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = &quot;Funktionswerte&quot;  

Hättet ihr ein Idee?