Avatar billede gammer Nybegynder
01. oktober 2006 - 11:24 Der er 7 kommentarer og
1 løsning

Overførsel fra Excel til Word giver fejl

Jeg prøver lige igen!

Jeg har en makro, der laver et array ud fra et regneark. Dette array overføres til Word.

Makroen fungerer uden problemer første gang den køres. Men, 2. gang makroen køres kommer følgende fejl:

"Run-time error '462':
The remote server machine does not exist or is unavailable"

Fejlen opstår i denne linie af koden:
.ActiveDocument.PageSetup.TopMargin = CentimetersToPoints(2)

En yderligere "krølle" på problemet er, at fejlen kun opstår når Excel 2000 bruges. I Excel 2003 opstår problemet ikke.

Er der nogen der ved hvorfor fejlen opstår og evt. har en løsning herpå??


Makroen er gengivet i hele sin længde nedenfor

Sub TilWord2()

Dim UArray, UOverArray, UTotalerArray As Variant
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim x, y As Integer

' skriv diverse ranges til arrays
Sheets("SAMBESKATNINGSINDKOMST").Select
UArray = Range("A6:M306")
UOverArray = Range("A2:M2")
UTotalerArray = Range("A4:M4")

' Opret et midlertidigt ark og kopier arrays hertil
Application.DisplayAlerts = False
Application.ScreenUpdating = False

' Tjek om arket findes
On Error Resume Next
Set wSheet = Sheets("MIDL")
    If wSheet Is Nothing Then
        Set wSheet = Nothing
        On Error GoTo 0
    Else
        Sheets("MIDL").Delete
        Set wSheet = Nothing
        On Error GoTo 0
    End If

Sheets.Add.Name = "MIDL"
Sheets("MIDL").Select

Range("A1").Select                          '1. kolonne
ActiveCell.FormulaR1C1 = "Nr."
Range("B1").Select                          '2. kolonne
ActiveCell.FormulaR1C1 = "Selskabets navn"
Range("B2").Select
ActiveCell.FormulaR1C1 = "-"
  Range("C1").Select                          '3. kolonne
  ActiveCell.FormulaR1C1 = "Skattepligtig"
  Range("C2").Select
  ActiveCell.FormulaR1C1 = "indkomst"
  Range("D1").Select                          '4. kolonne
  ActiveCell.FormulaR1C1 = "Fremført sær-"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Skattepligtig"    ' 5
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "Fremført egne"    ' 6
      Range("G1").Select
      ActiveCell.FormulaR1C1 = "Skattepligtig"    ' 7
      Range("J1").Select
      ActiveCell.FormulaR1C1 = "Fordeling af"    ' 8
        Range("K1").Select
        ActiveCell.FormulaR1C1 = "Skattepligtig"    ' 9
        Range("L1").Select
        ActiveCell.FormulaR1C1 = "Fremført andre"  ' 10
          Range("M1").Select
          ActiveCell.FormulaR1C1 = "Sambeskatnings-"  ' 11
          Range("M2").Select
          ActiveCell.FormulaR1C1 = "indkomst"
        Range("L2").Select
        ActiveCell.FormulaR1C1 = "underskud"
        Range("K2").Select
        ActiveCell.FormulaR1C1 = "indk. herefter"
      Range("J2").Select
      ActiveCell.FormulaR1C1 = "årets indkomst"
      Range("G2").Select
      ActiveCell.FormulaR1C1 = "indk. herefter"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "underskud"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "indk. herefter"
  Range("D2").Select
  ActiveCell.FormulaR1C1 = "underskud"

Range("A3:M3") = UTotalerArray
Range("A4:M304") = UArray

UArray = Range("A1:M302")

' start Word og opret et dokument
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True
   
    Set wrdDoc = wrdApp.Documents.Add
    With wrdApp
        .ActiveDocument.PageSetup.Orientation = wdOrientLandscape
        .ActiveDocument.PageSetup.TopMargin = CentimetersToPoints(2)
        .ActiveDocument.PageSetup.BottomMargin = CentimetersToPoints(2)
        .ActiveDocument.PageSetup.LeftMargin = CentimetersToPoints(1.25)
        .ActiveDocument.PageSetup.RightMargin = CentimetersToPoints(2)
       
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(0.5), Alignment:=wdAlignTabLeft
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(6.5), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(9), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(11.5), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(14), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(16.5), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(19), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(21.5), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(24), Alignment:=wdAlignTabRight
        .Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(26.5), Alignment:=wdAlignTabRight
       
        .Selection.Font.Name = "Times New Roman"
        .Selection.Font.Size = 10
  End With
  x = 1
 
