Just nu i M3-nätverket
Jump to content

PublishObjects-problemet med '1004'-error på '.Publish'


Hazerman

Recommended Posts

Hej.

 

Är det någon som har lösningen på detta problem.

 

Jag har letat runt som en iller efter lösningen men hittar bara andra som har haft samma problem. Många har gissat på lösningen men få (eller rättare sagt ingen som jag stött på) har lösningen.

 

Oerhört tacksam över hjälp....

 

Link to comment
Share on other sites

Of course :)

 

Jag har i varje arbetsblad en knapp (Command_Button) som hoppar till modulsubben.

 

Sub SparaTillWeb()
Dim strFilnamn As String
Dim strFlikNamn As String
Dim strPath As String

strPath = Sheets("Blad4").Range("a1") 'G:\testmapp\

strFlikNamn = ActiveCell.Worksheet.Name
strFilnamn = strPath & Mid(Time, 4, 1) & ".html"

'MsgBox strFilnamn & " --- " & Time

   ActiveWorkbook.PublishObjects.Add(xlSourceSheet, strFilnamn, _
       strFlikNamn, "", xlHtmlStatic, "", "").Publish (False)

End Sub

 

Felmeddelande = "Körfel nr '1004'.: Metoden 'Publish' i objektet 'PublishObject' misslyckades."

 

Frågan är - vad missar jag?

 

(Kör W2k/Excel2000, men samma fel blir det i XP/Excel2003)

 

Link to comment
Share on other sites

Frågan är - vad missar jag?

 

Ett vanligt fel. Du använder namn på worksheet som parameter, när det ska vara själva sheet'et i sig.

 

Du kan med gott samvete ta bort allt som har med strFlikNamn att göra.

 

Och sen ändra tredje parametern i ActiveWorkbook.PublishObjects.Add till ActiveSheet istället för strFliknamn.

 

 

 

Link to comment
Share on other sites

Hej.

 

Om du menar

 

Sub SparaTillWeb()
Dim strFilnamn As String
Dim strFlikNamn As String
Dim strPath As String

strPath = Sheets("Blad4").Range("a1") 'G:\testmapp\

strFlikNamn = ActiveCell.Worksheet.Name
strFilnamn = strPath & Mid(Time, 4, 1) & ".html"

'MsgBox strFilnamn & " --- " & Time

   ActiveWorkbook.PublishObjects.Add(xlSourceSheet, strFilnamn, _
       [color="#006400"]ActiveSheet[/color], "", xlHtmlStatic, "", "").Publish (False)

End Sub

..så blir det ingen skillnad, tyvärr.

 

Link to comment
Share on other sites

Detta gjorde jag med msgbox strFilnamn

 

 

Testa själv (klipp-o-klistra in i Excel)

 

Som jag skrev tidigare, många har frågat, inget har svarat.. :(

 

 

 

 

Link to comment
Share on other sites

Detta fungerar:

 

ActiveWorkbook.PublishObjects.Add _
SourceType:=xlSourceRange, _
Filename:=strFilnamn, _
Sheet:=ActiveSheet.Name, _
Source:="$A$1:$B$11", _
HtmlType:=xlHtmlStatic

ActiveWorkbook.PublishObjects(1).Publish (True)

 

 

 

Link to comment
Share on other sites

tyvärr..

 

Varken på W2k/Excel2000-burken eller XP/Excel2003 funkar det på...

 

[inlägget ändrat 2008-10-20 23:02:07 av Hazerman]

Link to comment
Share on other sites

Då är det nåt annat som är fel. Jag har kört exakt den koden och det fungerar (Excel 2007). Det blir en html-fil i den mappen som står i cell A1 på blad4.

 

Du anger område på raden Source:="$A$1:$B$11" ?

 

Utelämnar jag det, får jag samma fel.

 

 

 

Link to comment
Share on other sites

Dyker in i denna tråd med ett exempel som fungerar. Inte tänkt på att detta har ju jag gjort förr :)

 

Först lite egenskaper, Excel brukar minnas dessa men det skadar inte:

 

  With Application.DefaultWebOptions
       .AllowPNG = True
       .Encoding = msoEncodingUTF8
       .SaveHiddenData = False
       .RelyOnCSS = False

       .TargetBrowser = msoTargetBrowserIE6
       .OrganizeInFolder = False
   End With

 

Sedan koden som exporterar:

sokvag = Application.ActiveWorkbook.Path & "\Onsdag Webb\resultat"
   With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
       sokvag & "\eclectic_herr.htm", _
       "Eclectic H", "A:AA", xlHtmlStatic, "exceldata", "")
       .Publish (False)
       .AutoRepublish = False
   End With

Denna kod fungerar på åtminstone Excel 2002 och 2007.

 

1004 fel tyder vanligen på generalfel och oftast är det ett referensfel.

Skulle tro att koden ovan går fel om sökvägen ovan inte existerar, om bladet som det refererar till inte finns samt om adressen är galen.

Övriga fält spelar inte så stor roll. Om filen inte finns skapas den, om posten inte finns i filen läggs den till.

 

Jag har INTE läst allt som skrivits i denna tråd ska kanske sägas.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Löste det hela med:

 

Sub SparaTillWeb()
Dim strFilnamn As String
Dim strFlikNamn As String
Dim strPath As String

strPath = Sheets("Blad4").Range("a1") 'G:\testmapp\

strFlikNamn = ActiveCell.Worksheet.Name
strFilnamn = strPath & Mid(Time, 4, 1) & ".html"

'MsgBox strFilnamn & " --- " & Time

[b][color="#006400"]Range("A1").Select[/color][/b]

   ActiveWorkbook.PublishObjects.Add(xlSourceSheet, strFilnamn, _
       strFlikNamn, "", xlHtmlStatic, "", "").Publish (False)

End Sub

 

Saken är att alla de andra (inkl mitt första) inte fungerat på de 3 olika burkar (W2k, XPH, XPP,Exc2000,2003) jag provat på....

 

Förstår bara inte varför ActiveCell... hänger med..

 

Men, men, nu funkar det och Stort tack ändå för förslagen!

 

Link to comment
Share on other sites

som jag brukar säga. I kod är absoluta eller relativa referenser klart att föredra.

 

Select-satser ska enbart användas när användaren behöver meddelas/påvisas något. Med det tankesättet är cellen i ActiveCell helt slumpmässigt, det är en cell användaren valt. Kan du inte ta reda på bladnamnet på annat sätt? ja, du har väl en given referens till ett blad ovan så....

 

ActiveWorkbook - oftast lämpligare med ThisWorkbook, dvs den arbetsbok i vilken koden körs ifrån. Oftast är de samma men de kan skilja.

 

Fast det senare rådet ser jag att jag själv inte följt... Nåja, lite uppsnyggad blir din kod

Sub SparaTillWeb()
Dim strFilnamn As String
Dim strFlikNamn As String
Dim strPath As String


With Worksheets("Blad4")
   strPath = .Range("a1") 'G:\testmapp\
   strFlikNamn = .Name
   strFilnamn = strPath & Mid(Time, 4, 1) & ".html"
   ActiveWorkbook.PublishObjects.Add(xlSourceSheet, strFilnamn, _
       strFlikNamn, "", xlHtmlStatic, "", "").Publish (False)
End With
End Sub

Byt bara ut referensen i With-satsen, eller skicka en referens till funktionen, och se, du exporterar ett annat blad :)

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...