Vill kunna hämta cellinnehåll från specifika excel celler från Vb. Pröva att öppna Excel, spela in vad du vill göra och sedan kolla i Visual Basic Editor (ALT+F11 i Excel). Där ser du allt du behöver veta. Här är ett exempel som skriver en klassstruktur till en excelfil för > Fungerar dåligt. Hur skall jag kunna spela in att jag vill hämta värden från vissa celler från Vb och sedan lagra dessa i ett förutbestämt format till en textfil som jag skapar i VB ??? Att du skulle spara i en textfil hade jag ingen aning om. För att göra det blir det naturligtvis ingen förtjänst av att spela in ett makro.Hämta värde från Excel
Visa gärna med lite kod och förklaringar. Har testat men inte riktigt snappat det här med Range och Cell
Vill också kunna sortera ett helt Excelark med en bestämd kolumn som utgångsläge.
affe
Sv: Hämta värde från Excel
/Niklas JanssonSv: Hämta värde från Excel
lagring. Det är mycket kod - men du borde kunna få ut hur du flyttar
runt mellan celler och så vidare. (Koden är inte komplett - tog bort en del (typ felhantering, progressbar etc) eftersom det inte var relevant för frågan.)
//Emma
<code>
filer = lista.Count
For i = 1 To filer
'skapar en workbook
Set wb = Workbooks.Add()
'aktiverar cell a1 på ark 1
Set ruta = wb.Sheets(1).Range("a1")
'sätter rubrikerna (per kolumn)
ruta.Offset() = "AnstNr"
ruta.Offset(, 1) = "Projnr"
ruta.Offset(, 2) = "Löpnr"
ruta.Offset(, 3) = "Timmar"
ruta.Offset(, 4) = "Godkänd"
ruta.Offset(, 5) = "Datum"
ruta.Offset(, 6) = "Kommentar"
antal = 0
'kollar hur många poster som jag vill skriva ut till filen
antalposter = tmpregister.register.Count
For k = 1 To antalposter
'om posten tillhör rätt vecka ska följande inträffa
If tmpregister.register(k).vecka = lista(i)(1) Then
For j = 1 To tmpregister.register(k).harDuration.Count
'letar upp första tomma raden i filen
Do Until ruta.Offset(antal + j).Text = ""
antal = antal + 1
Loop
'läser in värdena
ruta.Offset(j + antal) = tmpregister.register(k).harDuration(j).anstalldHarJobbat.Anstnr
ruta.Offset(j + antal, 1) = tmpregister.register(k).harDuration(j).tillhorProjekt.projnr
ruta.Offset(j + antal, 2) = tmpregister.register(k).harDuration(j).tillhorProjekt.lopnr
ruta.Offset(j + antal, 3) = tmpregister.register(k).harDuration(j).timmar
ruta.Offset(j + antal, 4) = tmpregister.register(k).harDuration(j).godkand
ruta.Offset(j + antal, 5) = tmpregister.register(k).harDuration(j).datum
ruta.Offset(j + antal, 6) = tmpregister.register(k).harDuration(j).tillhorProjekt.kommentar
Next j
End If
Next k
'försöker spara undan arbetsboken, med ett lösenord
On Error Resume Next
Call wb.SaveAs(sokvag & "\" & filnamn, , gPW, gPW, False)
'om ett fel uppstod är det stor sannolikhet att filnamnet redan finns
If Not Err.Number = 0 Then
'felhantering
End If
Next i
Call MsgBox("Filerna sparades i " & sokvag & ", enligt syntaxen: godkann_vXY.", vbInformation)
End Sub
</code>Sv: Hämta värde från Excel
Hmm... En av världens ledande Excel-programmerare (John Walkenbach) anser att det är det absolut bästa sättet.
/Niklas JanssonSv: Hämta värde från Excel
Skall också söka efter vissa cellvärden i excel från vb och sedan skriva in nya värden i andra celler utifrån de cellvärden jag har fått
Förklara gärna hur detta skall gå till Sv: Hämta värde från Excel
Vad jag menar med att spela in ett makro är inte att bara spela in ett makro. Det jag menar är att man spelar in ett makro som fungerar under en viss förutsättning (och detta gäller som sagt inte det där med textfilen).
Koden som genereras under inspelningen beskriver då en kod som fungerade vid detta tillfälle. Redigera koden så att den blir mer generell.
Denna kod kan du sedan använda antingen direkt i VB eller genom att du startar makrot från vb.
/Niklas Jansson