' Skriv data i array'et til Word dokumentet
    With wrdDoc
   
    Do While UArray(x, 2) <> ""
               
        For y = 1 To 13 '13 kolonner
          If y = 8 Then
          y = 10
          End If
        .Content.InsertAfter "" & UArray(x, y)
        wrdApp.Selection.MoveRight Unit:=wdCharacter, Count:=Len(UArray(x, y)) - p
        wrdApp.Selection.TypeText Text:=vbTab
        p = p - 1
        Next y
           
        .Content.InsertParagraphAfter
        x = x + 1
   
    Loop
         
    End With
   
    Set wrdDoc = Nothing
    Set wrdApp = Nothing
   
    Sheets("MIDL").Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
   
End Sub
01. oktober 2006 - 11:55 #1
Jeg vil starte med at skifte activedocument ud med wrdDoc
With wrdDoc
    .PageSetup.Orientation = wdOrientLandscape
    .PageSetup.TopMargin = CentimetersToPoints(2)
osv.

i din do while.. vil jeg skifte wrdApp.Selection ud med wrdDoc.Selection

Således sikre du, at du kommer til at arbejde på det dokument du har oprettet og ikke et andet aktivt dokument i word... hvilket kunne være årsagen til din fejl.

Alternativt kan du lige efter 
Set wrdDoc = wrdApp.Documents.Add
lave linien
wrdDoc.Activate
Avatar billede gammer Nybegynder
01. oktober 2006 - 21:41 #2
Hej flemmingdahl

Jeg har prøvet dine forslag og de virker desværre ikke.

Det alternative forslag med at tilføje linien wrdDoc.Activate ændrer ikke på noget.

Det første forslag giver fejl ved den første linie med

.Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(0.5), Alignment:=wdAlignTabLeft

.Selection-linierne kan ikke bruges sammen med objektet wrdDoc.

Så desværre. Har du andre bud?
Avatar billede gammer Nybegynder
01. oktober 2006 - 22:02 #3
Og nu til det mystiske.

Jeg har flyttet linien:

wrdApp.Visible = True

til følgende sted:

Do While UArray(x, 2) <> ""
               
        For y = 1 To 13 '13 kolonner
          If y = 8 Then
          y = 10
          End If
        .Content.InsertAfter "" & UArray(x, y)
        wrdApp.Selection.MoveRight Unit:=wdCharacter, Count:=Len(UArray(x, y)) - p
        wrdApp.Selection.TypeText Text:=vbTab
        p = p - 1
        Next y
       
        .Content.InsertParagraphAfter
        x = x + 1
   
    Loop
    wrdApp.Visible = True
    End With

Ideen med at flytte linien var at slippe for at se tallene blive overført til Word. Og det fungerer næsten. Word kommer først frem til sidst, men når jeg lukker Word ned får jeg en fejlmeddelelse om at Normal.dot anvendes af et andet program eller en anden bruger.

Det positive er dog, at jeg nu kan køre makroen uden at få den fejl som jeg har beskrevet først!!!!

Kan det forklares???
02. oktober 2006 - 16:01 #4
Jeg har et eksempel her, som du kan kigge lidt på http://www.smartoffice.dk/Tips/LibrarySource.asp?App=Excel&Lib=ExcelUsingWord
Jeg har ikke tid lige nu til at kigge din kode yderligere igennem, men måske kan du selv finde fejlen´...
Avatar billede gammer Nybegynder
02. oktober 2006 - 18:08 #5
Det er OK. Jeg prøver selv.

Jeg tror jeg vil prøve, at arbejde med et konkret dokumentnavn istedet. Her kan jeg vist også bruge lidt fra din makro.

Men fejler det hele så trøster jeg mig med, at makroen fungerer i Excel 2003, så det er kun en halv fejl!! ;o)

Hvis du kan give mig en reference til Excels Err.numbers (f.eks. en oversigt på nettet eller lignende) vil jeg give dig alle pointene!
02. oktober 2006 - 20:10 #6
Sådan en liste har jeg også liggende fra office 97, men den holder vist stadig. http://www.smartoffice.dk/Tips/LibrarySource.asp?App=Shared&Lib=ErrorCodes

Mvh Smart Office
Avatar billede gammer Nybegynder
02. oktober 2006 - 21:24 #7
Takker mange gange
02. oktober 2006 - 23:17 #8
you are welcome ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester