Avatar billede spoi Nybegynder
13. november 2006 - 08:18 Der er 8 kommentarer og
1 løsning

sammenkædning af data fra to filer

Når jege med makro har kopieret fra en fil over i en anden har jeg indtil nu brugt workbook.open til den til jeg kopierer fra.

Har nu hørt at man ikke behøver dette men bare kana sammenkæde data. At man ikke behøver at åbne filen for at kopiere.

Er dette korrekt og havder fordelen og ulemperne herved.

Og ja syntaksen herfor?

Det skal bla akriveres på en knap fra den fil der skal kopieres til.

giver gerne et eksempel for en kode som den ser ud nu. Så der bare skal rettes i denne.

LN
Avatar billede x-lars Novice
13. november 2006 - 09:27 #1
Avatar billede spoi Nybegynder
13. november 2006 - 09:52 #2
Ja jeg så det godt men kunne ikke helt gennemskue det og få det til at virke.
Prøver igen

LN
Avatar billede spoi Nybegynder
13. november 2006 - 10:02 #3
Der skulle være noget med at man bare skulle kunne skrive

Ark1!Cells(1.1) = H:\pakkeinstruktioner\pakkemønster\d2.xls[ark2] og så hvilken celle der skal over.

Syntaksen har jeg slet ikke styr på og det var hvad jeg lige nåede at se med en anden fil.

LN
Avatar billede spoi Nybegynder
13. november 2006 - 11:41 #4
Hmm får det til at virke nu.

Men får det kun til at virke hvis navnet på filen er på præcis 3 tegn.

I min sitaution kan det være alt fra 3 til 25 tegn.
Hvordan ændrer jeg koden så den tager præcis det mellem \ og xls

LN

LN
Avatar billede x-lars Novice
13. november 2006 - 12:54 #5
Omdøb 200.xls i det ekspempel der kommer fra henvisningsspørgsmålet. til f.eks. 50000.xls

I filen "Hovedark.xls": Højreklik på ark1's faneblad, vælg "vis programkode" og erstat det, der står med nedenstående:

Private Sub CommandButton1_Click()
Dim Sti_Fil As String, Ark_Adr As String
Dim Sti As String, Fil As String, Ark As String, Adr As String
Dim lTest As Long, lang As Integer
Dim rng As Range
Range("C1:C9").Select
Set rng = Selection
On Error Resume Next
For Each c In rng
    If IsEmpty(c.Offset(0, -1)) Then GoTo igen
    Sti_Fil = c.Offset(0, -2)
    Ark_Adr = c.Offset(0, -1)
    lang = Len(Sti_Fil)
    lTest = InStrRev(Sti_Fil, "\")
    Sti = Left(Sti_Fil, lTest)
    Fil = Mid(Sti_Fil, lTest + 2, (lang - lTest) - 2)
    lTest = InStrRev(Ark_Adr, "!")
    Ark = Left(Ark_Adr, lTest - 1)
    Adr = Mid(Ark_Adr, lTest + 1)
    c.Value = hentceller(Sti, Fil, Ark, Adr)
igen:
Next
End Sub
Range("E5").select

Luk boksen (ALT + F4)

I regnearkets A1, skal der stå ="H:\pakkeinstruktioner\pakkemønster\["&$E$5&".xls]". Kopier nedad.

Nu vil den tage højde for, at længden af filnavnet kan variere.
Avatar billede x-lars Novice
13. november 2006 - 12:57 #6
Ups, sidste linie i koden: "Range("E5").select" skal lige flyttes op før "End sub"
Avatar billede spoi Nybegynder
14. november 2006 - 12:09 #7
Ok tak

Fandt dog også en anden løsning al la

Private Sub CommandButton1_Click()


'henter data fra de forskellige pakke filer

Dim Max As Integer
Max = 5000

Path = "H:\Pakkeinstruktioner\Pakkemønster\" 'placeringen af filerne


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

Her skal jeg som sådan bare have filnavnene stående i kolonnen i det placeringen af de pågældende filer altid er de samme.
Mangler dog at der på en eller anden måde tages højde for at filen ikke eksisterer - er det noget du kan hjælpe med at flette ind i ovenstående.

Dvs eksisterer filen ikke skal der i Ark1.Cells(i, 5) og Ark1.Cells(i, 6) bare være tomme felter.

LN
Avatar billede spoi Nybegynder
10. oktober 2007 - 06:41 #8
det hele virker bare - med lidt tilrettelse
Point x - lars
Hvis du ikke ser dette sene svar så tager jeg selv pointene og opretter så et nyt spm til dig kun med pointgivning som mål.

LN
Avatar billede x-lars Novice
10. oktober 2007 - 08:22 #9
Kommer hér! Godt, at du fik det til at virke! ;-D
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