webForumDet fria alternativet

Fel vid skrivning till Excel

.NET

17 svar · 363 visningar · startad av Rödalacket

Medlem sedan feb. 20002 612 inlägg
Frågan#1

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?

Medlem sedan juni 20022 599 inlägg
#2

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?

5. Har du installerat den senaste service packen för VB på den maskin du kompilerar på (long-shot)?
Om inte: http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp5/default.aspx.

6. Har du provat att experimentera med din kod? Vad händer tex om du kör helt otypat?

Dim myXL As Object
set myXL=CreateObject("Excel.Application")
Dim myWkBk As Object
Dim mySheet As Object
' osv

och helt tar bort referenserna till Excel i ditt VB-projekt.

7. Finns det möjlighet att prova ominstallera/reparera Excel på maskinen?

8. Har du möjlighet att lägga upp hela ditt projekt här?

Medlem sedan feb. 20002 612 inlägg
#3

Ok, det var en hel del tips... :)

  1. Nej, har bara testat på en än så länge
  2. Törs inte svara på det men jag antar det.
  3. Programet går att starta och så men det smäller när jag skall skriva till Excel
  4. Har bara lagt över exe-filen.
  5. Icke
  6. Det får jag testa under natten
  7. Skulle tippa på att det är en liten chans att få det gjort
  8. Om inget av ovanstående funkar eller nått annat så lägger jag upp koden.
Medlem sedan juni 20022 599 inlägg
#4

Punkt 4 är nog ett ganska hett tips. Se alltså till att göra en riktig setup. (Fast det borde egentligen inte ge en GPF.)

5:an hjälper nog inte ditt problem men det skadar ändå aldrig att ha senaste service packen.

Medlem sedan feb. 20002 612 inlägg
#5

Har nu testat att skriva till fil över allt i koden och vid raden

Set myWkBk = myXL.Workbooks.Open(".\mapp\excelfil.xls")

så blir det stopp :(

Det andra har jag inte hunnit med än.

Medlem sedan juni 20022 599 inlägg
#6

Long-shot igen men du kunde ju prova:

Set myWkBk = myXL.Workbooks.Open(app.path & "\mapp\excelfil.xls")

Kan tänkas att Excel-objektet på NT inte ärver samma "Current Directory" som huvudapplikationen. Det borde ju knappast ge en GPF, men prova ..

Medlem sedan feb. 20002 612 inlägg
#7

Jag hade så från början men det blev samma sak :(

Medlem sedan feb. 20002 612 inlägg
#8

Kikade på *.vbp-filen i Wordpad och såg bl.a detta

Reference=*\G{00020813-0000-0000-C000-000000000046}#1.4#0#C:\Program\Microsoft Office\Office10\EXCEL.EXE#Microsoft Excel 10.0 Object Library

utan radbrytning då.

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.

Någon med någon idé?

Medlem sedan juni 20022 599 inlägg
#9

Sökvägarna i vbp-filen är till för att du ska kunna kompilera och påverkar inte det färdiga programmet. Det är alltså inget du ska ändra manuellt

Två frågor:

1. Har du provat att göra en riktig set-up till ditt program? Om inte: Gör det.
2. Vilken Office-version är det som kör på NT-maskinen?

Medlem sedan feb. 20002 612 inlägg
#10

Svar:
1. Nej, det har jag inte gjort än, skall försöka att få till en setup-fil.
2. 2000

Medlem sedan feb. 20002 612 inlägg
#11

Tillbaka till ruta A

Ok, har nu testat och gjort en set-up och kört den och gissa vad....samma fel :(

Medlem sedan juni 20022 599 inlägg
#12

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.)

Medlem sedan feb. 20002 612 inlägg
#13

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.

Medlem sedan juni 20022 599 inlägg
#14

OK. Ska testa om några dar. (Har inte Office installerat på NT:en.)

Medlem sedan okt. 20023 030 inlägg
#15

Om programmet ligger i roten på någon enhet så kan du inte använda

Set myWkBk = myXL.Workbooks.Open(app.path & "\mapp\excelfil.xls")

eftersom att då inkluderas ett \ i app.path. Men det borde inte heller generera ett såndant fel. :l

Medlem sedan feb. 20002 612 inlägg
#16

Nu har jag fått koden kompilerad på en NT-maskin och tro det eller ej, det funkar... :D

Medlem sedan juni 20022 599 inlägg
#17

Nu har jag fått koden kompilerad på en NT-maskin och tro det eller ej, det funkar...

Jag tror dig. Var det rent av en NT med Excel 2000 (och inte XP)?

Medlem sedan feb. 20002 612 inlägg
#18

Det var en NT med Excel 2000.

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)