Stránka 1 z 1

Propojení MS Excell 2003  Vyřešeno

Napsal: 20 zář 2011 10:52
od Lueticky_kretek
Zdravím. Nedaří se mi elegatně vyřešit následující problém.

Budu rád za jakoukoliv pomoc.

1 Mám soubor A.xls obsahující nadefinované makro na prvních 5 listech
2 Mám soubor B.xls obsahující x listů (cca 30)

Potřeboval bych vytvořit propojení ,tak aby se do souboru A.xls na 6 .list (nový) přenesly všechny listy ze souboru B.xls se stejným pojmenováním a formátovaním, které má soubor B.xls

Našel jsem možnost Úpravy/propojení, bohužel je tato možnost zašedlá, tudíž neaktivní.Pomocí hypertextového odkazu to nefunguje a vypisovat jednotlivé propojení pro každý list mi příjde komplikované.
Pokud to samozřejmě jinak nejde, budu to muset udělat takto.

Re: Propojení MS Excell 2003

Napsal: 20 zář 2011 20:55
od Pavel1234
Ahoj
Nějak nemohu pochopit tvé pojmy
1 Mám soubor A.xls obsahující nadefinované makro na prvních 5 listech

Mám to chápat tak, že ty listy obsahují kód reagující na různé události? (Např Activate nebo Change)
Dále
Potřeboval bych vytvořit propojení ,tak aby se do souboru A.xls na 6 .list (nový) přenesly všechny listy ze souboru B.xls se stejným pojmenováním a formátovaním, které má soubor B.xls

Jak si představuješ propojení (tj - změníli se data v B tak se změní i v A) 30 listů do jednoho. To jako pokud má každý list v B 100 řádků tak 1. list B bude propojen s řádky 1-100, druhý s řaádky 101-200 atd listu 6 v A? Kam se má vložit pojmenování původního listu? Do přidaného sloupce nebo řádku nad oblastí? Nebo jméno toho listu 6 v A má být sloučením jmen všech listů z B?
Omlouvám se ale přijde mi to trochu mimo
Zkus upřesnit dotaz
Pavel

Re: Propojení MS Excell 2003

Napsal: 21 zář 2011 09:34
od Lueticky_kretek
Pro vysvětlení jsem vytvořil testovací XLS soubory s jiným počtem listů,ale pro pochopení si myslím,že dostačující.
Soubory by ve výsledku samozřejmě obsahovaly jiné údaje ... jde mi jen o to přenést listy ze souboru B do souboru A.

V souboru A.xls mám vytvořeno 5 listů.
A.xls
(13.5 KiB) Staženo 43 x


Soubor B.xls má 30 listů .
B.xls
(13.5 KiB) Staženo 43 x


Požadavek: Do souboru A.xls přenést všechny listy ze souboru B.xls 1:1 tzn. Soubor A.xls by měl po sloučení 35 listů ( 5 původních listů, 30 nových listů ze souboru B.xls) beze změny.

Výsledný soubor vy vypadal takto.
A_end.xls
(14.5 KiB) Staženo 53 x


Děkuji za radu

Re: Propojení MS Excell 2003

Napsal: 21 zář 2011 22:40
od Pavel1234
Ahoj
V přiloženém souboru je makro co snad dělá co jsi chtěl.
Pokud mi jej někdo zkritizuje, či poradí jak ošetřit chyby a mezní stavy, tak to uvítám.

Pavel

Kód: Vybrat vše

Sub Sheets_Import()
'
' Přidá listy z jiného souboru
' Upozorňuji že makro je třeba doplnit o ošetření chyb a mezních stavů

    Dim objOpen As FileDialog
    Dim strSource As String
    Dim strTarget As String
    Dim L As Long
   
    strTarget = ActiveWorkbook.Name

    Set objOpen = Application.FileDialog(msoFileDialogFilePicker)
    objOpen.AllowMultiSelect = False
    objOpen.InitialFileName = ActiveWorkbook.Path
    objOpen.Filters.Clear
    objOpen.Filters.Add "Excel", "*.xls", 1
   
    If objOpen.Show = -1 Then
        strSource = objOpen.SelectedItems(1)
    Else
        Set objOpen = Nothing
        Exit Sub
    End If
'
    Workbooks.Open strSource 'Otevře seoubor a předá mu fokus tj. pracuji v nově otevřeném souboru
    strSource = ActiveWorkbook.Name
   
    For L = 1 To Sheets.Count
        Workbooks(strSource).Sheets(L).Copy After:=Workbooks(strTarget).Sheets(Workbooks(strTarget).Sheets.Count)
    Next L
   
    Workbooks(strSource).Close
   
    Set objOpen = Nothing
End Sub

Re: Propojení MS Excell 2003

Napsal: 22 zář 2011 09:21
od Lueticky_kretek
Díky moc. Funguje správně