PDA

Vollständige Version anzeigen : Exceldatei aus Access bearbeiten und speichern


Schursch
21.01.2008, 11:11
Hallo allerseits,

ich habe ein Problem bei dem ich nicht weiter komme. Per TransferSpreadsheet(acLink) möchte ich regelmäßig mehrere Excelsheets einlinken. Allerdings erhalte ich den bekannten Fehler (#Num!), da Text- und Zahlenformate gemeinsam vorliegen.

Ich möchte nun aus Access mehrere Dateien umformatieren und abspeichern. Die Umformatierung funktioniert soweit. Das Speichern stellt nun das Problem dar.
.Workbooks.Close SaveChanges:= True ->funktioniert nicht

ActiveWorkbook.SaveAs "C:\test_file.xls" -> funktioniert, allerdings verschwindet hierbei der Excel-Prozess nicht aus dem Taskmanager, so dass der zweite Versuch jeweils scheitert. Excel wird nicht vollständig beendet.

Ich hoffe, dass mir jemand weiterhelfen kann. Vielen Dank im Voraus
und viele Grüße

Schursch


Hier der Code:

Public Sub proc_Excel_Formate()

Dim xlsApplication As Excel.Application
Dim intZ As Integer, intZeilenzahl As Integer
Dim varFileName As String

varFileName = "test_file.xls" ' 'verschiedene Formate in Spalte4

Set xlsApplication = CreateObject("Excel.Application") 'MyDatei = varFileName

With xlsApplication
.DisplayAlerts = False
.Visible = True
.ScreenUpdating = True
.Workbooks.Open (varFileName)
End With

intZeilenzahl = xlsApplication.Worksheets("Sheet1").Range("d1").CurrentRegion.Rows.Count

For intZ = 1 To intZeilenzahl
xlsApplication.Worksheets("Sheet1").Cells(intZ, 4).NumberFormat = "@"
xlsApplication.Worksheets("Sheet1").Cells(intZ, 4).Value = " " & xlsApplication.Worksheets("Sheet1").Cells(intZ, 4).Value
xlsApplication.Worksheets("Sheet1").Cells(intZ, 4).Value = Right(xlsApplication.Worksheets("Sheet1").Cells(intZ, 4).Value, Len(xlsApplication.Worksheets("Sheet1").Cells(intZ, 4).Value) - 1)
Next

ActiveWorkbook.SaveAs "C:\test_file.xls"

With xlsApplication

.Visible = True
.ScreenUpdating = True
.Workbooks.Close 'SaveChanges:= True ->Fehlermeldung wrong Number of Arguments

.Application.Quit
.DisplayAlerts = True
End With

Set xlsApplication = Nothing

End Sub

lalo
21.01.2008, 11:56
Hallo,

geh mal nach folgendem Schema vor:

Dim appXLS As Excel.Application
Dim wbkXls As Excel.Workbook
Dim wksXLS As Excel.Worksheet

usw....
'-------------------------
' Excelobjekt erstellen
'------------------------
On Error Resume Next
Set appXLS = GetObject(, "Excel.Application") '-- falls Excel bereits aktiv ist
If appXLS Is Nothing Then
Err.Clear
Set appXLS = CreateObject("Excel.Application") ' falls Excel nicht aktiv ist---
End If
If appXLS Is Nothing Then
XlsExpZeitReihe = "Error: Excel konnte nicht gestartet werden!"
Exit Function
End If
On Error Goto 0

'-------

.. Dein Code .... Du musst noch die Variable DateiName füllen...

'--------- Speichern -----------------
wbkXls.SaveAs FileName:=DateiName, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
'--------- Excel beenden -----------------
appXLS.Quit
set appXLS = nothing
...

Schursch
21.01.2008, 13:30
Danke, hat mir weitergeholfen. Ich musste nur mein Workbook-Objekt(Set wbkXls = appXLS.Workbooks.Open(varFileName)) noch richtig ansprechen, dann hat es funktioniert.
Gruß

Schursch