Print side | Luk vindue

VBA funktion og makro giver fejlmeddelse

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=4049
Udskrevet den: 20.Maj.2024 kl. 06:06


Emne: VBA funktion og makro giver fejlmeddelse
Besked fra: Akh
Emne: VBA funktion og makro giver fejlmeddelse
Posteringsdato: 29.Okt.2019 kl. 20:00
Hej folkens

Jeg er helt ny herinde så giv lyd hvis jeg overtræder regler, skrevne som uskrevne.

Jeg har brugt Excel til at lave en digital timeseddel til arbejde, så de ikke længere skal udfyldes i hånden.
Indtil nu har det sparet en masse tid, da det er enormt svært at udfylde forkert og videre selv laver diverse beregninger.

MEN da timesedlen stadig ikke er fejlfri, er jeg blevet bedt om printe fysiske kopier ud af de månedlige timesedler så vi kan fejltjekke inden lønindberetning.
Jeg skal derfor printe "indsæt månedsark" ud fra 34 forskellige projektmapper.

Derfor lavede jeg et opslag på Reddit, og da løsningen lignede en copy/paste løsning gik jeg ud fra at det ikke ville være svært at få til at virke.
https://www.reddit.com/r/excel/comments/dfm9g6/is_it_possible_to_print_a_specific_worksheet_from/ - https://www.reddit.com/r/excel/comments/dfm9g6/is_it_possible_to_print_a_specific_worksheet_from/

Jeg tog fejl og da forfatteren af koden ikke svarer er jeg desværre på bar bund.

Når jeg afspiller koden får jeg Error 400. Når jeg forsøger at ændre i koden får jeg vidt forskellige fejl. 



SÅ er der nogen af jer der kan hjælpe mig med at finde hoved og hale i koden?

På forhånd tak!




Funktionskode:
Private Function SheetExists(sWSName As String) As Boolean
Dim ws As Worksheet
On Error Resume Next
Set ws = Worksjeets(sWSName)
If Not ws Is Nothing Then SheetExists = True
End Function

Makro kode:
Sub ImportSheet()
Dim sImportFile As String, sFile As String, snip As String
Dim sThisBk As Workbook
Dim vfilename As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set sThisBk = ActiveWorkbook
FPath = Sheets("TheFiles").Range("B1") & "\"
snip = Sheets("TheFiles").Range("B2")
For rw = 4 To Cells(Rows.Count, 1).End(xlUp).Row
sImportFile = FPath & Sheets("TheFiles").Range("A" & rw)
vfilename = Split(sImportFile, "\")
sFile = vfilename(UBound(vfilename))
Application.Workbooks.Open Filename:=sImportFile
Set wbBk = Workbooks(sFile & Right(ActiveWorkbook.Name, 5))
With wbBk
If SheetExists(snip) Then
Set wsSht = .Sheets(snip)
wsSht.Copy before:=sThisBk.Sheets(1)
Sheets(snip).Name = sFile & "-" & snip
Else MsgBox "There is no sheet with name " & snip & vbCr & .Name
End If
wbBk.Close SaveChanges:=False
End With
Next rw
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Videre fik jeg dette billede for at illustrere hvordan opsætningen af "printdokumentet" skulle sættes op.







Svar:
Besked fra: Mads32
Posteringsdato: 29.Okt.2019 kl. 20:27
Jeg tror ikke jeg kan hjælpe.

Men du får måske en bedre hjælp, hvis /topic662.html - uploader din fil.

Følg vedledningen på /topic662.html - upload i øverste venstre hjørne af denne side


Besked fra: Bjarnehansen
Posteringsdato: 29.Okt.2019 kl. 21:20
Jeg tror vi må se dit ark forat kunne se hvad der sker i det....


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Akh
Posteringsdato: 29.Okt.2019 kl. 22:13
/topic662.html - uploader arket i morgen. 
Tak for de hurtige svar.

-------------
Excel Rookie


Besked fra: Akh
Posteringsdato: 30.Okt.2019 kl. 10:55
uploads/2431/Mappe_2019-10-30_10-52-02.xlsx" rel="nofollow - uploads/2431/Mappe_2019-10-30_10-52-02.xlsx

Her har i det arket, med samme opstilling som foreslået på Reddit, så det passer til koden.

Kan det være at jeg skal gemme funktionskoden og makroen i hver sit makro modul?


-------------
Excel Rookie


Besked fra: Akh
Posteringsdato: 30.Okt.2019 kl. 10:58
Her er tekstforklaringen af koden, fra Reddit.

Citér The function and macro are below. The hardest part for you would be inserting a new sheet in your workbook as your file handler. The way it works is starting at row 4, excel will process the file name, open the workbook that you specified, and pull the desired sheet that you named. Once you have the initial setup sheet completed, add the coding and finally a button to activate it.

Here is a screenshot of the layout and tabs after import. Very simple but easy to follow along. You do not need to include the file extension in the workbook name. That is handled in the coding. After the sheet is copied over, it gets renamed with the workbook name and the sheet name so you can easily distinguish what sheet is what.


-------------
Excel Rookie


Besked fra: Akh
Posteringsdato: 05.Nov.2019 kl. 19:44
Hej folkens

Jeg har ENDELIG løst problemet.
Funktionskoden skal indsættes i samtlige ark som man vil printe.
Disse skal selvfølgelig være gemt som excel med aktive makroer

Når dette er gjort laves seperat excel dok. med opstilling og formatering som beskrevet ovenfor.
Det er vigtigt at der ikke er "." eller ":" i filnavnene eller placering, da de ikke vil kunne hentes ind.

Kør PrintSheet makroen for hele "printerdokumentet", og så skulle resten være en leg.






-------------
Excel Rookie



Print side | Luk vindue