Jag skulle behöva öppna en workbook, hämta ett värde och stänga den igen vid öppnandet av en annan: Testade din kod och det funkar för mig Niklas, Jäkla mystiskt. Nästan ingenting jag gjorde fungerade. Excel var liksom låst. Niklas och alla andra, Undvik att använda ActiveWorkbook. Du får ju en referens till den öppnade arbetsboken från open metoden. Rekomenderar er att använda den. Slipper strul om det skulle vara så att en annan arbetsbok är aktiv. Desutom kapslar det koden. Duktiga programmerare undviker globala variabler. Andreas, Nu har jag upptäckt ett problem.<br> Andreas, Jag har kollat igenom detta nu, och det verkar var en bugg i 97:an. (Har inte kollat på internet) Niklas,Öppna och använda workbooks via VBA
Workbook_Open()
dim wb as workbook
set wb = workbooks.open("Bla.xls")
i = wb.Worksheets(1).range("Tal")
wb.close
end sub
Detta funkar inte när excel kör Workbook_Open. (Det verkar vara fler grejer som inte funkar). Finns det nåt lätt sätt att komma runt detta?
/Niklas JanssonSv: Öppna och använda workbooks via VBA
Private Sub Workbook_Open()
Dim wb As Workbook
Dim i As Long
Set wb = Workbooks.Open("Bla.xls")
i = wb.Worksheets(1).Range("Tal")
wb.Close
ThisWorkbook.Sheets(1).Range("A1") = i
End Sub
Om du har koden i en vanlig modul händer ingenting
Koden måste ligga i modulen ThisWorkbook där den för övrigt är
fördefinerad
/ThommySv: Öppna och använda workbooks via VBA
Följande borde fungera:
<code>
Private Sub Workbook_Open()
Dim iVarde As Integer
Application.ScreenUpdating = False
Workbooks.Open ThisWorkbook.Path & "\Diverse.xls"
iVarde = ActiveWorkbook.Worksheets(1).Range("A1")
ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox iVarde
End Sub
</code>
Eller?
Mvh
XL-DennisSv: Öppna och använda workbooks via VBA
Jag flyttade runt lite funktioner, så nu funkar det, men tack för hjälpen i alla fall.
/Niklas JanssonSv: Öppna och använda workbooks via VBA
XL har en tendens att "låsa sig" när vi arbetar med VBA och koden hänger sig ofta.
Misstänker att det har att göra med XL minneshantering.
Dock är det problemet i stort sett borta med version 2002 / XP.
Lösning. Starta om XL :-)
Bra att du fick till det till sist!
Mvh
XL-DennisSv: Öppna och använda workbooks via VBA
Sv: Öppna och använda workbooks via VBA
>Duktiga programmerare undviker globala variabler.
1. Duktiga programmerare skriver inte operativ kod i Workbook.Open-händelsen utan anropar subprocedurer istället ;-)
2. Generellt är det att rekommendera att deklarera procedur-och modul-variabler för alla objekt så även i XL.
Att referera till ActiveWorkbook är dock ett vedertaget sätt inom XL-världen.
Mvh
XL-DennisSv: Öppna och använda workbooks via VBA
<br>
Jag har gjort ett makro som öppnar två workbooks. I ena av dessa öppnar jag ytterligare en Workbook (i Workbook_Open) som jag hämtar värden ifrån.<br>
<br>
Problemet är att den inte öppnar boken, utan använder sig själv!<br>
<br>
Anropande kod:<br>
<code>
Public Sub Main()
Dim wbOld As Workbook, wbNew As Workbook
Application.FindFile
Set wbOld = Workbooks(Workbooks.Count)
Application.FindFile
Set wbNew = Workbooks(Workbooks.Count)
KopieraVärden wbOld, wbNew
End Sub
</code>
<br>Kod som anropas i samband med Workbook_Open för wbNew = ... :
<br>
<code>
Set wbPeriod = Workbooks.Open(ThisWorkbook.Path & "\Period.xls")
With wbPeriod.Worksheets("Period")
...
</code>
Det som är problemet är alltså att Workbooks.Open inte öppnar någon ny fil. (filen finns, men kommer senare ligga på ett annat ställe, så strunta i den)
<br><br>
Vad kan vara problemet?
<br><br>
/Niklas JanssonSv: Öppna och använda workbooks via VBA
Självklart har du rätt i det och jag tar åt mig det du skriver :-)
Mvh
XL-DennisSv: Öppna och använda workbooks via VBA
1. Du öppnar en workbook via ett makro
2. I Workbook_Open öppnar du en annan workbook.
När 2:an skall utföras händer ingenting. Som säkerhetsåtgärd har jag då lagt in en grej som stänger workbooken:
3. i Workbook_Open står det ThisWorkbook.Close
Detta fungerar inte heller. Observera att det bara är när jag öppnar filen från ett makro. Konstigt...
(Det är inget problem för mig eller så, men det kan nog vara det för någon annan så jag berättar vad jag upptäckt.)
/Niklas JanssonSv: Öppna och använda workbooks via VBA
Vilken version av XL 97 använder du?
- originalet
- SR-1
- SR-2
Mvh
Dennis