Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Hi liebes Forum, hoffe zunächst bin hier richtig gelandet
das Problem, vor dem ich gerade stehe ist folgendes:
Ich habe eine Excel Datei (in der sogar noch ein kleines Makro steckt) - also ein *.xlsm.
Diese Datei will ich nun samt dem Excel über .net einlesen und in einer geeigneten Form speichern.
(kurze Anmerkung: haben bis jetzt im Studium nur Java gemacht, die ganze .NET Familie, C# etc. ist mir noch fremd)
Das erste was mir einfiel: VB.net --> da ja die Makros VBA sind
Gibt es bzw. geht es, was ich vorhabe und was wäre der klügste Ansatz, weiß nicht mal so recht wie ich es googlen soll
Für ne gute Antwort steht ein Glühwein (wenn ihr in meiner Nähe seid gggggg)
Ein .net basiertes Programm, dass eine .xlsm-Datei ausliest und in <geeignetes Format> wieder speichert wirst du so nicht finden.
Was du von deinem Java-Studium mitbekommen haben solltest: Zerlege das Problem so lange in Teilprobleme, bis du diese lösen kannst. Dann klappt's auch mit dem googlen.
Vermutlich war sie bei ihrem Java-Studium zu sehr mit ganz niedlich gucken beschäftigt, damit die Jungs ihr die Lösungen geben, um dabei etwas zu lernen :<
Das .Net-Framework bringt doch alles mit, was es braucht, um auf Excel-Dateien zuzugreifen oder neue zu erstellen. Das sind dann fünf Zeilen Code und ich habe alles, um damit weiterzuarbeiten.
Was wäre denn überhaupt ein "geeigneteres Format"?
Tipp: Websuche nach "C# Excel". Da lässt sich selbst Microsoft nicht lumpen, bei den Suchtreffern aufzutauchen und ein vollständiges Programmbeispiel abzuliefern.
Vermutlich war sie bei ihrem Java-Studium zu sehr mit ganz niedlich gucken beschäftigt, damit die Jungs ihr die Lösungen geben, um dabei etwas zu lernen :<
Immer diese bittersüßen Spitzen, dabei sehnt sich da nur jemand, dass ihn jemand ansieht / mit den Wimpern klimpert - armer, ungeliebert Junge komm her, lass dich knuddeln *G*
ich schlage vor, dass du mal eine der Suchseiten aufmachst (wie G, Y oder B) und dabei folgenden Satz eintippst "c# xlsm reader".
Soweit ich weiß gibt es mehrere Bibliotheken die mit excel herumhantieren können.
Wir sind nicht Böse, weil wir keine Antwort geben. Wir sind die Guten weil wir eben keine Antwort geben. Wenn man für dich alles vorkaut dann hast du ja nichts mehr zu lernen. Als Programmierer sollte man die Basics zuerst lernen um die komplexere Probleme lösen zu können. Wenn du diese Basics kannst (unabhängig vom Problem), dann kannst du mit guten Gewissen die Bibliotheken anwenden um schneller und sicherer ein Problem zu lösen.
Deine Aufgabe wäre jetzt mal dein Gehirn selbst einschalten und die Lösung auch selbstständig finden.
Immer diese bittersüßen Spitzen, dabei sehnt sich da nur jemand, dass ihn jemand ansieht / mit den Wimpern klimpert - armer, ungeliebert Junge komm her, lass dich knuddeln *G*
Das hast Du nett geschrieben, Sara(h). Früher haben wir das so ähnlich gemacht (Du musst natürlich den Code Herausnehmen, der keinenBezug zu Deinem Problem hat):
'--------------------------------------------------------------------------
'Durchsucht den Folder nach uebereinstimmenden Files
'-------------------------------------------------
Sub subImportFiles()
Dim str1 As String, str2 As String, strFG1 As String, bFG As Boolean
Dim i1 As Long, i2 As Long, i3 As Long
Dim iDefRecords As Long, iSkipedRows As Long, iWrittenLines As Long
Dim rst As New ADODB.Recordset
Dim objXlsApp As Excel.Application
Dim objXlsFile As Excel.Workbook
Dim objXlsSheet As Excel.Worksheet
Dim objXlsRange As Excel.Range
Dim b1 As Boolean, d1 As Date
Dim strDelete As String
Dim obj1, obj0, obj2
On Error GoTo errX
d1 = Now
Dim bolFirst As Boolean
Me.MousePointer = fmMousePointerHourGlass
i3 = intWriteSpreadLine(Me.sprDefinitions, cboCust, "Import for customer Begin.", FormatDateTime(Now, vbGeneralDate))
'---------------------------------------------------------
Set obj0 = CreateObject("Scripting.FileSystemObject")
If obj0.FolderExists(strCustomerFolder) = False Then
MsgBox " customerfolder " & strCustomerFolder & vbNewLine & " not exists. Please see administration."
Me.MousePointer = fmMousePointerDefault
Exit Sub
End If
'-----------------------------------------------------------------------
Set obj1 = obj0.GetFolder(strCustomerFolder)
For Each obj2 In obj1.Files
b1 = True
If InStr(1, obj2.Name, ".xl") = 0 Then
b1 = False
Else
strImportfile = obj2.Name
If bolFileName(strImportfile) = True Then
i3 = intWriteSpreadLine(Me.sprDefinitions, strImportfile, "ERROR ", "not import; File Name is not correct")
b1 = False
End If
strImportfileStummel = Mid(strImportfile, 17, 100)
If CInt(varAdoFeld("select 1 from A_Importdefs where customer = '" & cboCust & "' and importFile = '" & strImportfileStummel & "'")) <> 1 Then
i3 = intWriteSpreadLine(Me.sprDefinitions, strImportfile, "ERROR ", "not import; NO Importdefinition fund. ")
b1 = False
End If
End If
If b1 = True Then
If optdeleteCust = True And bolFirst = False Then
str1 = "delete " & strZielTabelle & " where customer = '" & cboCust.Text & "'"
str1 = str1 & " and periode = '" & Mid(strImportfile, 6, 7) & "'"
cnn.Execute str1
bolFirst = True
End If
If optAll = True Then
str1 = "delete " & strZielTabelle & " where customer = '" & cboCust.Text & "'"
str1 = str1 & " and le = '" & Mid(strImportfile, 1, 4) & "'"
str1 = str1 & " and periode = '" & Mid(strImportfile, 6, 7) & "'"
str1 = str1 & " and country = '" & Mid(strImportfile, 14, 2) & "'"
cnn.Execute str1
End If
If optUsed = True Then
str1 = Mid(strImportfile, 1, 16)
If InStr(1, strDelete, str1) = 0 Then
strDelete = strDelete & str1
str1 = "delete " & strZielTabelle & " where customer = '" & cboCust.Text & "'"
str1 = str1 & " and le = '" & Mid(strImportfile, 1, 4) & "'"
str1 = str1 & " and periode = '" & Mid(strImportfile, 6, 7) & "'"
str1 = str1 & " and country = '" & Mid(strImportfile, 14, 2) & "'"
cnn.Execute str1
End If
End If
Set objXlsApp = New Excel.Application
objXlsApp.Visible = True
objXlsApp.AskToUpdateLinks = False
Set objXlsFile = objXlsApp.Workbooks.Open(strCustomerFolder & "\" & strImportfile, UpdateLinks:=3)
For i1 = 1 To objXlsFile.Worksheets.Count
str1 = objXlsFile.Name & ", sheet: " & objXlsFile.Worksheets(i1).Name
DoEvents
Set objXlsSheet = objXlsFile.Worksheets(i1)
objXlsSheet.Activate
Call subSubtotal(objXlsSheet)
Call subImportsheet(objXlsSheet, i1)
Next
objXlsFile.Close savechanges:=False
Set objXlsFile = Nothing
Call subCustomerRules(cboCust, strImportfile)
i1 = DateDiff("n", d1, Now)
i3 = intWriteSpreadLine(Me.sprDefinitions, strImportfile, "Import complete. ", i1 & " minutes Duration")
End If
Next
objXlsApp.Quit
Set objXlsApp = Nothing
'---------------------------------------------------------
errX:
Me.MousePointer = fmMousePointerDefault
i1 = DateDiff("n", d1, Now)
If Err.Number = 0 Then
str1 = "Import for customer complete."
i3 = intWriteSpreadLine(Me.sprDefinitions, cboCust, "Import for customer complete.", i1 & " minutes total.")
Exit Sub
End If
str1 = "ERROR in Line " & i2 & " , because: " & Err.Description
i3 = intWriteSpreadLine(Me.sprDefinitions, strImportfile, " ", str1)
Err.Clear
End Sub
Ergänzung ()
Sarah1990 schrieb:
Immer diese bittersüßen Spitzen, dabei sehnt sich da nur jemand, dass ihn jemand ansieht / mit den Wimpern klimpert - armer, ungeliebert Junge komm her, lass dich knuddeln *G*
So ein schlecht formatierter Codeblock in VB hilft da auch nicht viel. Du kannst für Code übrigens die [ code ][/ code ] Tags verwenden.
Der Tipp nach "C# Excel" zu suchen, reicht übrigens vollkommen. Da stehn genau solche Codeblöcke in C# drin. C# ist auch von der Basissyntax her 99% Java, also sollte sie sich darin zurechtfinden.