Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Excel Worksheets laden
IhateWin
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

Excel Worksheets laden

beantworten | zitieren | melden

wenn ich auf die worksheets zugreife bekomme ich immer die fm:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

und ich weiß nicht warum, habt ihr eine idee ????



 

// project created on 07.05.2004 at 10:33
using System;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;


namespace MyFormProject 
{
	class MainForm : System.Windows.Forms.Form
	{
		private System.Windows.Forms.TextBox Load1TB;
		private System.Windows.Forms.ComboBox StartTerminCB;
		private System.Windows.Forms.TextBox Load2TB;
		private System.Windows.Forms.Button Load2BT;
		private System.Windows.Forms.Button Load1BT;
		
		object missing = Missing.Value;
		object ExcelObject = null;
		Excel.Application excel = null;
		Excel.Workbook workbook1 = null;
		Excel.Workbook workbook2 = null;
		Excel.Worksheet worksheet1 = null;
		Excel.Worksheet worksheet2 = null;
		
		public MainForm()
		{
			InitializeComponent();
			Go();
		}
	
		// THIS METHOD IS MAINTAINED BY THE FORM DESIGNER
		// DO NOT EDIT IT MANUALLY! YOUR CHANGES ARE LIKELY TO BE LOST
		void InitializeComponent() {
			this.Load1BT = new System.Windows.Forms.Button();
			this.Load2BT = new System.Windows.Forms.Button();
			this.Load2TB = new System.Windows.Forms.TextBox();
			this.StartTerminCB = new System.Windows.Forms.ComboBox();
			this.Load1TB = new System.Windows.Forms.TextBox();
			this.SuspendLayout();
			// 
			// Load1BT
			// 
			this.Load1BT.Location = new System.Drawing.Point(2, 2);
			this.Load1BT.Name = "Load1BT";
			this.Load1BT.TabIndex = 0;
			this.Load1BT.Text = "Load 1";
			this.Load1BT.Click += new System.EventHandler(this.LoadFile1);
			// 
			// Load2BT
			// 
			this.Load2BT.Location = new System.Drawing.Point(2, 28);
			this.Load2BT.Name = "Load2BT";
			this.Load2BT.TabIndex = 1;
			this.Load2BT.Text = "Load 2";
			this.Load2BT.Click += new System.EventHandler(this.LoadFile2);
			// 
			// Load2TB
			// 
			this.Load2TB.Location = new System.Drawing.Point(80, 30);
			this.Load2TB.Name = "Load2TB";
			this.Load2TB.Size = new System.Drawing.Size(406, 20);
			this.Load2TB.TabIndex = 3;
			this.Load2TB.Text = "";
			this.Load2TB.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Load2Now);
			// 
			// StartTerminCB
			// 
			this.StartTerminCB.Items.AddRange(new object[] {
						"Januar",
						"Februar",
						"März",
						"April",
						"Mai",
						"Juni",
						"Juli",
						"August",
						"September",
						"Oktober",
						"November",
						"Dezember"});
			this.StartTerminCB.Location = new System.Drawing.Point(2, 56);
			this.StartTerminCB.MaxDropDownItems = 12;
			this.StartTerminCB.Name = "StartTerminCB";
			this.StartTerminCB.Size = new System.Drawing.Size(162, 21);
			this.StartTerminCB.TabIndex = 4;
			this.StartTerminCB.SelectedIndexChanged += new System.EventHandler(this.LoadExcelSheet);
			// 
			// Load1TB
			// 
			this.Load1TB.Location = new System.Drawing.Point(80, 4);
			this.Load1TB.Name = "Load1TB";
			this.Load1TB.Size = new System.Drawing.Size(406, 20);
			this.Load1TB.TabIndex = 2;
			this.Load1TB.Text = "";
			this.Load1TB.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Load1Now);
			// 
			// MainForm
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(492, 113);
			this.Controls.Add(this.StartTerminCB);
			this.Controls.Add(this.Load2TB);
			this.Controls.Add(this.Load1TB);
			this.Controls.Add(this.Load2BT);
			this.Controls.Add(this.Load1BT);
			this.Name = "MainForm";
			this.Text = "This is my form";
			this.Closing += new System.ComponentModel.CancelEventHandler(this.ExcelBeenden);
			this.ResumeLayout(false);
		}
			
		[STAThread]
		public static void Main(string[] args)
		{
			Application.Run(new MainForm());
		}
		
		void Go()
		{
			try
			{
				StreamReader read = new StreamReader("config.ini");
				this.Load1TB.Text = read.ReadLine();
				this.Load2TB.Text = read.ReadLine();
				read.Close();
			}
			catch
			{
			}
			
			try
			{
				ExcelObject = Marshal.GetActiveObject("Excel.Application");
			}
			catch
			{
				
			}
			
			if(ExcelObject != null)
			{
				excel = (Excel.Application)ExcelObject;
			}
			else
			{
				excel = new Excel.ApplicationClass();
			}
			excel.Visible = true;
			
		}
		void LoadFile1(object sender, System.EventArgs e)
		{
			OpenFileDialog ofd = new OpenFileDialog();
			if(ofd.ShowDialog() == DialogResult.OK)
			{
				this.Load1TB.Text = ofd.FileName;
			}	
			Excel.Workbook workbook1 = excel.Workbooks.Open(this.Load1TB.Text,
			                                               missing, missing, missing, missing,
			                                               missing, missing, missing, missing,
			                                               missing, missing, missing, missing);
		}
		
		void LoadFile2(object sender, System.EventArgs e)
		{
			OpenFileDialog ofd = new OpenFileDialog();
			if(ofd.ShowDialog() == DialogResult.OK)
			{
				this.Load2TB.Text = ofd.FileName;
			}
			Excel.Workbook workbook2 = excel.Workbooks.Open(this.Load2TB.Text,
			                                               missing, missing, missing, missing,
			                                               missing, missing, missing, missing,
			                                               missing, missing, missing, missing);
		}
		

		void Load1Now(object sender, System.Windows.Forms.KeyEventArgs e)
		{
			if(e.KeyCode == Keys.Enter)
			{
				if(this.Load1TB.Text.Length != 0)
				{
					Excel.Workbook workbook1 = excel.Workbooks.Open(this.Load1TB.Text,
				 	                                              missing, missing, missing, missing,
				  	                                             missing, missing, missing, missing,
				   	                                            missing, missing, missing, missing);					
				}
			}			
		}
		
		void Load2Now(object sender, System.Windows.Forms.KeyEventArgs e)
		{
			if(e.KeyCode == Keys.Enter)
			{
				if(this.Load2TB.Text.Length != 0)
				{
					Excel.Workbook workbook2 = excel.Workbooks.Open(this.Load2TB.Text,
				 	                                              missing, missing, missing, missing,
				  	                                             missing, missing, missing, missing,
				   	                                            missing, missing, missing, missing);					
				}
			}
			
		}		
		
		void LoadExcelSheet(object sender, System.EventArgs e)
		{
			string HString1 = "";
			string HString2 = "";
			
			if((this.Load1TB.Text.Length != 0) && (this.Load2TB.Text.Length != 0))
			{
				switch(this.StartTerminCB.Text)
				{
					case "Januar":
						HString1 = "Januar";
						HString2 = "Jan ";
						break;
					
					case "Februar":
						HString1 = "Februar";
						HString2 = "Feb ";
						break;
					
					case "März":
						HString1 = "März";
						HString2 = "Mrz ";
						break;
					
					case "April":
						HString1 = "April";
						HString2 = "Apr ";
						break;
					
					case "Mai":
						HString1 = "Mai";
						HString1 = "Mai ";
						break;					
					
					case "Juni":
						HString1 = "Juni";
						HString2 = "Jun ";
						break;
					
					case "Juli":
						HString1 = "Juli";
						HString2 = "Jul ";
						break;
					
					case "August":
						HString1 = "August";
						HString2 = "Aug ";
						break;
					
					case "September":
						HString1 = "September";
						HString1 = "Sep ";
						break;
					
					case "Oktober":
						HString1 = "Oktober";
						HString2 = "Okt ";
						break;
					
					case "November":
						HString1 = "November";
						HString2 = "Nov ";
						break;
					
					case "Dezember":
						HString1 = "Dezember";
						HString2 = "Dez ";
						break;
				}
				
				HString1 = HString1 + DateTime.Now.Year.ToString().Substring(2,2);
				HString2 = HString2 + DateTime.Now.Year.ToString().Substring(2,2);
				MessageBox.Show(HString1,HString2);
				
				worksheet1 = (Excel.Worksheet)workbook1.Worksheets[HString1];
				worksheet2 = (Excel.Worksheet)workbook2.Worksheets[HString2];
				

				
			}
			else
			{
				MessageBox.Show("Nicht alle Exceldateien wurden geladen...");
			}
		}
		

		
		void ExcelBeenden(object sender, System.ComponentModel.CancelEventArgs e)
		{
			
			StreamWriter write = new StreamWriter("M:\\C#-programm\\ExcelMCP01\\bin\\Debug\\config.ini");
			write.WriteLine(this.Load1TB.Text);
			write.WriteLine(this.Load2TB.Text);
			write.Close();
			excel.Quit();
		}
	}			
}


