Avatar billede oleelo Nybegynder
07. september 2015 - 18:12 Der er 16 kommentarer og
1 løsning

Flytte data imellem to åbne excel applikationer m. vba

Hej
Jeg har to Excel åbne på en gang og skal kopier data fra Ark1 til Ark1 imellem de to åbne regneark automatisk (vba). Bemærk at det er to forskellige "Excel begivenheder" da arket med koder er åben i et og et progran har åbnet det andet regneark i et nyt Excel.

på forhånd tak oleelo
Avatar billede supertekst Ekspert
08. september 2015 - 10:37 #1
Hej

1) Er der flere ark i filerne?
2) Hvorfra og hvortil?
3) Skal der bevares data på "modtagerarket" - eller kan ark1 erstattes af det kopierede?
4) Hvilken "hændelse" skal udføre VBA-koden?
Avatar billede oleelo Nybegynder
08. september 2015 - 13:38 #2
Hej supertekst

Ad 1) Ja 4 ark til file tempRes og 7 ark i filen SumResultater

Ad 2) Fra tempRes til filen SumResultater

Ad 3)I første omgang er det fint med hele arket (navn: temp ) som ikke eksistere i filen SumResultater.

ad 4) en knap i SumResultater på arket "start".

hilsen oleelo
Avatar billede supertekst Ekspert
08. september 2015 - 13:51 #3
Ok
Avatar billede supertekst Ekspert
08. september 2015 - 14:36 #4
Rem Anbringes under arket Start

Rem Version 1
Rem =========
Private Sub CommandButton1_Click()
Dim antalXls As Integer, vbaXLSNavn As String, f As Integer
Dim dataXLSNavn As String

Dim vbaXLS As Object, dataXLS As Object

Rem antal åbne XLS-filer
    antalXls = Workbooks.Count

Rem VBA-filens navn
    vbaXLSNavn = ActiveWorkbook.Name
   
    For f = 1 To antalXls
        If Workbooks(f).Name <> vbaXLSNavn Then
            dataXLSNavn = Workbooks(f).Name
            Set dataXLS = Workbooks(f)
            Exit For
        End If
    Next f
   
    dataXLS.Activate
    Sheets("temp").Select
    Sheets("temp").Copy Before:=Workbooks("SumResultater.xlsm").Sheets(2)
End Sub
Avatar billede supertekst Ekspert
08. september 2015 - 14:38 #5
Hvis ønskeligt - kan du få mine testfiler - @-adresse under min profil.
Avatar billede oleelo Nybegynder
08. september 2015 - 17:36 #6
Hej igen

Koden virker fint HVIS mit ark 'tempRes' er Åbnet i den samme Excel som 'SumResultater'  , hvis jeg derimod har Excel åben to gange med hver sin fil så virker koden ikke da den ikke kan se den anden Excel begivenhed  "antalXls=1"

Håber du kan hjælp mig vider, problemet er at få flere åbne Excel begivenheder til "se hinanden".

hilsen oleelo
Avatar billede supertekst Ekspert
08. september 2015 - 17:45 #7
Så godt din beskrivelse af problemet.
Hvordan kan jeg selv simulere denne situation?
Avatar billede oleelo Nybegynder
08. september 2015 - 18:59 #8
Hej
Jeg har Excel liggende på "StartLinjen" , starter Excel. Højreklikker henover Excel på "StartLinjen" og kikker på Excel.
I Tast Manager ses nu at Excel er startet to gange. Jeg har Windows 7 og Excel 2007.

Oleelo
Avatar billede supertekst Ekspert
08. september 2015 - 23:26 #9
Hej
Tak for det - jeg anvender Win 10 & office 2007 & 2013
Vender tilbage onsdag.
Avatar billede supertekst Ekspert
09. september 2015 - 14:58 #10
Hej
Har fået de ønskede omgivelser - men endnu er det ikke lykkedes.
Fortsætter..
Avatar billede supertekst Ekspert
10. september 2015 - 10:43 #11
Bemærk - her anvendes en kopiering til arket "Temp" i filen
SumResultater

Rem Version 2
Rem =========
Private Sub CommandButton1_Click()
Dim antalRæk As Integer, antalKol As Integer

Dim xlsApp As Excel.Application, xlsRes As Excel.Application

Dim antalXls As Integer, f As Integer
Const dataXLSNavn = "tempRes.xlsx"
Const vbaXLSNavn = "SumResultater.xlsm"
Dim vbaXLS As Excel.Application, dataXLS As Excel.Application
Dim sti As String
    sti = ActiveWorkbook.Path & "\"
    Set xlsApp = GetObject(sti & "tempRes.xlsx").Application
    xlsApp.Sheets("temp").Activate
   
    antalRæk = xlsApp.ActiveCell.SpecialCells(xlLastCell).Row
    antalKol = xlsApp.ActiveCell.SpecialCells(xlLastCell).Column
   
    xlsApp.Range(xlsApp.Cells(1, 1), xlsApp.Cells(antalRæk, antalKol)).Select
    xlsApp.Selection.Copy
   
Rem ---

    Set xlsRes = GetObject(sti & "sumResultater.xlsm").Application
    xlsRes.Sheets("temp").Activate
    xlsRes.ActiveSheet.Range("A1").Select
   
    ActiveSheet.Paste
    xlsApp.Application.CutCopyMode = False
End Sub
Avatar billede oleelo Nybegynder
10. september 2015 - 14:08 #12
Hej
Jeg får først kikket på det i morgen, med det ser da rigtig ud.
Så på forhånd tak
Oleelo
Avatar billede supertekst Ekspert
10. september 2015 - 14:18 #13
Hej

Ok - selv tak
Avatar billede oleelo Nybegynder
11. september 2015 - 14:57 #14
Hej
Nu har jeg testes på min egne filer og det virker helt efter hensigten,super

Tak oleelo
Avatar billede oleelo Nybegynder
11. september 2015 - 14:59 #15
Jeg prøver lige igen at Accepter dit svar
oleelo
Avatar billede oleelo Nybegynder
11. september 2015 - 15:00 #16
Og Igen
Avatar billede supertekst Ekspert
11. september 2015 - 15:19 #17
Fint & selv tak..
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