Excel wordt opgeslagen in de verkeerde map

Status
Niet open voor verdere reacties.

RD1968

Nieuwe gebruiker
Lid geworden
15 okt 2009
Berichten
3
Hallo,

Vraagje van een newbie.

Heb een macro gemaakt waarbij er wordt gekeken of een bepaald bestand in een bepaalde map al bestaat en zo niet, dan wordt het bestand weggeschreven.

Dit heeft altijd naar behoren gewerkt, en werkt nog steeds op het bestaande systeem.

Nu is er een nieuw systeem bijgeplaats en op dit systeem wordt het bestand standdaard opgeslagen in "mijn documenten" op de c schijf.

Iemand enig idee hoe dit kan?
 
Dat hangt een beetje af hoe die regel eruit ziet waarmee je je output maakt. Blijkbaar gebruik je een variabele die veranderd is sinds dat nieuwe systeem erbij is geplaatst.

Enjoy!
 
Het onderstaande heb ik ervan gebrouwen.

Op de D schijf is de directory Opdrachtbonnen gewoon aanwezig.

Mocht er "programmeer" technisch dingen eenvoudiger kunnen, dan hoor ik dat graag.




Code:
Sub Opslaan_Print()

Name = Range("invulblad!d7")
datum = Range("lijsten!a1")
Week = Range("invulblad!d14")
filenaam = "Opdrachtbon " & Name & " " & datum & " uitvoerweek " & Week

s = 0
c = 0
complete = True
If Name = "" Then complete = False
If Not complete Then
MsgBox ("Klantnaam is niet ingevuld")
Else
s = 1
 
 End If


If Week = "" Then complete = False
If Not complete Then
MsgBox ("Weeknummer is niet ingevuld")
Else
c = 1
 
 End If
                                            

If s = 0 And c = 0 Then complete = False

If complete = True Then Else GoTo klaar:

ChDir "D:\Opdrachtbonnen\"

Set fs = Application.FileSearch
With fs
    .LookIn = "D:\Opdrachtbonnen\"
    .Filename = "Opdrachtbon " & Name & " " & datum & " uitvoerweek " & Week & ".xls"
    If .Execute > 0 Then
        MsgBox "Er is al een betand met deze naam "
        For i = 1 To .FoundFiles.Count
            MsgBox .FoundFiles(i)
            MsgBox " Geef een andere klantnaam op: Bijv " & Name & " 1"
            Next i
        GoTo klaar:
    Else
        
    End If
End With

 Sheets("Opdrachtbon").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Sheets("Invulblad").Select
    Range("C26:K27").Select
    
ActiveWorkbook.SaveAs Filename:=filenaam
Application.Quit

klaar:

End Sub
 
Code:
Sub Opslaan_Print()
    
    Name = Range("invulblad!d7")
    datum = Range("lijsten!a1")
    week = Range("invulblad!d14")
    filenaam = "Opdrachtbon " & Name & " " & datum & " uitvoerweek " & week
    
    If Name = "" Then
        MsgBox ("Klantnaam is niet ingevuld")
    ElseIf week = "" Then
        MsgBox ("Weeknummer is niet ingevuld")
    End If
    
    If Name = "" Or week = "" Then Exit Sub
    
    ChDir "D:\Opdrachtbonnen\"
    
    Set fs = Application.FileSearch
    With fs
        .LookIn = "D:\Opdrachtbonnen\"
        .Filename = "Opdrachtbon " & Name & " " & datum & " uitvoerweek " & week & ".xls"
        If .Execute > 0 Then
            MsgBox "Er is al een bestand met deze naam "
            For i = 1 To .FoundFiles.Count
                MsgBox .FoundFiles(i)
                MsgBox " Geef een andere klantnaam op: Bijv " & Name & " 1"
            Next i
            GoTo klaar:
        End If
    End With
    
    Sheets("Opdrachtbon").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Sheets("Invulblad").Select
    Range("C26:K27").Select
    
    ActiveWorkbook.SaveAs Filename:=filenaam
    Application.Quit

End Sub
Als er een drive/netwerk bij is geplaatst kan het zijn dat D: nu E: is geworden en dat je programma daardoor niet meer goed functioneert.

Wat je code betreft heb ik die een beetje aangepast. Je zou de module moeten beginnen met Option Explicit en dan alle variabelen moeten dimensioneren. Gebruikelijk is ook om de Hongaarse variabelen notatie te hanteren: Dim strNaam as String enzo.

Enjoy!
 
Hallo Guus,

Bedankt voor je reactie.

Er is inderdaad een schijf bijgeplaatst, maar de drive letter is in windows gewoon D.

Als ik een oud formulier open en dan de macro draai, dan wordt het bestand wel op de juist plaats (D:) opgeslagen.

Bedankt voor het vereenvoudigen van de code.
Zoals gezegd, ik ben nieuw en rommel nog maar wat aan.

Wat bedoel je met :
Je zou de module moeten beginnen met Option Explicit en dan alle variabelen moeten dimensioneren. Gebruikelijk is ook om de Hongaarse variabelen notatie te hanteren: Dim strNaam as String enzo.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan