Just nu i M3-nätverket
Gå till innehåll

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


Hazerman

Rekommendera Poster

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

 

Länk till kommentar
Dela på andra webbplatser

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)

 

Länk till kommentar
Dela på andra webbplatser

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.

 

 

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

Kolla så att strFilnamn verkligen innehåller det du vill (och givetvis att sökvägen verkligen finns...)

 

 

 

Länk till kommentar
Dela på andra webbplatser

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.. :(

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Detta fungerar:

 

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

ActiveWorkbook.PublishObjects(1).Publish (True)

 

 

 

Länk till kommentar
Dela på andra webbplatser

tyvärr..

 

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

 

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

Länk till kommentar
Dela på andra webbplatser

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.

 

 

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

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!

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...