J'ai une feuille de calcul faite dans Excel 2003 (enregistré comme une feuille de calcul .xlsm 2007 de macro activé) qui utilise des requêtes pour obtenir des données de SQL. J'ai fait la feuille de calcul en lecture seule afin que les utilisateurs ne le font pas gâcher mon travail, et utiliser le code suivant pour copier uniquement les valeurs de la feuille de calcul maître à un nouveauTaille de ligne de copie VBA?
Sub NewWB()
Dim wbNew As Workbook
Dim wbThis As Workbook
Dim rng As Range
Dim wbName As String
Dim Pic As Picture
wbName = ThisWorkbook.Name
Set wbThis = Application.Workbooks(wbName)
Set rng = wbThis.Worksheets("Report").Range("C1:AZ65336")
Set wbNew = Workbooks.Add(xlWBATWorksheet)
Set Pic = wbThis.Worksheets("Report").Pictures("Picture 2")
With Pic
With .ShapeRange
.ScaleHeight 1#, msoScaleFromTopLeft
.ScaleWidth 1#, msoScaleFromTopLeft
End With
End With
rng.Copy
With wbNew
.Worksheets(1).Range("A1").PasteSpecial xlPasteValuesAndNumberFormats
.Worksheets(1).Range("A1").PasteSpecial Paste:=8
.Worksheets(1).Range("A1").PasteSpecial xlPasteFormats
Pic.Copy
.Worksheets(1).Paste
.SaveAs Filename:=wbThis.Path & "\" & Left(wbName, InStr(wbName, ".") - 1) & _
Format(Date, "_yyyy-mm-dd"), _
FileFormat:=xlWorkbookNormal
End With
' wbThis.Close
End Sub
Il fonctionne très bien avec une petite problème. Il ne copie pas mes hauteurs de ligne de sorte que le logo que je copie finisse par couvrir une partie des données! Il me semble ahurissant qu'il y aurait un moyen de copier directement les colonnes mais pas du tout de copier les lignes.
Que dois-je faire pour copier la hauteur de ligne, je travaille avec les 100 premières lignes du document.
Vous pouvez parcourir les 100 premières lignes et définir les hauteurs de ligne dans la feuille de destination. –
http://www.exceltip.com/cells-ranges-rows-and-columns-in-vba/copy-row-heights-and-column-widths-using-vba-in-microsoft-excel.html –
Est Y at-il une raison pour laquelle vous ne pouvez pas simplement supprimer les deux premières lignes et ensuite copier la feuille entière? –