08. november 2006 - 20:05Der er
12 kommentarer og 1 løsning
Makro - forskellige drev
Jeg har følgende deklartioner af konstanter:
'---------------------Dette er deklartioner af konstante variabler----------------------------- 'Kontrol af om der er skrevet navn i C3 og dato i H3 Set x = Worksheets("Info").Range("C3") Set y = Worksheets("Info").Range("H3") Const Bogmærke As String = "Navn" Const Kunobeller As String = "C:\Kunobeller\" 'Mappe hvor programmet ligger i Const Referater As String = "C:\Kunobeller\Referater\" 'Dette er mappen hvor den gemmer wordfilen Const Skabeloner As String = "C:\Kunobeller\Skabeloner\" 'Dette er mappen hvor den finder skabelonen Const DotName As String = "kunobeller.dot" 'Dette er navnet på skabelonen Const CellStr As String = "C3" 'Dette er feltet hvor den finder navnet på eleven '-----------------------------------------------------------
Mit problem at det er forskelligt hvilket drev der bruges til at gemme filerne. Derfor har jeg brug for at min makro ændres, så der kigges på hvilket der arbejdes på. Altså hvor den er åbnet fra og så bruges den. En af udfordringerne er den, at der åbenes en kopi af en skabelon, og første gang den gemmes, skal den gemmes på samme drev som skabelonen.
F.eks. Som ovenfor: C-drev - Bruges "C:/" Åbnes på F-drev - Bruges "F:/" Åbnes på S-drev - Bruges "S:/" osv.
Hvis filen flyttes fra C:/ til F:/ skal F:/ bruges til den flyttes til noget andet.
Jeg har prøvet begge løsninger og løber ind i et problem. Selvom jeg har skabelonen liggende på F-drevet og åbner en ny, og gemmer den ved hjælp af min makro, vil den gemme på C-drevet. Også selvom jeg bruger "\Kunobeller\Referater\" istedet for "C:\Kunobeller\Referater\"
Når jeg bruger =VENSTRE(CELLE("filnavn");2) er der ingen ting i cellen før den gemmes. det betyder jeg få en fejl når jeg bruger makroen.
følgende funktion returnerer SAND eller FALSK afhængig af om filen du angir findes hvis filen kun findes i et af de drev du anvender og du ikke har alt for mange kunne det måske være en mulighed
Function Hvor(rsFullPath As String) As Boolean Hvor = CBool(Len(Dir$(rsFullPath)) > 0) End Function
indsæt i et alm. modul i arket skriv: =Hvor("F:\temp\navn.xls") hele stien og filnavn.type skal angis indsæt den i så mange celler som du har mulige drev og test efterfølgende på disse celler
excelent> Jeg er ikke helt sikker på hvad du mener! Der findes en xls- og doc-fil med samme navn. De laves begge ud fra skabeloner. Makroerne, som jeg har problemer med gemmer xls- og doc-filerne. Men de skal gerne gemme på samme drev , som skabelonen ligger på, i mappen \Kunobeller\Referater\. Der er to makroer en til xls-filen og en til doc-filen.
Den ene hedder Public Sub cmdGem_Click(). Den bruges til at gemme .xls. og den anden hedder Public Sub cmdÅbenReferat(). Den bruges til at åbne en .doc via en .dot. og så gemme den med samme navn som .xls.
Der kan godt være andre drev alt efter hvor den enkelte bruger vælger at have det liggende. Et er sikkert: alle referater (.xls og .doc) - hænger sammen parvis - ligger i ?:\Kunobeller\Referater\ og begge skabeloner ligger i ?:\Kunobeller\Skabeloner\.
Det jeg har brug for er at det er muligt at tjekke på hvilket drev der arbejdes fra. Og det skal gerne være via en makro, så jeg kan putte det ind i den eksisterende!
mit forslag står og falder med om skabelonen kun ligger på 1 af flere drev indsæt koden i din makro definer variablen Drev udskift ? med skabelonnavn og tilføj selv ekstra linier som nedenstående for alle andre drev
If CBool(Len(Dir$("C:\Kunobeller\Skabeloner\?????.xlt")) > 0) Then Drev = "C" If CBool(Len(Dir$("F:\Kunobeller\Skabeloner\?????.xlt")) > 0) Then Drev = "F" If CBool(Len(Dir$("S:\Kunobeller\Skabeloner\?????.xlt")) > 0) Then Drev = "S"
bak> kan du ikke give mig lidt mere hjælp mht. det link ud har lagt til mig! Jeg kunne godt tænke mig en løsning, hvor jeg ikke er afhængig af at jeg har diffeneret det enkelte drev for at kunne gemme. Jeg vil gerne kunne gemme på samme drev som skabelonen hentes! Jeg bruger følgende makro idag: Public Sub cmdGem_Click()
'---------------------Dette er deklartioner af konstante variabler------------------------------------------------ Dim Blank Dim OK Dim Gemt Set x = Worksheets("Info").Range("C3") Set y = Worksheets("Info").Range("H3") Set z = Worksheets("Info").Range("C4") Const Referater As String = "\Kunobeller\Referater\" 'Dette er mappen hvor den gemmer referaterne Const Kunobeller As String = "\Kunobeller\" 'Dette er mappen hvor hele programmet ligger '----------------------------------------------------------------------------------------------------------------- If x = "" Or y = "" Or z = "" Then 'Hvis "C3" "C4" eller "H3" er " ", så kommer der en meddelse om at man skal skrive ref. Blank = MsgBox(Prompt:="Husk at udfylde både barnets navn, undersøgt- og fødselsdato!", Title:="Meddelelse", Buttons:=vbInformation) Worksheets("Info").Select Range("C3").Select
Else
'Hvis filnavn indeholder navnet i Info,C3 gemmes filen i samme navn, ellers oprettes nyt navn If InStr(1, ActiveWorkbook.Name, Worksheets("Info").Range("C3").Text) > 0 Then ActiveWorkbook.Save 'Viser Messegebox Gemt = MsgBox(Prompt:=Referater & Format(y, "YYYY") & "-" & Format(y, "MM") & "-" & x, Title:="Filen er gemt", Buttons:=vbOKOnly)
Else
'Vises "Er du sikker" OK = MsgBox(Prompt:="Er du sikker?", _ Title:="Gem", Buttons:=vbQuestion + vbYesNo)
If OK = vbNo Then
Else
'Kontrol af at de nødvendige mapper findes A = Dir(Kunobeller, vbDirectory)
If A = "" Then MkDir (Kunobeller) End If
B = Dir(Referater, vbDirectory)
If B = "" Then MkDir (Referater) End If
'Sætter barnets navn ind i sidehoved til venstre Sheets("Diagram").Select With ActiveChart.PageSetup .LeftHeader = "&18" & Chr(10) & "Navn: " & x End With
Sheets("Opgørelsesark").Select With ActiveSheet.PageSetup .LeftFooter = "Navn: " & x End With
'Viser Messegebox Gemt = MsgBox(Prompt:=Referater & Format(y, "YYYY") & "-" & Format(y, "MM") & "-" & x, Title:="Filen er gemt", Buttons:=vbOKOnly) End If End If End If End Sub
Har droppet en løsning, da jeg ikke kan finde noget der virker :-|
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.