Avatar billede dsj1972 Mester
19. august 2009 - 10:52 Der er 12 kommentarer og
1 løsning

VBA kode til at tjekke om celle reference indeholdes i filnavn

Hejsa,

Jeg har følgende stump kode som jeg gerne ville have tilpasset med et tjek af filnavn således at der ikke kan benyttes samme nummer uanset hvad der ellers står i filnavnet.

Har følgende kode sådan her:

' TEST

Dim FileName As String
    Dim SheetName As String
    Dim CelleName As String
    SheetName = ActiveSheet.Name
    CelleName = Range("B1")
    FileName = "Flg " & CelleName & " " & SheetName
   
   
   
    ' ChDir "\\mini\xxx\pdf\test\"

    If FileName Like "\\mini\xxx\pdf\test\" & "*" & ActiveSheet.Range("B3") & "*" Then
 
 
           
            MsgBox "Fejl, Nummer findes allerede, vælg venligst nyt Nummer"
       
        Else
       
       
  ' ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=True, ActivePrinter:= _
  '    "\\media\Win2PDF:", PrToFileName:="\\mini\xxx\PDF\test\" & FileName & ".pdf", _
    '    Collate:=True
       
     
  ' ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=False, ActivePrinter:= _
  '    "\\192.168.1.24:", Collate:=True
     
      End If

og det er så denne her jeg har forsøgt mig med til at tjekke filnavn op, men kan godt være at jeg har misforstået pointen i koden.

Der er med vilje "remmet" linier under test for at undgå en masse udskrifter.

Håber i kan gennemskue hvad mit spørgsmål går ud på, og ellers bare spørg.

På forhånd tak!!

Mvh dsj
Avatar billede dsj1972 Mester
19. august 2009 - 10:54 #1
Ups.....der er en lille fejl...som dog ikk ændre noget men alligevel så skal

CelleName = RAnge("B1")
være
CelleName = Range("B3")
Avatar billede kdasummer Nybegynder
19. august 2009 - 11:49 #2
Private Function FileExist(ByVal FileName As String) As Boolean
    FileExist = (Dir(FileName) > "")
End Function

Public Sub Main()
    If FileExist("c:\fil.txt") Then
        MsgBox "Filen eksisterer!"
    Else
        MsgBox "Filen eksisterer ikke!"
    End If
End Sub
Avatar billede dsj1972 Mester
19. august 2009 - 11:54 #3
kdasummer,

kan din kode bruges ind under min kode som er oprettet som en clik kode???
Avatar billede kdasummer Nybegynder
19. august 2009 - 11:58 #4
koden kan bruges i alle vba-projekter. du skal smide funktionen FileExist udenfor din sub og indsætte koden fra public sub main() i dit script.
Avatar billede dsj1972 Mester
19. august 2009 - 12:00 #5
Desuden så skulle det meget gerne være sådan at det kun er celle referencen "B3" i det active sheet som der bliver tjekket om det indeholdes i filnavn.

eks. sheet er gemt som:
\\mini\xxx\pdf\test\ "Arknavn" & "aktiv ark celleværdi(B3)" & ".pdf"

\\mini\xxx\pdf\test\test2009-158.pdf
Avatar billede kdasummer Nybegynder
19. august 2009 - 12:12 #6
prøv dig lidt frem med det script jeg har givet dig, det gør det du skal bruge :)
Avatar billede dsj1972 Mester
19. august 2009 - 12:22 #7
Er du sikker??

Hvordan kan den kode stump skelne på filnavnet om det inde holder noget fra en celleværdi da der er jo er andre værdier som ændres i filnavnet.

Men ok, jeg forsøger mig lidt frem med det.
Avatar billede kdasummer Nybegynder
19. august 2009 - 12:29 #8
det kan det heller ikke. det skal du selv sætte ind...

If FileExist("c:\fil-" & range("b2") & ".txt") Then
  msgbox "find et andet nummer"
else
  msgbox "alt ok"
end if
Avatar billede dsj1972 Mester
19. august 2009 - 12:42 #9
Ja, med lidt prøven frem og tilbage kom jeg frem til dette her

If FileExist("\\test\" & "*" & range("b2") & "*") Then
  msgbox "find et andet nummer"
else
  msgbox "alt ok"
end if


Og det virker tilsyneladende.

Så tusind tak for hjælpen.

Point til dig :-)
Avatar billede dsj1972 Mester
19. august 2009 - 12:48 #10
Hvis nogen skulle have interesse i en kode som både gemmer gemme som pdf fil og printer ud på netværk ud fra nogle kriterier så ligger jeg her koden som virker for mig. Og kan også lige nævne at koden bruges af flere brugere.


' TEST

Dim FileName As String
    Dim SheetName As String
    Dim CelleName As String
    SheetName = ActiveSheet.Name
    CelleName = Range("B3")
    FileName = "Flg " & CelleName & " " & SheetName
   
   
   
  If FileExist("\\mini\xxx\pdf\test\" & "*" & CelleName & "*") Then
   
 
           
            MsgBox "Fejl, Nummer findes allerede, vælg venligst nyt Nummer"
       
        Else
       
       
  ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=True, ActivePrinter:= _
      "\\media\Win2PDF:", PrToFileName:="\\mini\xxx\PDF\test\" & FileName & ".pdf", _
        Collate:=True
       
     
  ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, PrintToFile:=False, ActivePrinter:= _
      "\\192.168.1.24:", Collate:=True
     
      End If
Avatar billede dsj1972 Mester
19. august 2009 - 12:49 #11
Ups og så skal der følgelig som kdasummer viser denne kode uden for den anden kode:

Private Function FileExist(ByVal FileName As String) As Boolean
    FileExist = (Dir(FileName) > "")
End Function
Avatar billede kdasummer Nybegynder
19. august 2009 - 12:54 #12
hvis du bruger office 2007 så kan du opdatere til den nyeste service pack - så får du indbygget pdf eksport og er fri for at bruge printer drivere til at gemme som pdf. bare lige til info
Avatar billede dsj1972 Mester
19. august 2009 - 13:00 #13
Ja, det ved jeg, men desværre bruger vi stadig off2003 som ikk lige havde samme muligheder, derfor måtte jeg lige lave det sådan, samt at vi prøver at lettergøre mange af processerne på denne måde.
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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