Avatar billede petzel Novice
03. januar 2010 - 14:47 Der er 23 kommentarer og
1 løsning

Makro virker ikke??

Hej, jeg har forsøgt at lave en makro:

Kort fortalt: Den skal oprette en mappe på mit drev
Arket er opbygget sådan at man skal stå på celle "A" i en række, og så skal den oprette mappen med et navn som angivet i celle "q" i samme række.

Makroen skal virke for 12 ark (et for hver mdr)

Når makroen er afsluttet skal den aktive celle stadig vær den som da makroen blev fyret af!



Jeg har forsøgt mig, men det virker ikke??
Makroen er placeret i "this workbook"
--------------------------------------
Private Sub Opret_mappe()

' Register udgangs punkt
Dim home As String
home = ActiveCell.Address

Const myFolder As String = "C:\Documents and Settings\acst\Desktop\Tilbud\"
 
Dim T_name As String
ActiveCell.Offset(0, 13).Activate
T_name = ActiveCell.Value
 

'With T_name
On Error Resume Next
MkDir myFolder & .Value
On Error GoTo 0
Range(home).Select

End With


End Sub
--------------------------------------
03. januar 2010 - 14:55 #1
1) Lav et modul til din kode - det er mere korrekt
2) Fjern ' i linjen
'With T_name
3) Slet "On error resume next" så du kan se, hvad der kommer af fejl

Det var lige fra hoften 3 ting der springer frem. Har ikke testet om det er nok til at få koden til at virke.
Avatar billede petzel Novice
03. januar 2010 - 15:08 #2
Hej Thor, der kommer en fejl besked vedr. linjen

With T_name

>>Compile error:

With orbejct must be user-defined type, Orbject, or Variant<<

??
03. januar 2010 - 15:14 #3
Ok - lad os så skrive det lidt kortere

MkDir myFolder & ActiveCell.Offset(0, 13).value

skal erstatte linjerne

Dim T_name As String
ActiveCell.Offset(0, 13).Activate
T_name = ActiveCell.Value
 

'With T_name
On Error Resume Next
MkDir myFolder & .Value
On Error GoTo 0
03. januar 2010 - 15:16 #4
Og skal du loope gennem cellerne i kolonne a ser det sådan her ud

Dim c as range
For Each c in range("A2", range("A2").end(xldown)).cells
  MkDir myFolder & c.Offset(0, 13).value
Next

Forudsætter at de mapper du vil have oprettet står i A2 og ned.
Avatar billede petzel Novice
03. januar 2010 - 15:27 #5
Nu ser det sådan ud, men jeg får en fejl vedr.
"MkDir myFolder & ActiveCell.Offset(0, 13).Value"

>>Run-time error '75':
Path/File access error<<

-----------------------------

Private Sub Opret_mappe()

' Register udgangs punkt
Dim home As String
home = ActiveCell.Address

Const myFolder As String = "C:\Documents and Settings\acst\Desktop\Tilbud\"
 
MkDir myFolder & ActiveCell.Offset(0, 13).Value
Range(home).Select

End Sub
-----------------------------
03. januar 2010 - 15:31 #6
Skyd linjen

msgbox  myFolder & ActiveCell.Offset(0, 13).Value

ind lige før mkdir - så kan du se, hvilken folder den prøver at oprette.
Avatar billede petzel Novice
03. januar 2010 - 16:08 #7
Besked boksen skriver:
C:\Documents and Settings\acst\Desktop\Tilbud\

Den får ikke taksten fra celle i række q med!! ALTSÅ DEN MAPPE SOM DEN SKAL OPRETTE!!

Den skal oprette mappen med et navn = celle Q i den aktive række, og placerer den nye mappe i C:\Documents and Settings\acst\Desktop\Tilbud




Og den stopper igen ved:

MkDir myFolder & ActiveCell.Offset(0, 13).Value

Jeg har ikke meget forstan på det men er "MkDir" korrekt?
Det er jo forskællen på de to linjer.
03. januar 2010 - 16:12 #8
Hvilken celle står din markør i når du starter makroen?

msgbox = message box
mkdir = make directory
Avatar billede petzel Novice
03. januar 2010 - 16:28 #9
En celle mellem A11 og A120

Alt efter hvilke mappe som skal oprettes

DVS hvis jeg står i mappe A11 så skal den nye mappe døbes teksten i cella Q11. Celle Q 11 indeholder følgende funktion:
=CONCATENATE(A11;"  ";D11;" - ";F11;", ";G11)

Den nye mappe kunne f.eks.: skulle døbes
[  A11  ] [D11]  [  F11  ] [  G11  ]
262-10-001  Kunde - Nyt lager, København

Mappen placeres i
C:\Documents and Settings\acst\Desktop\Tilbud

