2016-03-21 32 views
0

Yayıncılarımız için sayfayı biçimlendirmek üzere yayınladığımız bir makalesüz. Bu makroyu kullanan birkaç belge var. Daha küçük belgeler için makro hatasız çalışır, daha büyük belgeler için bu iş parçacığının konu satırında hata alırız.Word makro hatası - Çalışma Zamanı Hatası 4608, Uzakta ara değer

Küçük belgesi - < = 256KB

Büyük belgesi - Ben kelimenin bunları açık ve elle bir sorun olmadan ayarlarını yapabilirsiniz hata var belgeler için> = 500KB

. Başaramadım belgeyi varsa ve gerekirse bunu sağlayacak, VS 2012.

Kelime 2010:

Burada makro

Function pagestuffB() As String 
' 
' Format for Publisher 
' 
' 
Dim rv As String 
rv = "" 
On Error GoTo ErrorHndlr: 
    With Application 
     .Options.Pagination = False 
     .ScreenUpdating = False 
     With .ActiveDocument.PageSetup 
      .PaperSize = wdPaperLetter 
'   .PageWidth = InchesToPoints(8.5) 
'   .PageHeight = InchesToPoints(11) 
      .Orientation = wdOrientPortrait 
      .MirrorMargins = True 'ERROR HERE 
      .TopMargin = InchesToPoints(1.34) 
      .HeaderDistance = InchesToPoints(0.98) 
      .BottomMargin = InchesToPoints(1) 
      .FooterDistance = InchesToPoints(0.8) 
      .LeftMargin = InchesToPoints(1.61) 
      .RightMargin = InchesToPoints(1.4) 
      .Gutter = InchesToPoints(0) 
      .SectionStart = wdSectionContinuous 
      .OddAndEvenPagesHeaderFooter = True 
      .DifferentFirstPageHeaderFooter = True 
      .LineNumbering.Active = False 

      .FirstPageTray = wdPrinterDefaultBin 
      .OtherPagesTray = wdPrinterDefaultBin 
      .VerticalAlignment = wdAlignVerticalTop 
      .SuppressEndnotes = False 
      .TwoPagesOnOne = False 
      .BookFoldPrinting = False 
      .BookFoldRevPrinting = False 
      .BookFoldPrintingSheets = 1 
      .GutterPos = wdGutterPosLeft 
     End With 
    End With 
    pagestuffB = rv 
Exit Function 

ErrorHndlr: 
    If rv = "" Then 
     rv = "Macro error " & Err.Number 
     Select Case Err.Number 
      Case Else 
     End Select 
    End If 

    Resume Next 
End Function 

Sürüm bilgisi ikinci versiyonu.

DÜZENLEME: belgelerdir here

Bu iki belgeleri, en küçük iki biçimlendirmek için 0,5 saat sürdü .... aslında ishal makro, son sürümü, ancak, yukarıdaki bağlantıda.

Function pagestuffB() As String 
' 
' Format for Publisher 
' 
' 
Dim rv As String 
rv = "" 
On Error GoTo ErrorHndlr: 
    With Application 
     .Options.Pagination = False 
     .ScreenUpdating = False 
     .WindowState = wdWindowStateMinimize 
    End With 
    Dim oSec As Section 
    For Each oSec In Selection.Sections 
     With oSec.PageSetup 
      .Orientation = wdOrientPortrait 'moved per macropod 
      .PaperSize = wdPaperLetter 
      .MirrorMargins = True 
      .TopMargin = InchesToPoints(1.34) 
      .HeaderDistance = InchesToPoints(0.98) 
      .BottomMargin = InchesToPoints(1) 
      .FooterDistance = InchesToPoints(0.8) 
      .LeftMargin = InchesToPoints(1.61) 
      .RightMargin = InchesToPoints(1.4) 
      .Gutter = InchesToPoints(0) 
      .SectionStart = wdSectionContinuous 
      .OddAndEvenPagesHeaderFooter = True 
      .DifferentFirstPageHeaderFooter = True 

      .LineNumbering.Active = False 
      .FirstPageTray = wdPrinterDefaultBin 
      .OtherPagesTray = wdPrinterDefaultBin 
      .VerticalAlignment = wdAlignVerticalTop 
      .SuppressEndnotes = False 
      .TwoPagesOnOne = False 
      .BookFoldPrinting = False 
      .BookFoldRevPrinting = False 
      .BookFoldPrintingSheets = 1 
      .GutterPos = wdGutterPosLeft 
     End With 
    Next oSec 

    pagestuffB = rv 
Exit Function 

ErrorHndlr: 
    If rv = "" Then 
     rv = "Macro error " & Err.Number 
     Select Case Err.Number 
      Case Else 
     End Select 
    End If 

    Resume Next 
End Function 
+0

Sadece bir tahminde bulunun - bunu bir İşlev yerine bir Sub'de yapmayı deneyin. – xidgel

+0

Orijinal olarak, Açık hata öğelerinin hiçbiri olmadan yapıldı. Bu hatayı aşağılamak için eklendi. İşlev böylece Interop kullanabilir ve bir VS uygulamasından çalıştırabilir. – dbasnett

+0

Başarısız olan belgelerin birden çok bölümü var mı? – Comintern

cevap

1

Bu üç satırlık kodu kaldırdım ve makro bu iki belge için bilgisayarımda çok hızlı bir şekilde çalıştı. Bu kodu oluşturmak için kayıtlı bir makro kullandığınız görülüyor. Kodunuzun ne yaptığını açıklayan bir yorum bulunmadığından, bu kodun tam olarak ne istediğini kavramak kesinlikle zor. Bu öneri sorununuzu çözmezse aşağıdan yorum yapın.

.BookFoldPrinting = False 
.BookFoldRevPrinting = False 
.BookFoldPrintingSheets = 1 
+0

Denerim. Ben bir VBA insanı değilim. Yapmaya çalıştığım tek şey marjları ayarlamaktı ve evet neyin çalıştığını kaydettim. Teşekkürler. – dbasnett

+0

@dbasnett bu sorunu çözdü mü? Eğer öyleyse, lütfen soruyu kapatmak için cevap olarak işaretleyin. Teşekkürler! – Floam

+0

işe geri döndüğümde yapacağım. – dbasnett

İlgili konular