Hej hej Det enda som syns är menyraderna , längst upp i dokumentet (de tre standard som jag har som default) plus statusraden längst ner. Resten av dokumentet finns där men är "genomskinligt" dvs om jag klickar, klickar jag i dokumentet fast det ser ut som om jag klickar på desktopen eller det som ligger bakom. Kan du komma in i VB editorn då? Bara en tanke om det ligger några referenser eller något annat som är fel den vägen ... Önskar att det varit så "enkelt". Vi har suttit två stycken med detta problem i omgångar. Vi trodde att vi hade en lösning ett tag, men så var inte fallet. Det lustiga är att det här inte händer i 100% av fallen heller utan snarare i 95%, dvs ibland så kan man se nya dokument oavsett om man stängt Excel eller ej. Nä, låter inte bekant alls. OK. Hade nåt liknande en gång men det är kanske inte samma sak för dig. Ok. Men varför ha du visningen av filen ute i Excel? Kan du inte lägga in ett Excelobjekt lite snyggt på en form bara, så styr du själv med kod vad som händer när användaren stänger fönstret. Problemet ter sig inte vara i min kod (ang. att excel blir "osynligt") eftersom jag använder samma kod för att öppna excel alla de gånger det fungerar också. Har stegat mig igenom min kod oräkneliga gånger. Har till och med följt excelobjektet och tittat på dess egenskaper och försökt hitta det som skiljer dem åt i de olika fallen - hittar ingenting. Hmm... det låter som om det är samma sak som händer - fast jag öppnar enbart befintliga filer innifrån programmet. De som öppnas för att åskådliggöras ändras inte då de är underlag för statistik. Utan öppnas även för att se om det är något fel i orginalet eller för att det är något som saknas i filen. I extremfall är det en rad eller en cell med värden som adderas. Har provkört lite för att se om jag kunde få till det felet här, men det dyker inte upp.VB + Excel = bugg?
Jag har skrivit ett program i VB som använder Excelfiler som datakälla. Förutom det går det även att öppna excelfiler innifrån programmet och det är där som problemet uppstår.
Det som händer (efter att man stängt hela Excel och inte bara filen) är att nästa gång en fil öppnas syns enbart menyraden. Vad man än gör får jag inte fram dokumentet så att jag kan se det. Dvs det är öppet men inte synligt. Använder jag sedan detta Excel till att öppna andra filer syns inte de heller.
Någon som känner till detta problem och kanske till och med har en lösning. Just nu känns det som om jag har försökt allt. Satt fil och program till visible. Kollat deras inställningar under körning. Försökt sätta visible på alla attribut som kan vara visible...
Så snälla - HJÄLP!!!
//EmmaSv: VB + Excel = bugg?
//EmmaSv: VB + Excel = bugg?
Hade det varit att du kunde se dokumentet med att det sedan inte gick att bläddra och markera och så, så kunde det ju varit nåt med Application.ScreenUpdating. Men så var det alltså inte?
/EE *förvirrad men nyfiken*Sv: VB + Excel = bugg?
Det som förvånade mig mest var att om man stänger ner Excel (oavsett om det är krysset eller via Arkiv -> avsluta) så ligger det kvar en Excel-process i aktivitetshanteraren under processer, men inte under program. Vår teori är därför att Excel försökt stänga sig och gjort det mesta utom att tappa referensen till objektet och att det kan vara därför som det här händer...
Hoppades att det skulle kunna vara så att någon annan råkat ut för eller hört talas om problemet. Några andra teorier?
//EmmaSv: VB + Excel = bugg?
Men en annan tanke: när du anropar Excel från ditt VB-program, ser du till att stänga allt efter dig? Att det inte är nåt "kvarglömt" i den biten?
Om du stänger resterna av Excel i aktivitetshanteraren, fungerar det då?
Försvinner felet från datorn efter en omstart, eller ligger det kvar så man måste ominstallera?
/EE *fylld av frågor, ont om svar*Sv: VB + Excel = bugg?
Om det fungerar om man stänger den processen - ja det gör det, då fungerar allt som det ska igen.
Omstart av datorn eller ominstallation är ej nödvändig - däremot är omstart av mitt program nödvändig - vilket inte är så bra eftersom det sammanställer statistik till administrationen...
Problemet är att programmet normalt läser in allt det behöver veta i bakgrunden. Anledningen att vissa filer öppnas synligt är att användaren specifikt bett att få se den fil som tillhör viss information i programmet. Eftersom det är användaren som ska se den, blir det också användaren som väljer vad som ska hända med det Excel som han/hon öppnat. Dvs. klickar hon på det övre krysset kommer hon också att få starta om mitt program medan om hon stänger enbart filen - kommer mitt program att fungera som det ska - dvs nästa gång de ber att få se en fil så får de se den och inte bara menyerna. Det är inga problem för min inläsning att detta sker, eftersom VB kan hämta informationen i alla fall.
Jag vill helst inte lämna ifrån mig något som kan resultera i så pass mycket huvudbry då det finns en del som inte har tillräckliga datorkunskaper för att hantera detta fel bland användarna.
//EmmaSv: VB + Excel = bugg?
Jag hade utfört en del med worksheets och infogat typ ett icke befintligt sheet i en workbook och sparat sedan blev den instansen väldigt konstig med bara meny och tom body.
Leif PSv: VB + Excel = bugg?
Användaren kan ju få all information han/hon behöver utan att själva Excel öppnas fristående.
Annars är det bara att söka, söka och åter söka i koden. Köra rad för rad tills du ser vart det kan gå fel. Om du har On Error Resume Next så kan du få massa besvärliga fel om du inte passar upp, så det är nåt att titta på med.
Hoppas du blev något klokare av det.
/EESv: VB + Excel = bugg?
Anledningen till att jag inte visar den informationen är att det är statistik på tider som sammanställs - och om det har blivit några felmeddelanden så behöver man kolla upp vad i filen det är som har orsakat felet. Det kan ligga i olika filer också - och eftersom användarna inte vet var filerna som används ligger (dels eftersom de ligger på flera olika ställen och del för att de inte ska behöva veta det) kan man öppna dem innifrån programmet.
//EmmaSv: VB + Excel = bugg?
//EmmaSv: VB + Excel = bugg?
Nu ska jag åka hem och hinner inte titta mer på det förren i nästa vecka. Hoppas att det ordnar sig för dig så du får ro över midsommarhelgen och allt. Om det inte är din kod som orsakar felet så borde det ju vara fler som råkat ut för det kan man tycka, så någon borde också kommit på vad det kan bero på och vad man kan göra åt det.
Trevlig midsommar och lycka till.
/EE *vill egentligen inte ge upp, men dagis väntar*Sv: VB + Excel = bugg?
MyXLSOpenFile som används nedan öppnar filer i bakgrunden och ställer sålunda inte till några problem för mig.
//Emma
Kod som används för att öppna:
Private Sub mnuOpen_Click()
Dim item As MSComctlLib.ListItem
Dim i As Integer
Dim bol As Boolean
Dim minfil As Excel.Workbook
'letar upp den aktuella menyposten och öppnar den fil som är angiven där
If SSTab1.Tab = 0 Then
For i = 1 To fellista.ListItems.Count
If fellista.ListItems(i).Selected Then
Call oppnaFil(taUtSokvag(fellista.ListItems(i)))
End If
Next i
Else
If vbYes = MsgBox("Öppna " & frmVäljFil.kostnadsokvag & "?", vbYesNo) Then
If frmstatistik.jamforAr Then
bol = OkXLSopenfile(frmVäljFil.kostnadsokvag)
On Error Resume Next
Set minfil = MyXLSopenfile(frmVäljFil.kostnadsokvag, bol, frmVäljFil.password)
minfil.Application.Visible = True
Else
Call frmstatistik.felmeddelande(frmVäljFil.kostnadsokvag, "kost")
End If
End If
End If
End Sub
Public Function OkXLSopenfile(ByVal strpath As String) As Boolean
Dim x As Excel.Application
'returnerar true om filen kunde öppnas annars false
OkXLSopenfile = True
On Error Resume Next
Set x = GetObject(, "Excel.Application")
If Err.Number <> 0 Then OkXLSopenfile = False
Err.Clear
End Function
Public Function oppnaFil(ByVal strpath As String) As Excel.Workbook
Dim j As Integer
Dim tmpfile As Excel.Workbook
Dim tmp As New Timrapport
Dim bol As Boolean
'visar en msgbox - om klick på ja - öppna filen annars ingenting
If vbYes = MsgBox("Öppna " & strpath & "?", vbYesNo) Then
bol = OkXLSopenfile(strpath)
Set tmpfile = MyXLSopenfile(strpath, bol)
tmpfile.Application.Visible = True
'tmpfile.Windows.Application.Visible = True
tmpfile.RefreshAll
Dim xx As Excel.Worksheet
For Each xx In tmpfile.Worksheets
xx.Visible = xlSheetVisible
'MsgBox xx.Name & " är visible, " & xx.Visible
Next
End If
Set oppnaFil = tmpfile
End Function