Okej, jag har postat om detta problem tidigare men det är liksom inte nån som verkar ha en hint om detta. Problemet är att jag försöker få en .asp sida att konvertera ett .xls dokument till .html. Men det bara strular och jag har nog försökt komma tillrätta med problemet i 2 månader nu! Att konvertera .doc till .html med samma princip fungerar perfekt, men för att få mitt intranät till att bli lite mer komplett vill jag gärna att man kan konvertera excel också. SKicka med den väsentliga koden: Ditt fel verkar bero på att användaren GUEST inte får skriva till eller över en annan fil. Se till att i filhanteraren markera denna fil och ge usern guest/everyone den fulla rättigheter på filen. Jo, jag får tyvärr säga att det hjälper inte. Just parametern om att Excel får skriva över befintlig vet jag inte hur jag ska komma åt men allt annat har jag provat. Det som är märkligt är att min Word konverterare använder samma mapp men den har aldrig krånglat på detta viset! Alla uppgifter i koden stämmer ju överens med vad Microsoft har skrivit i MSDN Library. Jag har även gjort ett makro i Excel och den ger mig samma kod som den jag har angivit ovan. Just nu kör jag dock på Personal Web Server och inte IIS på min testdator med NT4 om det kan spela någon roll. Testa att köra samma program i VB ! Fungerar det i VB så handlar det om rättigheter, annars är det koden eller din konverterare som strular. Har du kollat så du inte har någon excel-applikation och kör i bakgrunden.. Ja, jag lade över allt på den riktiga servern nu. Första gången gick det bra sa den. Andra gången blev det fel igen och mycket riktigt ligger Excel kvar i bakgrunden. Provade med en annan fil men då blir det ändå fel, nu blir det nått skrivdelningsfel så att man måste starta om datorn varenda gång man haft fel. Men även när jag startat om datorn kan jag inte konvertera de filer jag försökt med innan utan direkt blir det fel och en ny Excel läggs i bakgunden för varje försök och man kan inte öppna filerna igen!! Det som är märkligt är att felmeddelandet hänvisar till en fil som inte finns: kan man inte bara söka på den Jo, jag har hittat filen FALSE.xls. Den lägger sig varje gång jag försöker konvertera i NT:s Profile katalog. Men den filen har inget med de filer jag väljar att göra den bara skapas helt utan anledning! Då skapar säkert Excel en tempfil i någon katalog - därför måste du även se till att inet_user har skrivrättigheter där :-) objExcel.ActiveWorkBook.Close Tänk på att excel är ett envändars verktyg som om file FALSE.xls skapas av någon excel-applikation, behöver inte vara din egen, och ligger kvar som en process kan du får problem när du försöker köra dina filer!!! Jag har gjort det nu. Det är så här att jag får inte upp något felmeddelande längre utan nu är "konvertering genomförd" men det är den inte! Det enda som händer är att filen FALSE.xls skapas i profiles mappen och ingen konvertering av den urpspungliga filen har gjorts! Förstår inte riktigt varför filen FALSE.xls skapas den har inget med något att göra. Var har du fått följande kod ifrån? Tack så väldigt mycket, det fungerar nu! Dock med et förbehåll, första gången man konverterar fungerar allt perfekt, andra gången man försöker konvertera samma fil blir det ett skrivdelningsfel och man får starta om datorn. Finns det någon parameter man kan lägga till för att Excel ska kunna skriva över filer? För att ta reda på konstanternas värde kan du skapa ett makro i Excel typ:Pelle, hjälp en stackars sate!
Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = FALSE
objExcel.WorkBooks.Open(strExcelDoc) 'path, filename and extension
'check errors
If Err.Number <> 0 Then
ExcelToHTML = Err.Description
Else
objExcel.ActiveWorkBook.SaveAs _
Filename = strHTMLDoc ,_
FileFormat = xlHTML ,_
Password = "" ,_
WriteResPassword = "" ,_
ReadOnlyRecommended = False ,_
CreateBackup = False ,_
AccessMod = xlShared ,_
ConflictResolution = xlUserResolution ,_
AddToMru = False ,_
TextCodePage = False ,_
TextVisualLayout = False
Denna kod ger felmeddelandet:
Åtgärd misslyckades. FALSE.xls är skrivskyddad.
Jag har inga fel i sökvägar och strängar och såna saker för det har jag kontrollerat nu i 2 månader. Använder Office2000. Porgrammet startar i bakgrunden men sedan blir något fel.
Jag skulle bli oerhört tacksam om det finns någon lösning på detta problem.
Daniel GSv: Pelle, hjälp en stackars sate!
Du skulle även kunna skapa en underkatalog där alla har fulla rättigheter som du använder. Tänk på att när du surfar till sidan så är du anonym och därför måste just guest få dessa rättigheter.
Se även till att Excel tillåts göra en overwrite av befintlig fil, det borde finnas någon parameter för det också.
Lycka till
/PelleSv: Pelle, hjälp en stackars sate!
Sv: Pelle, hjälp en stackars sate!
/PelleSv: Pelle, hjälp en stackars sate!
Jag har gjort några komponenter som läser/skriver till ett excel-blad, om man inte stänger ner sitt excel-object ordentligt så ligger det kvar en excel-applikation i bakgrunden och kör, om den råkar köra samma fil som du vill skriva till så får du inte det, du får läsa från den men inte skriva till den, alltså endast en användare(process) av excel får vara igång samtidigt...
Kolla i din task-manager (finns det en sådan till win98) om du har någon excel.process igång, om du är osäker starta om din dator och testa att köra din kod det första du gör, fungerar den första gången men sedan inte mer, har du hittat felet.
- MagnusSv: Pelle, hjälp en stackars sate!
Detta är koden för att Excel ska sluta köras:
objExcel.ActiveWorkBook.Close
objExcel.Quit
Set objExcel = Nothing
Borde väl inte vara nått problem där, tycker jag?Sv: Pelle, hjälp en stackars sate!
Åtgärd misslyckades. FALSE.xls är skrivskyddad
Jag har ingen fil som heter FALSE.xls!!Sv: Pelle, hjälp en stackars sate!
och om man hittar den kan man ta bort skriv skyddet
eller?????
/SimonSv: Pelle, hjälp en stackars sate!
Sv: Pelle, hjälp en stackars sate!
(ex windows\temp)Sv: Pelle, hjälp en stackars sate!
objExcel.Quit
Set objExcel = Nothing
Kommer aldrig att köras om du får något fel... det betyder om du får något fel i din kod och programets avbruts så körs inte de kommandona och du måste manuellt avsluta processorna (klart jobbigt)
Det borde dock gå att lösa med on error kommandot...
- magnusSv: Pelle, hjälp en stackars sate!
- magnusSv: Pelle, hjälp en stackars sate!
Så här ser hela koden ut:
strExcelDoc = ""& strMyFolder &"\dokument\"&Request.QueryString("Path")&""
strHTMLDoc = strExcelDoc
strHTMLDoc = Replace(strHTMLDoc,".xls",".html",1)
Function ExcelToHTML(strExcelDoc, strHTMLDoc)
On Error Resume Next
Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = FALSE
objExcel.WorkBooks.Open(strExcelDoc)
'check errors
If Err.Number <> 0 Then
ExcelToHTML = Err.Description
Else
objExcel.ActiveWorkBook.SaveAs _
Filename = "& strHTMLDoc &" ,_
FileFormat = xlHTML ,_
Password = "" ,_
WriteResPassword = "" ,_
ReadOnlyRecommended = False ,_
CreateBackup = False ,_
AccessMod = ExclusiveAccess ,_
ConflictResolution = xlOtherSessionChanges ,_
AddToMru = False ,_
TextCodePage = False ,_
TextVisualLayout = False
'check errors (this should be another routine)
If Err.Number <> 0 Then
Response.Write Err.Description & "<br>"
ExcelToHTML = Err.Description
Else
ExcelToHTML = "Konvertering genomförd"
'Close/Kill
objExcel.ActiveWorkBook.Close
objExcel.Quit
Set objExcel = Nothing
'check errors (this should be another routine)
If Err.Number <> 0 Then
ExcelToHTML = Err.Description
Else
ExcelToHTML = "Konvertering genomförd"
End If 'closing/killing Word Object Error Handling
End If 'creating active doc and converting Error Handling
End If 'opening Word Object Error Handling
End FunctionSv: Pelle, hjälp en stackars sate!
objExcel.ActiveWorkBook.SaveAs _
Filename = "& strHTMLDoc &" ,_
FileFormat = xlHTML ,_
Password = "" ,_
WriteResPassword = "" ,_
ReadOnlyRecommended = False ,_
CreateBackup = False ,_
AccessMod = ExclusiveAccess ,_
ConflictResolution = xlOtherSessionChanges ,_
AddToMru = False ,_
TextCodePage = False ,_
TextVisualLayout = False
Testa att byta ut den mot:
objExcel.ActiveWorkBook.SaveAs strHTMLDoc, 44
(44 är värdet på konstanten xlHTML)Sv: Pelle, hjälp en stackars sate!
Annars den gamla koden har jag plockat ihop från MSDN om både FileFormat och SaveAs Method, men även om man skapar ett makro i Excel och kollar VB koden får man ut den kod jag hade från början.
Var kan man få reda på konstantvärdena?Sv: Pelle, hjälp en stackars sate!
Cells(1, 1).Value = xlHtml
Alla filformatskonstanterna hittar du på:
http://msdn.microsoft.com/library/officedev/off2000/xlproFileFormat.htm
För att Excel ska skriva över filer lägger du till nedanstående rad innan du sparar (SaveAs):
objExcel.DisplayAlerts = False