![]() |
Fernsteuerung von Excel
Hallo alles zusammen, ich habe folgendes Problem:
Ich tüftel derzeit daran, Excel via Delphi fernzusteuern. Ich möchte, dass Excel eine *.csv Datei öffnet und dann auch gleich die Spalten formatiert. Dazu habe ich die Makro aufzeichnung gewählt und alles so eingestellt, wie ich es gerne haben möchte. Danach hab ich mir den mitgeschnittenen VB-Quellcode in Excel angeschaut und dieses dann angepasst und nach Delphi übernommen und compatibel gemacht. Leider ist dies nicht ganz so einfach, wie ich es mir gedacht hatte. Der gesamte Quellcode sieht derzeit wie folgt aus: procedure TForm1.Button1Click(Sender: TObject); var excel: Variant; begin excel := CreateOleObject('Excel.Application'); excel.visible := true; excel.Workbooks.Add; excel.ActiveSheet.QueryTables.Add('Connection:= _ "TEXT;C:\Dokumente und Einstellungen\Stefan\Desktop\daten.csv"', 'Destination:= _ Range("A1")'); excel.activesheet.name := 'Daten'; excel.activesheet.fieldnames := false; excel.rownumbers := false; excel.filladjacentformulas := false; excel.PreserveFormatting := True; excel.RefreshOnFileOpen := False; excel.RefreshStyle := xlInsertDeleteCells; excel.SavePassword := False; excel.SaveData := True; excel.AdjustColumnWidth := True; excel.RefreshPeriod := 0; excel.TextFilePromptOnRefresh := False; excel.TextFilePlatform := 1252; excel.TextFileStartRow := 1; excel.TextFileParseType := xlDelimited; excel.TextFileTextQualifier := xlTextQualifierNone; excel.TextFileConsecutiveDelimiter := False; excel.TextFileTabDelimiter := False; excel.TextFileSemicolonDelimiter := True; excel.TextFileCommaDelimiter := False; excel.TextFileSpaceDelimiter := False; excel.TextFileColumnDataTypes := 'Array(1,1)'; excel.TextFileTrailingMinusNumbers := True; excel.Refresh; excel.BackgroundQuery := False; end mein Problem hab ich derzeit mit der Zeile: excel.ActiveSheet.QueryTables.Add('Connection:= _ "TEXT;C:\Dokumente und Einstellungen\Stefan\Desktop\daten.csv"', 'Destination:= _ Range("A1")'); Delphi sagt mir, dass es einen Typenkonflikt gibt. Leider komme ich nicht mehr weiter und hab auch keinen Rat mehr. Hab schon alles Mögliche versucht. Der Originale Quellcode in Excel, den es nach Delphi zu übertragen gilt lauten so: With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Dokumente und Einstellungen\Stefan\Desktop\daten.csv", Destination:= _ Range("A1")) .Name = "daten" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 1252 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierNone .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = True .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1,1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With } Vielleicht hat ja irgendwer einen Rat für mich. Bei google hab ich leider auch keine weiteren Hinweise finden können. Danke schonmal im vorraus! Stefan |
Re: Fernsteuerung von Excel
Zitat:
|
Re: Fernsteuerung von Excel
also folgendermaßen:
Delphi-Quellcode:
ActiveSheet.QueryTables.Add("TEXT;C:\Dokumente und Einstellungen\Stefan\Desktop\daten.csv", Range("A1"))
|
Re: Fernsteuerung von Excel
hab gerade genau das selbe Problem :?
wenn ich diese variante versuche: Zitat:
|
Re: Fernsteuerung von Excel
hat denn wirklich keiner eine Idee? :(
|
Re: Fernsteuerung von Excel
Zitat:
Delphi-Quellcode:
Bei der Automatisierung sollte man übrigen von Zwischenvariablen Gebrauch machen.
var
rangeA1 : OleVariant; ... rangeA1 := excel.ActiveSheet.Range('A1'); excel.ActiveSheet.QueryTables.Add('TEXT;C:\Dokumente und Einstellungen\Stefan\Desktop\daten.csv', range); Statt also ständig excel.ActiveSheet.irgendwas zu schreiben:
Delphi-Quellcode:
var
mysheet:OleVariant; .... mysheet := excel.ActiveSheet; mysheet.irgendwasdummes; |
Re: Fernsteuerung von Excel
danke erstmal für den tip!
also wenn ich das so mache
Delphi-Quellcode:
dann kommt immer noch "undeclared identifier: 'range'".
var
rangeA1 : OleVariant; ... rangeA1 := excel.ActiveSheet.Range('A1'); excel.ActiveSheet.QueryTables.Add('TEXT;C:\Dokumente und Einstellungen\Stefan\Desktop\daten.csv', range); wenn ich statt "range" jetzt "rangeA1" nehme, dann erhalte ich "Mitglied nicht gefunden" - allerdings bei
Delphi-Quellcode:
irgendwie ist das zum verrücktwerden... :wall: :wall: :wall:
rangeA1 := excel.ActiveSheet.Range('A1');
|
Re: Fernsteuerung von Excel
zum thema range habe ichmal noch nen codeschnipsel für dich.
Delphi-Quellcode:
// die Kopfleiste formatieren:
XLApp.Workbooks[M].Worksheets[N].Range[RefToCell(9, 1), RefToCell(9, SheetColCount)].Select; XLApp.Selection.Font.Bold := true; XLApp.Selection.Borders.Weight := xlThin; XLApp.Selection.Interior.ColorIndex := 15; // Zellhintergrund einfärben // die Spaltengröße automatisch anpassen: XLApp.Columns['A:F'].EntireColumn.AutoFit; |
Re: Fernsteuerung von Excel
Nachdem auch ich fast verzeifelt bin:
Versuche es mit Range['A1'] und nicht Range('A1'). So ist Delphi nun einmal... Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz