Avatar billede spoi Nybegynder
11. april 2007 - 10:46 Der er 15 kommentarer og
1 løsning

hjælpe til makro - den skal gøre det modsatte

hej jeg har en stump kode

Men den gør det modsatte af hvad der er meningen.
i stedet for at hente data skal den overføre data til de enkelte filer.

Koden er her

Sub data()


'henter data fra de forskellige pakke filer

Dim Max As Integer
Max = 5

Path = "\\sti\Versionsstyring\" 'placeringen af filerne

  For i = 4 To Max
   
    If Ark1.Cells(i, 2) <> "" Then
    Ark1.Cells(i, 5) = "='" + Path + "[" & Ark1.Cells(i, 2) & "v.xls]" + "Ark1" + "'!E7"
      Ark1.Cells(i, 6) = "='" + Path + "[" & Ark1.Cells(i, 2) & "v.xls]" + "Ark1" + "'!F9"
    End If
 
  Next i
End Sub


Den skal slå op i den fil man står på i kolonne to og hvis der findes en fil med denne betegnelse(kundenr+v) skal den smide nogle data over i filen. derer omkring 100 kundenumre i kolonne 2 og tilsvarende filer

LN
Avatar billede splokit Nybegynder
11. april 2007 - 12:02 #1
humm det er en formel du skriver med den kode... er det meningen!? eller er det værdien som skal overføres!?
Avatar billede spoi Nybegynder
11. april 2007 - 12:06 #2
Det er værdien

Ja fandt ud af den overførste en formel. Er ikke lige så stærk til det her.

Men ja det er værdien af fels celle(i,5)for de eneklte kundenumre(kolonne2) der skal overføres til den fil med kundenr+v til celle E7

Giver det mening eller er det for rodet skrevet

LN
Avatar billede splokit Nybegynder
11. april 2007 - 12:23 #3
Du har mappe med alle kunderne på. og en masse filer med kundenr + v !?
Avatar billede splokit Nybegynder
11. april 2007 - 12:26 #4
Skal den tage værdier fra kundearket over til kundenrarket.
Avatar billede spoi Nybegynder
11. april 2007 - 12:32 #5
Ja jeg har en masse kundefiler der ligger i samme mappe.

Og så har jeg et stort ark der indeholder en masse data for alle kunderne
I kolonne B4 - B.. står kundenummeret feks 2000 I kolonne c står kundenummer
I d står feks kundekonceptet

Disse skal så overføres til en masse filer med kundenummer +v dvs 2000v

LN
Avatar billede splokit Nybegynder
11. april 2007 - 12:40 #6
ok...
Det vil sige D1:D100 og E1:E100 Skal overføres ud for hvert kundenr+v i C1:C100 til den mappe som passer til de kundenr+v...

Hvor på det ark1 skal værdierne indsættes!? C? = E7 og C? = F9 eller hvordan..
Avatar billede splokit Nybegynder
11. april 2007 - 12:40 #7
sorry C = B
Avatar billede spoi Nybegynder
11. april 2007 - 12:49 #8
uhhh nu skal jeg lige tænke
Eksempel
B1:B110(eller mere - så mange rækker der nu er) til filer af navn kundenummer+v felt c3
C1:C110(eller mere - så mange rækker der nu er) til filer af navn kundenummer+v felt
c11
Den vil jeg overfører fra(og hvor knappen aktiveres). Hedder version og ligger i mappen \\sti\versionsstyring\ dvs

De enkelte filer ligger i samme mappe.

Men det samme skal gøres til nogle andre filer der ligger på mappen \\sti\
Og her er filnavnene kundenummer uden v dvs bare 2000 som eksempel.

Men en timg af gangen ;O)

LN
Avatar billede splokit Nybegynder
11. april 2007 - 13:03 #9
ok..

så fra det egne ark til flere i C3 og C11.
ud for hvert kundenr.

