Hallo zusammen,
kann mir jemand mit meinem Code weiterhelfen?
Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
(ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long
Public Function FondsStammdatenKopie()
Dim Result As Long
Result = apiCopyFile("J:\CC\Stammdaten\Stammdaten.xlsx", "J:\CC27\Stammdaten_BackUp.xlsx", False)
Workbooks.Open FileName:= _
"J:\CC27\Stammdaten_BackUp.xlsx" _
, UpdateLinks:=0
Sheets("Fondsstamm_incl_liq_Tranchen").Select
Cells.Select
Selection.NumberFormat = "@"
ActiveWorkbook.Close
End Function
Was ich gerne hätte:
Nachdem die BackUp Datei erstellt wurde, soll das Excel geöffnet werden und die Inhalte von einem bestimmten Reiter als Text formatiert werden.
In der Original-Datei sind die einzelnen Spalten nämlich unterschiedlich formatiert.
Sollte doch möglich sein, oder?
Das sollte in der Tat möglich sein. - Was ist dein Problem dabei?
Der Code hängt sich an dieser Stelle auf:
Sheets("Fondsstamm_incl_liq_Tranchen").Select
Hi,
wenn du Excel aus Access heraus fernsteuern willst, so brauchst du ein Application-Objekt.
Du kannst die Excel-Objekte und Methoden etc. nicht unmittelbar ansprechen.
Beispiel:Public Function FondsStammdatenKopie()
Dim xlApp As Object
Dim Result As Long
Result = apiCopyFile("J:\CC\Stammdaten\Stammdaten.xlsx", "J:\CC27\Stammdaten_BackUp.xlsx", False)
Set xlApp = CreateObject("Excel.Application")
With xlApp.Workbooks.Open FileName:= "J:\CC27\Stammdaten_BackUp.xlsx", UpdateLinks:=0
.Sheets("Fondsstamm_incl_liq_Tranchen").Cells.NumberFormat = "@"
.ActiveWorkbook.Close
End With
Set xlApp = Nothing
End Function
Die "Cells" müssten evtl. noch näher bestimmt werden.
Vielen Dank.
Ich kann die Codes zwar ein wenig lesen, aber mit selbst schreiben ist leider nicht viel.
In dem genannten Code bekomme ich an dieser Stelle einen Fehler:
With xlApp.Workbooks.Open FileName:= "J:\CC_27.....
Die ganze Zeile wird im VBA Editor rot angezeigt?
Fehler beim Kompilieren: Erwartet: Anweisungsende
Er hat wohl ein Problem an der Stelle "FileName"
Ok, ich hatte den Code auf die Schnelle zusammengeschustert, in der Hoffnung, dass du mit dem Ansatz weiterarbeiten könntest.
Machen wir es also noch einmal ausführlicher:
Public Function FondsStammdatenKopie()
Dim xlApp As Object
Dim xlWkb As Object
Dim Result As Long
Result = apiCopyFile("J:\CC\Stammdaten\Stammdaten.xlsx", "J:\CC27\Stammdaten_BackUp.xlsx", False)
Set xlApp = CreateObject("Excel.Application")
Set xlWkb = xlApp.Workbooks.Open FileName:= "J:\CC27\Stammdaten_BackUp.xlsx", UpdateLinks:=0
With xlWkb
.Sheets("Fondsstamm_incl_liq_Tranchen").Cells.NumberFormat = "@"
.Close
End With
Set xlApp = Nothing
End Function
(weiterhin ungetestet)
Und wenn du schon den Rückgabewert der API-Funktion empfängst, solltest du ihn auch auswerten:
Result = apiCopyFile("J:\CC\Stammdaten\Stammdaten.xlsx", "J:\CC27\Stammdaten_BackUp.xlsx", False)
If Result = 0 Then
MsgBox "Kopieraktion fehlgeschlagen!"
Exit Function
End If