Just nu i M3-nätverket
Gå till innehåll
Sparven123

Hitta ord i word och kontrollera att de finns i excel?

Rekommendera Poster

Hej,

 

Jag har ett långt worddokument där det förekommer olika ID-nummer. Gemensamt för alla är att det börjar med ID:XXXXX.

Jag har även ett exceldokument där förhoppningsvis alla dessa ID-nummer också ska finnas. Det är det jag vill att mitt program tar reda på.

Jag vill alltså:

1: Hitta alla nummer efter”ID:” i mitt worddokument.

2: Söka efter dessa i mitt exceldokument

3: Redovisa detta, dvs. vilka av ID-numrena i worddokumentet finns i excel och vilka finns inte.

 

Har letat på internet men hittar inget som är riktigt så som jag vill ha det.

 

Oerhört tacksam för tips.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag har hittils gjort följande:

 

Private Sub CommandButton1_Click()
    Dim CompareRange As Variant, x As Variant, y As Variant
  
    Set CompareRange = Workbooks("filnamn").Worksheets("blandnamn").Range("A:A")
   
    For Each x In Selection
        For Each y In CompareRange
            If x = y Then x.Offset(0, 1) = x
        Next y
    Next x
End Sub
 

 

Detta tillåter mig att manuellt kopiera in varje nummer och lägga dom i en kolumn i excel. Sedan markerar jag denna och kör makron och får tillbaka värde om de finns i det exceldokument jag vill undersöka.

 

Det jag vill nu är att makron ska hämta dessa nummer själv. Hur gör jag?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

En nöt att knäcka.

 

Tror svaret i denna tråd

http://www.vbaexpress.com/forum/showthread.php?21130-Solved-Find-Copy-Text-from-Word-and-paste-in-excel

kan leda dig rätt.

 

Börja med att testa kod i Word, att du där kan få ut ID-nummer (skriv dem till direktfönstret i VBA med debug.print).

När du har det är det ganska enkelt att flytta över det till Word.

 

räcker detta eller behöver du mer hjälp?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

En nöt att knäcka.

 

Tror svaret i denna tråd

http://www.vbaexpress.com/forum/showthread.php?21130-Solved-Find-Copy-Text-from-Word-and-paste-in-excel

kan leda dig rätt.

 

Börja med att testa kod i Word, att du där kan få ut ID-nummer (skriv dem till direktfönstret i VBA med debug.print).

När du har det är det ganska enkelt att flytta över det till Word.

 

räcker detta eller behöver du mer hjälp?

 

 

 

 

Tack!!! Det ska jag nog klara av nu.

 

En fråga har jag dock för att göra det mer användarvänligt:

 

Set CompareRange = Workbooks("filnamn").Worksheets("blandnamn").Range("A:A")

 

Detta definerar vilken fil, blad och rad som man ska matcha mot i exceldokumentet. För att slippa ändra i koden varje gång skulle jag vilja att användaren kan fylla i [filnamn], [bladnamn] och [rad/kolumn] i celler som sedan min kod läser av och placerar i strängen ovan. Hur gör jag detta?

Redigerad av Sparven123

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Bara att hämta värden från celler och sedan kontrollera att boken är öppen genom en felhanterare.

 

Inget konstigt.

fileName =Blad2.Range("bokNamn")
shName = Blad2.Range("bladNanm")
On Error Goto Next
Set CompareRange = Workbooks(fileName").Worksheets("shName").Range("A:A")
On Error Goto 0
If CompareRange Is Nothing....

där då bokNamn och bladNamn är namn då satt på de celler där användare ska skriva.

 

Exempelvis.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Bara att hämta värden från celler och sedan kontrollera att boken är öppen genom en felhanterare.

 

Inget konstigt.

fileName =Blad2.Range("bokNamn")
shName = Blad2.Range("bladNanm")
On Error Goto Next
Set CompareRange = Workbooks(fileName").Worksheets("shName").Range("A:A")
On Error Goto 0
If CompareRange Is Nothing....

där då bokNamn och bladNamn är namn då satt på de celler där användare ska skriva.

 

Exempelvis.

 

Tack!!

 

Alltså såhär? :

 

    Dim Filename As String

    Dim shName As String

  

    Filename = Sheet2.Range("E8")

    shName = Sheet2.Range("E7")

 

    Set CompareRange = Workbooks("Filename").Worksheets("shName").Range("A:A")

 

 

Detta fungerar inte.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Opps, slarv igen av mig. x2. När du refererar till en variabel, inga citationstecken runt denna. Samt filename inget bra variabelnamn kom jag på nu.

Dim fName As String
    Dim shName As String
  
    fName = Sheet2.Range("E8")
    shName = Sheet2.Range("E7")
 
    Set CompareRange = Workbooks(fName).Worksheets(shName).Range("A:A")

och missa inte felhantering, annars kommer koden att stanna vid Set CompareRange och boken (fname) inte är öppen eller något är felstavat.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Opps, slarv igen av mig. x2. När du refererar till en variabel, inga citationstecken runt denna. Samt filename inget bra variabelnamn kom jag på nu.

Dim fName As String
    Dim shName As String
  
    fName = Sheet2.Range("E8")
    shName = Sheet2.Range("E7")
 
    Set CompareRange = Workbooks(fName).Worksheets(shName).Range("A:A")

och missa inte felhantering, annars kommer koden att stanna vid Set CompareRange och boken (fname) inte är öppen eller något är felstavat.

 

Tack, tyvärr fungerar det fortfarande inte. Jag får error Subscript out of range.. Jag vill i rutan E7 och E8 kunna skriva ex "ABC DEF 123"

Redigerad av Sparven123

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Du menar att de bara skriver

 

Bok1

Blad2

i cellerna?

Du måste även veta ändelsen på filen, xls, xlsx, xlsb, xlsm, hela filmamnet.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Du menar att de bara skriver

 

Bok1

Blad2

i cellerna?

Du måste även veta ändelsen på filen, xls, xlsx, xlsb, xlsm, hela filmamnet.

Ja, om filnamnet är bok1 och bladnamnet är blad2 ska användaren skriva in det i cellerna och koden ska fatta detta.

 

 I cellerna E7 och E8 finns namnet på filen och bladet. Tex ”Testdokument” i E8 och ”GFH1” i E7. Så om användaren byter fil kan han skriva in nya namn.

Desa textsträngar inom ”” vill jag ska sätta sig på fName:s och shName:s plats nedan.

 

   Set CompareRange = Workbooks(fName).Worksheets(shName).Range("A:A")

Redigerad av Sparven123

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Som sagt, du måste veta/ta reda på filändelsen och lägga till det.

ja, du måste ha hela sökvägen till filen om den nu inte ligger i samma mapp som den öppna boken som kör koden eller redan är öppen.

 

Dvs du måste lägga till filändelsen i stil med

fName = Sheet2.Range("E8") &".xlsx"

exempelvis.

och om ligger i annan mapp än boken, säg en undermapp:

fName = ThisWorkbook.Path &"\Arkiv\" & Sheet2.Range("E8") & ".xlsx"

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Som sagt, du måste veta/ta reda på filändelsen och lägga till det.

ja, du måste ha hela sökvägen till filen om den nu inte ligger i samma mapp som den öppna boken som kör koden eller redan är öppen.

 

Dvs du måste lägga till filändelsen i stil med

fName = Sheet2.Range("E8") &".xlsx"

exempelvis.

och om ligger i annan mapp än boken, säg en undermapp:

fName = ThisWorkbook.Path &"\Arkiv\" & Sheet2.Range("E8") & ".xlsx"

 

 

Löste det, tack för hjälpen!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...