04. september 2004 - 13:07Der er
15 kommentarer og 1 løsning
udskrivning af kommentare, flere kommentare pr. side
Jeg har et regnskab der fylder 1 A4 ark liggende, til mange af cellerne har jeg kommentare, og når jeg vil udskrive dem så skal jeg udskrive 10 sider med kun kommentare og jeg synes det er temmelig spild at der kun kommer 1 række kommentare pr ark (der kan være ca. 3 rækker på 1 A4 ark liggende). Ved at sætte sideopsætning til stående, så passer mit regnskab ikke til 1 A4 mere og skal bruge 2 sider for at udskrive det (og det bliver uoverskueligt), men så fylder kommentarene kun 7 sider, men der burde kunne være plads til ca 2 rækker kommentare pr side.
Jeg ved ikke om du synes det hjælper, men du kan da overveje at prøve nedenstående funktion, der skriver alle kommentarer til et Word dokument. Så kan du efterfølgende konvertere teksten til en tabel, og angive hvor mange spalter, der skal anvendes. Lidt kringlet, og kan måske optimeres lidt, men det er måske værd at prøve.
Public Sub PrintCellComments()
Dim Cmt As String Dim C As Range Dim I As Integer Dim WordObj As Object Dim ws As Worksheet Dim PrintValue As Boolean Dim res As Integer On Error Resume Next Err.Number = 0
res = MsgBox("Skal værdier udskrives sammen med kommentarer?", vbYesNoCancel + vbQuestion, "Udskriv kommentarer") Select Case res Case vbCancel Exit Sub Case vbYes PrintValue = True Case Else PrintValue = False End Select
Set WordObj = GetObject(, "Word.Application") If Err.Number = 429 Then Set WordObj = CreateObject("Word.Application") Err.Number = 0 End If
WordObj.Visible = True WordObj.Documents.Add With WordObj.Selection .TypeText Text:="Cell Comments In Workbook: " + ActiveWorkbook.Name .TypeParagraph .TypeText Text:="Date: " + Format(Now(), "dd-mmm-yy hh:mm") .TypeParagraph .TypeParagraph End With
For Each ws In Worksheets For I = 1 To ws.Comments.Count Set C = ws.Comments(I).Parent Cmt = ws.Comments(I).Text With WordObj.Selection .TypeText Text:="Comment In Cell: " + C.Address(False, False, xlA1) + " on sheet: " + ws.Name If PrintValue = True Then .TypeText Text:=" Cell Value: " + Format(C.Value) End If .TypeParagraph .TypeText Text:=Cmt .TypeParagraph .TypeParagraph End With Next I Next ws
Set WordObj = Nothing MsgBox "Kommentarer er skrevet til Word", vbInformation, "Udskriv kommentarer"
Du lægger blot koden ind i dit regneark og kører den herfra (hvis det er noget du kan bruge, kan vi altid finde en smartere løsning):
- Koden lægges ind i regnearket ved at trykke Alt-F11 (Starter VBA-editoren). - Så vælger du menuen Indsæt/Modul - Herefter kopierer du blot ovenstående funktion og sætter den ind i editoren. - Programmet kører, når du trykker på F5.
hvis jeg trykker Alt+F11 -> insert -> module -> så kommer der en tom box frem -> her kopiere jeg indholdet af overstående kode ind (fra og med Public Sub PrintCellComments()til og med End Sub ) Og hvad så?
hvis jeg lukker vinduet og trykker gem, og derefter kommer mit regnskab frem og trykker F5 så kommer "Gå til" box'en frem, det samme sker hvis jeg bare trykker gem og lukker VB editoren.
Skal indrømme at jeg aldrig har rørt VB eller sådanne noget i Office (Andet end 2timers macro "programering" i access som læren mente var nok for at udfylde kapitlet "programering")
Prøv at gå ind i menuen Funktioner/Makro/Makroer.. Her kan du vælge PrintCellComments og så trykke på knappen "Afspil". Så skulle der gerne ske ting og sager.
hvis jeg gå i funktioner -> Makro -> Makro (alt+F8) -> så kommer dette billede frem: http://www.krogh-hansen.dk/eksperten/makro.jpg der kan jeg ikke vælge PrintCellComments eller paste/sætte ind noget
Det var mystisk. Når du har kopieret funktionen (skulle være korrekt som du har beskrevet det), så vil funktionens navn fremgå af det vindue som du viser (som desværre er tomt). Det siger mig umiddelbart, at du ikke har kopiereret funktionen ind i dette regneark, så lad os lige prøve igen:
- I regnearket (det med alle kommentarerne) trykker du Alt-F11 og vælger menuen Indsæt/Modul. I hvide område indsættes ovennævnte funktion. - Skift fra VBA-Editor til regneark (det er ikke nødvendigt at gemme inden), og vælg menuen Funktioner/Makro/Makroer..
Så skulle du være ved det vindue som du viser ovenfor, men nu skulle der gerne stå navnet på funktionen (PrintCellComments) og når du markerer det, bliver det muligt at vælge knappen Afspil.
den virker nu, dog er det lige som med bare så vælge udskriv kommentartene Sidst i Arket, så den faktisk kun bruger halvdelen af arket (se eks: http://www.krogh-hansen.dk/eksperten/excel.jpg række 1 på det stående ark)
Og kommentarene fylder 9 sider (en mindre en hvis jeg bare vælger at udskrive den sidst i arket) jeg kan selvfølgelig godt begynde at copy/paste dem ind i 2 rækker (evt bruge en tekstbox)
Hvis jeg har forstået det ret, så har du nu kommentarerne i et Word dokument. Her kan du markere hele teksten og angive at den skal vises i f.eks. 3 spalter (Formatering/Spalter). Så skulle der vist ske noget dramatisk.
tja, det viser jo bare hvor meget jeg bruger word, da jeg ikke have set den "spalter" ;o)
OK, så nu har jeg den i word og den fylder 5 sider.
Er der mulighed for at den kan skrive Januar - Diverse istedet for Celle B15? månederne ligger i række 1 og fra B til M, og A fra 2-44 er udgifter/indtægter
Er det kun Celle B15 det gælder? Du kan få det næsten som du vil have det - det er blot et spørgsmål om hvor kompliceret programmet skal være (og dermed hvor meget tid vi lige vil bruge på at løse problemet).
Det er jo lidt uoverskuelige med 5 sider hvor der står
Comment In Cell: B15 on sheet: Ark1 Cell, det er lidt nemmer hvis den hed Comment In Cell: januar - Diverse on sheet: Ark1 Cell Hvor den tager januar fra B1 (Januar) og Diverse fra A15 (Diverse)
Jeg er ikke helt sikker på, hvad det er du vil, men prøv lige med nedenstående:
Public Sub PrintCellComments()
Dim Cmt As String Dim C As Range Dim I As Integer Dim WordObj As Object Dim ws As Worksheet Dim res As Integer On Error Resume Next Err.Number = 0
Set WordObj = GetObject(, "Word.Application") If Err.Number = 429 Then Set WordObj = CreateObject("Word.Application") Err.Number = 0 End If
WordObj.Visible = True WordObj.Documents.Add With WordObj.Selection .TypeText Text:="Kommentarer i regnearket: " + ActiveWorkbook.Name .TypeParagraph .TypeText Text:="Date: " + Format(Now(), "dd-mmm-yy hh:mm") .TypeParagraph .TypeParagraph End With
For Each ws In Worksheets For I = 1 To ws.Comments.Count Set C = ws.Comments(I).Parent Cmt = ws.Comments(I).Text With WordObj.Selection ' .TypeText Text:="Kommentar i celle: " + C.Address(False, False, xlA1) + " på faneblad: " + ws.Name .TypeText Text:="Kommentar i " + Format(C.Value) + " på " + ws.Name .TypeParagraph .TypeText Text:=Cmt .TypeParagraph .TypeParagraph End With Next I Next ws
Set WordObj = Nothing MsgBox "Kommentarer er skrevet til Word", vbInformation, "Udskriv kommentarer"
det var ikke helt det jeg mente, men den tidligere kode er bedre end at bruge Excels måde at udskrive kommentare på.
Synes godt om
Ny brugerNybegynder
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.