Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Hilfe bei VBA-Code in Access

Begonnen von dobby110, August 02, 2016, 11:47:52

⏪ vorheriges - nächstes ⏩

dobby110

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?






PhilS

Das sollte in der Tat möglich sein. - Was ist dein Problem dabei?
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

dobby110

Der Code hängt sich an dieser Stelle auf:


Sheets("Fondsstamm_incl_liq_Tranchen").Select

MaggieMay

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.
Freundliche Grüße
MaggieMay

dobby110

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"

MaggieMay

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
Freundliche Grüße
MaggieMay