AW: SIM-Karte?
15.07.2013 14:03:34
Klaus
Hi Marco,
deine Datei auf der SD-Karte muss einen anderen Namen haben als die Datei auf deiner Festplatte, da Excel nur eine Datei eines Namens geöffnet haben kann. In die Datei auf deiner SIM-Karte packst du folgendes Makro:
Const PfadListe As String = "C:\TestTMP\" 'dein Pfad (anpassen)
Const DateiListe As String = "Einkaufsliste.xls" 'deine Datei (anpassen)
Const TabelleName As String = "Einkaufsliste" 'muss in beiden Sheets gleich sein!
Const LastCol = 13 'es werden 13 Spalten beachtet
Const FirstCol = 1 'Anfang in Spalte A = 1
Public pathSD As String
Sub CopyMeToFile()
'kopiert "sich" in ein anderes File, löscht "sich" danach.
Dim wkbNew As Workbook
Dim wkbOld As Workbook
Dim lRow As Long
'altes Workbook merken
pathSD = ActiveWorkbook.FullName
Set wkbOld = ActiveWorkbook
'neues workbook öffnen
Call FileCheckOpen(PfadListe, DateiListe)
Set wkbNew = ActiveWorkbook
wkbNew.Sheets(TabelleName).Activate
'Inhalte aus altem in neues workbook kopieren
wkbOld.Activate
With wkbOld.Sheets(TabelleName)
lRow = .Cells(.Rows.Count, FirstCol).End(xlUp).Row - 1
.Cells(2, FirstCol).Resize(lRow, LastCol - FirstCol + 1).Copy
End With
wkbNew.Activate
With ActiveSheet
lRow = .Cells(.Rows.Count, FirstCol).End(xlUp).Row + 1
.Cells(lRow, FirstCol).PasteSpecial
End With
'neues workbook speichern und schließen
wkbNew.Save
wkbNew.Close
'altes workbook: Inhalte leeren und speichern (und schließen?)
With wkbOld.Sheets(TabelleName)
lRow = .Cells(.Rows.Count, FirstCol).End(xlUp).Row - 1
.Cells(2, FirstCol).Resize(lRow, LastCol - FirstCol + 1).ClearContents
End With
wkbOld.Save
'wkbOld.Close
End Sub
Sub FileCheckOpen(sPath As String, sFile As String)
sPath = sPath & "/" & sFile
If WkbExists(sFile) = False Then
If Dir(sPath) = "" Then
MsgBox "File " & sPath & " not found!"
Else
Workbooks.Open sPath, UpdateLinks:=False
End If
Else
Workbooks(sFile).Activate
End If
End Sub
Function WkbExists(sFile As String) As Boolean
Dim wkb As Object
On Error Resume Next
Set wkb = Workbooks(sFile)
If Not wkb Is Nothing Then
WkbExists = True
End If
On Error GoTo 0
End Function
Das erledigt die gewünschte Aufgabe, die Pfadnamen usw stehen alle ganz oben, die musst du natürlich anpassen.
Da auf Mobile-Excel soweit ich weiss kein VBA läuft, könntest du den Code theoretisch sogar ins Workbook_Open schreiben. Dann wird er automatisch ausgeführt, sobald du die Datei öffnest. Halte ich aber für gefährlich ... lieber einen Button oder sowas, an dem einen Click mehr scheitert es dann nicht!
Grüße,
Klaus M.vdT.