Og den komplette sti skulle så være:
C:\Documents and Settings\acst\Desktop\Tilbud\262-10-001  Kunde - Nyt lager, København
03. januar 2010 - 16:31 #10
Q er offset 16 og ikke 13 i forhold til A.
Avatar billede petzel Novice
03. januar 2010 - 16:41 #11
Det kan man da kalde fejl 40..

Mit ark indeholder nogle celler som er sammen sat til en stor...

Flovt!

Nu virker det i besked boksen, men der er stadig fejl i
MkDir myFolder & ActiveCell.Offset(0, 16).Value

VBA marker linjen med GUL og kommer med en fejl besked.
03. januar 2010 - 16:48 #12
Prøv at kopiere den værdi der kommer i msgbox og manuelt oprette mappen fra en commandprompt, så du er sikker på, at det faktisk er et lovligt mappenavn
Avatar billede petzel Novice
03. januar 2010 - 16:54 #13
Det virker nu!!

hvis jeg vil ha den til ak skrive "den ønsket mappe findes allerrede" hvordan får jeg så det løst?? Det var detfor fejle kom!

Jeg skylder vist snart lidt mere ens 100 point..


Jeg har brug for at få beskde boksen hvis mappen findes, og jeg øsker makroen startet fra en CommandButton placeret i et af de 12 ark, hvor skal jeg så placer makroen?

Jeg forhøjer til 200 point
03. januar 2010 - 17:06 #14
Så skal du have "on error" på banen

on error resume next
mkdir...
if err.number>0 then
  msgbox "Den ønskede mappe findes allerede " & err.Description
end if
on error goto 0

Makroen skal placeres i et modul.
Avatar billede petzel Novice
03. januar 2010 - 17:18 #15
Hvor skal teksten indsættes?
Og hvordan får jeg angivet at de 12 knapper skal (1 i hver af de 12 ark) skal kunne afspille makroen?
Jeg har placeret makroen i modul 11


--------------------

Private Sub Opret_mappe()


Dim home As String
home = ActiveCell.Address

Const myFolder As String = "C:\Documents and Settings\acst\Desktop\Tilbud\"
 
MsgBox myFolder & ActiveCell.Offset(0, 16).Value
MkDir myFolder & ActiveCell.Offset(0, 16).Value


Range(home).Select

End Sub


-------------------
03. januar 2010 - 17:22 #16
hvilken tekst?
Opret en knap på hvert ark

http://www.it-fjernundervisning.dk/Excel_VBA/Introduktion_til_VBA/Makroer_og_knapper.aspx

Højreklik og tilknyt makroen
Avatar billede petzel Novice
03. januar 2010 - 17:24 #17
Denne tekst, hvor i den eksisterende makro skal den placeres?


on error resume next
mkdir...
if err.number>0 then
  msgbox "Den ønskede mappe findes allerede " & err.Description
end if
on error goto 0
03. januar 2010 - 17:29 #18
linjen med msgbox kan slettes - den behøver du ikke længere.

On error skal være før mkdir
og fra if og frem skal være efter mkdir
Avatar billede petzel Novice
03. januar 2010 - 18:44 #19
Det lykkes mange tak.

Send lige et svar så får du nogle point!


PS:
Kan man lave en makro som henter alle navne på alle mappe og indsættes dem i et regne ark?
Sti:
C:\Documents and Settings\acst\Desktop\Tilbud
03. januar 2010 - 19:01 #20
Svar i #14
Ja, det kan man godt -

Sub ShowFolderList()
    Dim fs, f, f1, fc, s
    Dim folderspec
    folderspec = CurDir()
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    Set fc = f.SubFolders
    For Each f1 In fc
        s = s & f1. Name
        s = s & vbCrLf
    Next
    MsgBox s
End Sub


Fra http://www.ozgrid.com/forum/showthread.php?t=56139
Avatar billede petzel Novice
03. januar 2010 - 19:47 #21
Den skriver mapperne i en besked boks, og ikke i cellerne.
Hvordan angiver jeg hvilke mappe den skal hente date fra eks.
f:kunder

Giver du lige mulighed for at kunne firgive nogle point til dig
Avatar billede petzel Novice
03. januar 2010 - 20:00 #22
Thor, jeg har oprettet et spørgsmål som du lige kan klikke svar på, så får du de sidste 100 point



"Thor. Her med de sidste point"
03. januar 2010 - 20:10 #23
folderspec = CurDir()

erstattes med folderspec = "c:\din mappe\"

        s = s & f1. Name
        s = s & vbCrLf

erstattes med

activecell.value = f1.Name
activecell.offset(1,0).activate

eller noget i den stil...
Avatar billede johnstigers Seniormester
03. januar 2010 - 20:11 #24
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester