Avatar billede clausnilsson Mester
02. april 2020 - 12:54 Der er 4 kommentarer og
2 løsninger

VBA makro til hurtigere input af data

Hej,
Jeg er i færd med at lægge en masse billeder ind i et regneark. Det er længe siden jeg har rodet med VBA og har ikke tid til at udforske det grundigt igen lige nu. Men jeg vil kunne spare en del tid hvis denne makro helt simpelt kan bringes til at virke som ønsket.

Range("E109").Select
    Selection.Copy
    Range("I109").Select
    ActiveSheet.Pictures.Insert( _
        "D:\OneDrive\Cloud controller main\RS\23H2 - Holmsjön to Stöde power lines over road and narrow spots\Powerlines\DSCN1064.JPG" _
        ).Select

Det her er en simpel indspilning, som jeg ikke kan bruge for den skal naturligvis ikke selecte E109 og I109. Jeg går 4 celler til venstre og kopierer indholdet og så 4 celler til højre og indsætter et billede. Stien kan selvfølgelig variere og filnavnet er nyt hver gang (hentes jo i kolonne E).

Jeg har søgt og intet fundet og jeg har afprøvet diverse Win 10 makrooptagere uden held.

Hvis det kræver kompleks VBA kode må jeg fortsætte med de mange tastetryk, men er der en simpel løsning?

Mvh
Avatar billede Mads32 Ekspert
02. april 2020 - 14:23 #1
Hej

Inden for de seneste 2 uger har jeg her på sitet eller på "Dansk regneark Forum) set en løsning som du søger.  Den viste portrætter af besætningsmedlemmer, som blev vist i flere forskellige sammenhænge.
Jeg har ikke lige nu fundet det. jeg er ikke så god til at søge, jeg finder ofte noget ved en tilfældighed.

m v h mads32
Avatar billede Jan K Ekspert
02. april 2020 - 15:50 #2
Hvis du gør det et billede ad gangen, kan du stå i E, ogtage udgangspunkt i ActiveCell i stedet for E109, og så bruge Offset(0,4) til komme til I-kolonnen.

Skal det ske automatisk, kan du bruge en For Each... Next løkke til at løbe alle cellerne i E-kolonnen igennem.
Avatar billede clausnilsson Mester
02. april 2020 - 21:31 #3
Awesome :) ja, bare et ad gangen. Så langt så godt, dette virker, men to spørgsmål mere.

Dim navn As String
    ActiveCell.Offset(0, -4).Select
    Selection.Copy
    navn = Selection.Value
    ActiveCell.Offset(0, 4).Select
    ActiveSheet.Pictures.Insert( _
        "D:\OneDrive\Cloud controller main\RS\" & navn _
        ).Select
    Call Resize_active_image
    ActiveCell.Offset(1, 0).Select

1) Efter den har kørt er cellen, som filnavnet blev hentet i i kolonne E, stadig selected (med stiplet box omkring), hvordan deselecter jeg den (kan med ESC-knappen, men vil gerne have det med i koden)?
2) Det virker selvfølgelig kun hvis filen er i samme sti som sidst. Hvis nu filen skal findes et nyt sted ville det være rart at den konstaterer at filen ikke findes her og så beder om en ny sti. Er det lige så enkelt?
Avatar billede Jan K Ekspert
02. april 2020 - 22:39 #4
Det første kan gøres med

Application.CutCopyMode = False til sidst.

Det andet kan jeg ikke svare på på stående fod. Det må jeg undersøge, men det må være noget med at reagere på den fejlkode, der kommer.
Avatar billede clausnilsson Mester
02. april 2020 - 23:06 #5
Virker også :) Topklasse :)

Og 2) har jeg besluttet mig for at det bliver for bøvlet. Filnavnet får jeg fra et lille program, som skanner mappen for filer, og den kan også spytte filnavn inkl. sti ud, så det bruger jeg i stedet.

Alt løst - kæmpe tak!
Avatar billede Jan K Ekspert
03. april 2020 - 10:15 #6
Velbekomme
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

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





CIO
10 gratis artikler: Få gode råd fra Danmarks bedste it-ledere