Avatar billede papacs Nybegynder
03. maj 2010 - 13:07 Der er 3 kommentarer

gemme kopi af excel fil.

Jeg vil gerne gemme en kopi af mit excel dataark hver 15 min i en ny fil.

Jeg har ingen visual basic erfaring, men har fået følgende strikket sammen:

Public dTime As Date
Sub MyMacro()
    dTime = Now + TimeValue("00:15:00")
    Application.OnTime dTime, "MyMacro"
   
    ActiveWorkbook. SaveAs Filename:="D:\whatever" &  Format(Now, "-yyyy-mmdd-hhmm") & ".xls", FileFormat:=xlNormal,  Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
   
   
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application .OnTime dTime, "MyMacro", , False
End Sub

Private Sub Workbook_Open()
    dTime = Now + TimeValue("00:00:05")
    Application.OnTime dTime, "MyMacro"
End Sub

Problemet er at det nu er kopien der er aktiv i excel.
Forstået på den måde at originalen er lukket ned og det aktive dokument i excel er den nye kopi.
Jeg ønsker at det stadig er originalen der arbejdes videre med, og at kopien slet ikke åbnes.

Hvordan kringler jeg lige den??
Avatar billede papacs Nybegynder
03. maj 2010 - 15:27 #1
har fået det til og virke :)
Avatar billede tjp Mester
04. maj 2010 - 15:04 #2
Så må du mægtigt gerne lægge et svar om hvordan du gjorde og tage pointene selv. :-)
Avatar billede papacs Nybegynder
04. maj 2010 - 15:09 #3
Function SaveTextFile(strFile As String, strData As String, Optional bOverWrite As Boolean = False) As Boolean
Dim iHandle As Integer, l As Long
    If Not bOverWrite Then
    If Len(Dir(strFile)) > 0 Then
    SaveTextFile = False
    Exit Function
    End If
    End If
    iHandle = FreeFile
    l = Len(strData)
    Open strFile For Binary Access Write As #iHandle Len = l
    Put #iHandle, , strData
    Close #iHandle
    SaveTextFile = True
End Function
Function MakeString(r As Range, Optional strDelimiter As String = vbNullString) As String
Dim vArray As Variant, i As Long, j As Long, strTemp As String
If r.Count = 1 Then MakeString = r.Value: Exit Function
vArray = r.Value
For i = 1 To UBound(vArray, 1)
For j = 1 To UBound(vArray, 2)
strTemp = strTemp & vArray(i, j) & strDelimiter
Next j
strTemp = strTemp & vbCrLf
Next i
strTemp = Left(strTemp, Len(strTemp) - 2)
MakeString = strTemp

End Function


Sub MyMacro()
    dtime = Now + TimeValue("00:02:00")
    Application.OnTime dtime, "MyMacro"
   
Dim strMyString As String, strMyFile As String, bResult As Boolean
strMyString = MakeString(Range("A1:A3"))
strMyFile = "c:\test\sted" & Format(Now, "-yyyy-mmdd-hhmm") & ".txt"
bResult = SaveTextFile(strMyFile, strMyString, True)
strMyString = MakeString(Range("B1:B3"))
strMyFile = "c:\test\vaerdi" & Format(Now, "-yyyy-mmdd-hhmm") & ".txt"
bResult = SaveTextFile(strMyFile, strMyString, True)
   
End Sub

Som den vakse læser kan se gemme jeg ikke i en excel fil men bare hver sølje i en tekstfil, same same :-)

Point -tja synes det er forkert og give sig selv så de må gå tabt, medmindre en kommer med en flot løsning så får han dem ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester