Stránka 1 z 1
Odkaz ve VBA na soubor s proměnným názvem
Napsal: 22 úno 2011 10:51
od tomasholecek
Dobrý den, prosím o pomoc se zapsáním syntaxe. Problém je takovýto: mám otevřené dva soubory, z nichž jeden se jmenuje "Souhrn.xlsm" a druhý otevřený soubor má pokaždé jiný název. A potřeboval bych vytvořit proceduru, ve které by se mi do sešitu "Souhrn.xlsm" vložil vzorec s odkazem na druhý otevřený soubor
Nějak takto
Kód: Vybrat vše
Windows("Souhrn.xlsm").Activate
Range("B674").Select
'ActiveCell.FormulaR1C1 = _
"='.......................'!R18C1&"doplnkovy text""
kde místo teček potřebuji dát odkaz na druhý otevřený sešit. (Vždy budou otevřené vždy pouze dva sešity)
Děkuji předem za pomoc
Re: Odkaz ve VBA na soubor s proměnným názvem
Napsal: 22 úno 2011 11:14
od navstevnik
Nazev toho druheho souboru ziskan jak? Z InputBoxu, ComboBoxu, odkazem na bunku s nazvem souboru?
Obecne retezec ..."='.......................'!R18C1... rozdel a vloz odkaz na nazev souboru: ..."='" & odkaz & "'!R18C1...
Vzdyt do bunky vkladas retezec, tak retezec poskladej dle potreby vcetne promennych obsahujicich prislusne casti retezce.
Re: Odkaz ve VBA na soubor s proměnným názvem
Napsal: 22 úno 2011 12:52
od tomasholecek
Název toho souboru je jeden ze dvou otevřených souborů. Problém je takový, že mám asi dvěstě souborů, které se jmenují různě. Potřebuji každý z nich otevřít, změnit co potřebuji a pak do souboru "souhrn.xlsm" dát vzorcem odkaz na tento otevřený soubor a protože se odkazuji vždy na stejné buňky (ale ve 200 rozdílných souborech), chtěl jsem to řešit makrem. A právě nevím, jak do proměnné dostat název druhého otevřeného souboru.
Re: Odkaz ve VBA na soubor s proměnným názvem
Napsal: 22 úno 2011 14:05
od navstevnik
Ted je dotaz alespon pro mne jasnejsi.
Tato procedura vrati nazev toho dalsiho (druheho, pokud je jich otevreno vice, pak posledniho) otevreneho souboru do globalni promenne (tuto promennou vloz do retezce pro vlozeni formuly do bunky):
Kód: Vybrat vše
Option Explicit
Public SecWbkName As String
Sub SecondWorkbook()
Dim Wbk As Workbook
For Each Wbk In Application.Workbooks
If Wbk.Name <> ThisWorkbook.Name Then
SecWbkName = Wbk.Name
End If
Next Wbk
Debug.Print SecWbkName
End Sub
Komentar k procedure snad vzhledem k jednoduchosti neni potreba.
PS.: to chces rucne otevirat cca 200 souboru a pak je zase ukladat a zavirat? To che resit pomoci procedury (to vlozeni nove hodnoty muze byt rucni).
Doplneno:Ted jsem zjistil, ze s tou kupou souboru jiz experimentujes -
viewtopic.php?f=35&t=60825&p=442634#p442634 , takze jmeno zrovna otevreneho druheho souboru mas v nejake promenne, tak to pouzij, zmenit obsah bunek, pridat zapis zmeny do nejakho souhrnneho souboru taktez lze doresit v procedure otevirani tech souboru.
Re: Odkaz ve VBA na soubor s proměnným názvem
Napsal: 23 úno 2011 09:46
od tomasholecek
Díky moc za pomoc. Pomohlo mi to. S tou kupou souborů v předchozím dotazu je to řešené tak, že otvírá jeden podruhém všechny soubory v adresáři:
Kód: Vybrat vše
For Each objFile In objDir.Files
If objFSO.GetExtensionName(objFile) = SExt Then
Workbooks.Open Filename:=SPath & objFSO.GetBaseName(objFile) & "." & SExt
ActiveWorkbook.RunAutoMacros Which:=xlAutoOpen
A teď řeším trošku odlišný problém, že jednak potřebuji otevřít konkrétní soubor, v něm změnit (bohužel ručně nějaké hodnoty, takže to nejde procedurou) a pak provázat se souhrnem a někdy potřebuji vytvořit soubor nový (tzn zatím neexistující) uložit a pak provázat se souhrnem. Takže kód výše se mi nepodařilo do toho zakomponovat, i když jsem to zkoušel (možná to nějak jde, ale nepřišel jsem na to :-).
Každopádně mi pomohl tvůj příspěvek. Děkuji