Har gjort ett program som skall skriva till en Excel-fil och det funkar finfint hemma på både Win 2000, Office 2000 och XP, Offive XP men när jag kör det på jobbet, där det skall användas, så blir det knas.
Får upp en Dr. Watson ruta där det står
Undantag: åtkomstöverträdelse(0xc0000005), Adress: 0x00000000
Koden jag använder ser ut så här med vissa modifikationer.
På jobbet så körs NT 4 och Excel 2000.
Vad kan vara fel och finns det något man kan göra åt det?
Vad kan vara fel och finns det något man kan göra åt det?
Oerhört svårt att svara på. Felet du får (en nollpekare) kommer ju egentligen inte "inifrån" VB utan från kod utanför och sen är kanske svenskt NT4 (Workstation?) inte det vanligaste operativet nuförtiden.
Lite frågor/tips:
1. Har du mer än en NT att testa på? Uppför den sig likadant på alla?
2. Kör ni hyfsat nya service packar på NT:en?
3. Har du nån uppfattning om exakt var koden smäller (vilken rad)? Eller kraschar det direkt du startar?
Testa annars att logga till fil precis överallt inne i din kod så att du får reda på exakt var den befinner sig när det smäller.
4. Du har gjort och kört in en korrekt set-up till ditt program? Och inte bara lagt över själva exe:n?
På NT4-burken så ligger Excel.exe i
C:\Program\Microsoft Office\Office\Excel.exe
Testade att ändra C:\Program\Microsoft Office\Office10\EXCEL.EXE i referensen ovan till C:\Program\Microsoft Office\Office\Excel.exe men det blev ingen skillnad.
Gissar att {00020813-0000-0000-C000-000000000046} har nått med saken att göra men det vet jag inte vad det är för något.
Well .. Låter som en kompabilitetsgrej mellan de olika Office/OS-versionerna. Har nog ingen större koll, men tre förslag:
1. Uppgradera till Excel XP på NT-maskinen (om du vågar och det inte påverkar nåt annat).
2. Kompilera ditt projekt på en maskin som bara har Excel 2000 installerat. (Idealet vore att installera VB6 på den aktuella NT:en och sen testköra där, men det är kanske inte en option?)
3. Lägg upp koden här. Jag har en gammal NT Server på jobbet (engelsk iofs) och kan kolla när jag får tid. Frågan är bara om du har så stor nytta av det. (I worst-case så funkar det ju hos mig.)
Första alternativet kommer nog inte att ske men det andra alternativet kanske jag kan göra.
Jag gjorde en liten fil som det uppstår exakt samma sak på
Function skrivTillExcel()
Dim myXL As New Excel.Application
Dim myWkBk As Excel.Workbook
Dim tempCell As String
Dim mySheet As Excel.Worksheet
Set myWkBk = myXL.Workbooks.Open(App.Path & "\niclas\niclas.xls")
Set mySheet = myWkBk.Worksheets("Blad1")
mySheet.Range("B6") = Text1.Text
myWkBk.Close True
Set myXL = Nothing
Set myWkBk = Nothing
Text1.Text = "Klart"
End Function
Private Sub Command1_Click()
Call skrivTillExcel
End Sub
Skulle det funka hos dig då blir jag knäpp. Har testat på 3 st. olika datorer nu och det är samma fel på alla.