2009-10-21 15 views
1

Utilisation de VBA dans MS Project 2003 Je crée une feuille Excel et y écris des données. Après que je veux changer SetPrintArea et orientation de la feuille que j'ai créé alors j'ai écritimpossible de définir PageSetup.Orientation = xlLandscape à partir de MS Project

with xlsheet       '// Defined being an Excel.Worksheet 
    For i = 1 To .UsedRange.Columns.Count 
     .Columns(i).EntireColumn.AutoFit 
    Next i 
    txtPrintArea = txtPrintArea & "$" & xlCol.Row '// I created the range to print before 
    With .PageSetup 
     .Orientation = xlLandscape 
     .PrintArea = xlSheet.UsedRange.Address 
    End With 
End With 

Il se bloque à la déclaration .Orientation. Si je commente cela, il se bloque sur la ligne .PrintArea. Ma conclusion est qu'il ne peut définir aucune propriété de .PageSetup

Comment puis-je spécifier le PrintArea?

+0

Si vous parcourez votre code, pouvez-vous voir les propriétés PrintArea et Orientation sur xlSheet.PageSetup dans la fenêtre de surveillance? – dendarii

+0

En outre, vous n'avez pas besoin de la boucle dans votre code pour définir les largeurs de colonnes. Vous pouvez simplement utiliser la ligne: .UsedRange.Columns.EntireColumn.AutoFit – dendarii

+0

.UsedRange.Columns.EntireColumn.AutoFit est mieux en effet. Mais dans mon «vrai code», j'ai juste besoin d'une partie de .UsedRange, donc j'ai juste enlevé la colonne de départ de la boucle pour simplifier le code que j'ai posté ici. – user191093

Répondre

0

Vous faites ce qu'il faut. Pourquoi définissez-vous txtPrintArea mais définissez le .PrintArea = xlSheet.UsedRange.Address ???

Sinon, vous devrez publier plus de code à titre d'exemple. J'ai créé ce qui suit en fonction de votre question et cela a fonctionné pour moi:

Set xlSheet = Sheet1 
Set xlCol = Sheet1.Rows(1) 
txtPrintArea = "A" 
With xlSheet       '// Defined being an Excel.Worksheet 
    xlSheet.UsedRange.Columns.EntireColumn.AutoFit 
    txtPrintArea = txtPrintArea & "$" & Trim(Str(xlCol.Row)) + ":b2" '// I created the range to print before 
    With .PageSetup 
     .Orientation = xlLandscape 
     .PrintArea = txtPrintArea '//xlSheet.UsedRange.Address 
    End With 
End With 
+0

Même problème: crash à .Orientation = xlLandscape txtPrintArea n'a pas été utilisé (échangé par UsedRange) pour le test (éviter le problème POSSIBLE en raison d'une mauvaise définition de txtPrintArea) 'Plus de code' ?? Vous ne savez pas ce qui vous manque (bien sûr, xlSheet et xlCol ont été définis avant de les utiliser), il s'agit de ne pas pouvoir définir les propriétés de xlSheet.PageSetup – user191093

+0

Avez-vous pu exécuter mon exemple ci-dessus? Si oui, alors je réduirais votre code à l'essentiel. Que se passe-t-il si vous exécutez: xlsheet.PageSetup.Orientation = xlLandscape ??? –

+0

Je n'ai pas pu exécuter votre code (plantage). Aussi xlsheet.PageSetup.Orientation = xlLandscape ne fait pas de différence – user191093

1

J'ai installé l'imprimante BullZip PDF et après que les travaux de .PageSetup.Orientation. Il semble donc que PageSetup ait besoin d'une imprimante à installer.