Ser lige på det...
Avatar billede supertekst Ekspert
11. april 2007 - 15:18 #10
Forsøg på udspil - måske kan det hjælpe lidt på vej - er lidt usikker på om det er den rigtige indgangsvinkel - ellers sig til:
Koden indlægges i Datafilen


Const DFræk1 = 3
Const Vsti = "C:\instruktioner\version\"  'tilpasses
Dim DFantalRæk
Sub data()
Dim knr
Rem find sidste række i DATAFIL
    ActiveWorkbook.Sheets(1).Activate
    DFantalRæk = ActiveCell.SpecialCells(xlLastCell).Row
   
    For ræk = DFræk1 To DFantalRæk
        knr = Cells(ræk, 2)
        If knr <> "" Then
       
Rem Undersøg om filen KUNDENR+v findes
            If findesVfil(CStr(knr) & "v") = True Then
           
Rem Hvis ja - opdater v-FILEN
                opdaterVfil CStr(knr) & "v.xls", ræk
            End If
        End If
    Next ræk
   
    MsgBox ("Opdatering af V-filer afsluttet")
End Sub
Private Function findesVfil(kid)
Dim fs, f, f1, fc, s
 
Rem Søg efter versions-fil
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(Vsti)
    Set fc = f.Files
    For Each f1 In fc
        If InStr(f1.Name, kid) = 1 Then
            findesVfil = True
            Exit Function
        End If
    Next
    findesVfil = False
End Function
Private Sub opdaterVfil(kid, ræk)
Dim xls
    Set xls = CreateObject("Excel.application")
    With xls
   
Rem Åbn V-filen
        .Workbooks.Open Vsti + kid
        .Sheets(1).Cells(4, 5) = Cells(ræk, 5)          'Fra DATAFIL overføres Kolonne E & F til v-fil
        .Sheets(1).Cells(5, 5) = Cells(ræk, 6)
        .Application.DisplayAlerts = False
        .ActiveWorkbook.Save
    End With

Rem Lukker v-fil-objektet
    xls.ActiveWorkbook.Close
    xls.Application.Quit
    Set xls = Nothing
End Sub
Avatar billede spoi Nybegynder
11. april 2007 - 15:34 #11
Hmm den åbnede første fil, men låste så helt og måtte afbryde på den hårde måde - men prøver lidt mere.

Kan det have noget at gøre med at redigeringsdatoen sættes på de enkelte kundefiler hver gang når de redigeres og det gør de jo her

Prøver lige igen

LN
Avatar billede spoi Nybegynder
11. april 2007 - 15:38 #12
Og ja de enkelte filer er skrivebeskyttet.
Det må være her den fejler
Dvs når man kører makroen og sætter data ind skal den låse op og igen låse når den lukkes ned igen.

Kan det lade sig gøre.

LN
Avatar billede spoi Nybegynder
11. april 2007 - 15:42 #13
Den kommer med fejlmeddelelsen out of stack space
Der hvor jeg sætter redigeringsdato mm

LN
Avatar billede spoi Nybegynder
12. april 2007 - 10:12 #14
det fungerer fint - men en lille detalje.
ville det være muligt at man kunne få en fejlmeddelse med de filer den ikke kunne finde hvis der er nogle.
Har fået den tilrettet også så den låser filer op og i.

Husk at lægge svar

LN
Avatar billede supertekst Ekspert
12. april 2007 - 11:27 #15
OK -

FejlMeddelelse - suppler med ELSE & EFTERFØLGENDE LINIE :

Rem Undersøg om filen KUNDENR+v findes
            If findesVfil(CStr(knr) & "v") = True Then
           
Rem Hvis ja - opdater v-FILEN
                opdaterVfil CStr(knr) & "v.xls", ræk
            ELSE
                MSGBOX("Kundenr. " + cstr(knr) + " kunne ikke findes!")
            End If
        End If
    Next ræk
Avatar billede spoi Nybegynder
13. april 2007 - 11:38 #16
som altid 1000 1000 tak

LN
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