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
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();
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 = "Titel"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Argumente"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Funktionswerte"
Hättet ihr ein Idee?