private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

hi,

falls sich die config.ini nicht im projektordner befindet, dann ist die zeile:

StreamReader read = new StreamReader("config.ini");

die fehlerverursachende zeile.

2 bitten:

1. bitte den hinterlassen code kurz halten
2. schreib bitte in welche zeile der fehler auftreten tut.
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

mal ne andere frage, funktioniert das wirklich so?
case "März":
						HString1 = "März";
						HString2 = "Mrz ";
						break;
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers
IhateWin
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

worksheets...

beantworten | zitieren | melden

der fehler entsteht in der zeile wo ich die worksheets referenziere... also ganz unten ...

worksheet1 = (Excel.Worksheet)workbook1.Worksheets[HString1];
worksheet2 = (Excel.Worksheet)workbook2.Worksheets[HString2];

aber da das meiner meinung nach vollkommen richtig ist, hab ich denn ganzen code dargestellt....


ps.: dieses comische zeichen wurde von diesem forum hinzugefügt..., ist nicht im quelltext vorhanden...
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

ist Excel eine reference? wenn ja wo ist sie?
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

also ganz oben deklarierst du ein neues workbook1 und weist ihm null zu.

später (in deinen methode) weist du workbook1 einen wert zu aber legst wieder eine neues workbook an.


ich tippe dass bei
worksheet1 = (Excel.Worksheet)workbook1.Worksheets[HString1];
nicht das workbook1 (welches in den methoden deklariert wurde)
verwendet sondern das globale objekt, und diese ist ja leider null -> deswegen diese art der fehlermeldung.

bin mir aber nicht sicher da ich es nicht testen konnte.

p.s.: Excel.Workbook in den methoden LoadFile und LoadNow entfernen (gilt auch für workbook2)
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers
IhateWin
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

ha, das wars....

beantworten | zitieren | melden

wie konnte ich das nur übersehen...

ich hab "Excel.Workbook " aus den load methoden entfernt und schon funktioniert es ... :-))
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

also hatte ich recht, oder ? *g*
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers