När jag försöker använda en VBA-applikation på en dator jag inte gjort programmet på uppstår ett märkligt problem. Beror på att någon av dina referenser inte är 100% binärt kompatibla. Detta kan bero på att du t.ex har olika versioner av ado, windows common controlls eller vb activex dll/exe. Problemet är att de båda datorerna refererar till samma filer. Om någon endaste referens är felaktig så kan man få såna fel. Är det något som måste vara registrerat som du installerat på din utvecklingsdator men bara har filerna till i användardatorn? Kan vara något sådant med. I så fall så reagerar inte VBA på att referensen är felaktig förren den anropas (rätta mig om jag har fel, någon). Tack för tipset! Felet låter ändå som att det är ett referensfel, och det är alltså troligtvis inte i den referensen som man tror skall vara fel, utan om en enda referens är felaktig så kan det uppstå fel på helt andra ställen på detta vis. Jag har just kollat. Alla heter samma, har samma sökväg, samma versioner, ingen är broken... Den enda skillnaden är att sökvägen till OLE Automation är Jag tror jag har kommit på ett sätt, men jag har inte haft möjlighet att testa det än (jag kommer inte åt någon annan dator...). Ja, kompileringen är bra att köra. Som jag ser det så är det bästa sättet att hitta många av slarvfelen man lätt kan göra annars. ÄNTLIGEN!!! Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Det är nämligen så att alla funktioner, objekt, subrutiner osv. fungerar UTOM de inbyggda (Len(), Left(), osv.).
Som förklaring ger VB att "Sub or Function not found in Reference or Project" eller något liknande.
Hela innebörden är alltså att mitt program inte får åtkomst till de standardobjekt som finns i den ena av de två referenserna som inte kan tas bort eller ändras.
VÄLDIGT tacksam för SvarSv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Testa med att kryssa bort de referenser såm går att kryssa bort. Välj ok. Gå in i referens dialogen och lägg till dem igen. Bör nu fungera.Sv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Referensernas filnamn är:
V:\office\32us97.007\msapps\vba\vb332.dll
V: är en nätverksdisk. Det här är helt SJUKT!!Sv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Testa denna kod:
Sub KontrolleraReferenser()
Dim i As Integer
On Error Resume Next
For i = 1 To ThisWorkbook.VBProject.References.Count
Debug.Print ThisWorkbook.VBProject.References.Item(i).Name, _
ThisWorkbook.VBProject.References.Item(i).FullPath, _
ThisWorkbook.VBProject.References.Item(i).IsBroken
Next i
End Sub
Den söker igenom samtliga markerade referenser och skriver dem i direktfönstret i formen: namn, sökväg, trasig(true/false).
Hoppas det var till någon hjälp.
/EESv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Det fanns även en versionsegenskap som är praktisk (major/minor).
Jag funderar ändå på om detta verkligen stämmer. De ENDA funktionerna osv. som inte fungerar är de som är med i standarden.
Enligt hjälpen så finns standarden i de referenser som inte går att välja bort - Visual Basic For Applications och Microsoft Excel 8.0 Object Library.
Det har ingenting med Excel att göra - alla de objekten funkar fint. Det måste helt enkelt vara VBA. Men denna är placerad på V: - en nätverksdisk som alla datorer har tillgång till och Excel är också kopplad till just den filen. Jag har väldigt svårt att tänka mig att samma fil har olika versioner...Sv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Fick du False (IsBroken=False) på alla referenserna i ditt projekt på användardatorn?
Skiljer det något i konfigurationen av datorerna emellan? Alltså, vart Office ligger, vart någon Add-In ligger o s v.Sv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
C:\WINDOWS\SYSTEM\stdole2.tlb
i användardatorn och
c:\windows\SYSTEM\StdOle2.Tlb
i Utvecklingsdatorn.
Det värsta av allt är att jag vet att det går att lösa... Jag sommarjobbar nämligen, och det jag gör är bland annat att uppdatera sådant jag programmerade förra året. Då var det samma problem, men jag löste det!
SNÄLLA NÅGON HJÄLP MIG!!!
Jag ska testa med att göra ett add-in av det. (Fast jag vet att det inte fungerade förra året)Sv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Om man kompilerar hela skiten, så löstes vissa problem jag just fick på utvecklingsdatorn. Jag har vad jag kommer ihåg inte kompilerat programpaketet en enda gång när jag har försökt köra det på annan dator.
Det finns två sätt. Antingen kompilera på utvecklingsdatorn eller på användardatorn. Det skulle vara käckt om någon som är bra på VBA skulle kunna berätta om det finns anledning till att detta skulle fungera, annars är det lika bra jag fortsätter leta. Om det fungerar (jag skriver in om det gör det) så hoppas jag att detta hjälpt någon iallafall.Sv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Andra detaljer som ställt till det för mig någon gång är att man glömmer det där lilla Option Explicit överst på alla kodsidor. Att inte deklarera är ju inte så bra, som vi alla vet. Att komma ihåg att deklarera alla variabler kan vara svårt ibland utan den "hjälpen".
Skriv gärna igen när du får ordning på det. Är ju nyfiken på vad det är som är boven i dramat.
/EE *nyfiken*Sv: Flytta VBA-applikationer (för Excel) mellan två datorer funkar ej.
Jag har löst det. Inte en särskilt elegant lösning kanske, men ändå.
Jag refererar explicit till VBA så fort jag anropar en VBA-funktion -
VBA.Left() osv.
Jag har alltså ännu inte kommit på varför, men jag har en lösning :->
Om någon skulle komma på ett vettigare sätt så är jag tacksam för detta är verkligen inte vackert!