Ich suche nach einer Möglichkeit, möglichst über OLEDB in Excel Makros zu deaktivieren. Da mein Programm nur auf die xls Datei zugreifen kann, wenn die Makros deaktiviert sind. Falls das dazu führt, dass die Makros danach dauerhaft ausgeschaltet sind, müsste ich natürlich gleich noch eine Möglichkeit haben die vorherigen Einstellungen wieder herzustellen. Das sollte allerdings eher das kleinere Problem sein, falls mir denn jmd helfen und mir sagen kann wie ich die Makros überhaupt ausschalten kann.
Bitte keine Links zu Codebeispielen posten, da ich hier nur begrenzten Internetzugriff habe, also lieber den Code direkt, oder zumindest eine Idee wie es funktionieren könnte.
Hier mal der Code der funktioniert, wenn man Excel manuell öffnet und die Makros ausschaltet:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| private void button4_Click_1(object sender, EventArgs e) { { try { dataGridView1.Visible = true; System.Data.OleDb.OleDbConnection MyConnection; System.Data.DataSet DtSet; System.Data.OleDb.OleDbDataAdapter MyCommand; MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\test\\BFW\\test.xls';Extended Properties=Excel 8.0;"); MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Funktionsdiagramm$A:Y]", MyConnection); MyCommand.TableMappings.Add("Table", "TestTable"); DtSet = new System.Data.DataSet(); MyCommand.Fill(DtSet); dataGridView1.DataSource = DtSet.Tables[0]; MyConnection.Close(); button2.Enabled = button5.Enabled = true; button1.Enabled = button4.Enabled = false; } catch (Exception ex) { MessageBox.Show(ex.ToString()); }
} } |