Sub COR_Summery()
Dim sheetname
On Error Resume Next
sheetname = "Ergebnis"
Sheets(sheetname).Select
Sheets(sheetname).Delete
On Error GoTo 0
Set sumsheet = Sheets.Add
sumsheet.Name = sheetname
sumsheet.Move Before:=Sheets(1)
sumsheet.Range("A1").Value = "Datum"
sumsheet.Range("B1").Value = "Name"
sumsheet.Range("C1").Value = "Strasse"
sumsheet.Range("D1").Value = "Ort"
SumLineCount = 2
For Each ws In Worksheets
sumsheet.Cells(SumLineCount, 1).Value = ws.Cells(14 , 6 )
sumsheet.Cells(SumLineCount, 2).Value = ws.Cells(9 , 1 )
sumsheet.Cells(SumLineCount, 3).Value = ws.Cells(10 , 1 )
sumsheet.Cells(SumLineCount, 4).Value = ws.Cells(11 , 1 )
SumLineCount = SumLineCount + 1
Next ws
MsgBox ("Done!")
End Sub
Sub OutlookItems()
Dim OutlookApp As Object
Set OutlookApp = CreateObject("Outlook.Application")
Dim Addresses As New Collection
If MsgBox("Do you really want to generate the AVs?", vbYesNo + vbCritical + vbDefaultButton2, "Confirm Distribution") <> vbYes Then
Exit Sub
End If
receivers = "receiver@address.com"
' ActiveWorkbook.Save
i = 3
While Worksheets("items").Cells(i, 1) <> ""
With OutlookApp.CreateItem(olMailItem)
.Body = Worksheets("items").Cells(i, 2)
.Subject = "avc#new " & Worksheets("items").Cells(i, 3) & " " & Worksheets("items").Cells(i, 1)
.To = receivers
.send
End With
i = i + 1
Wend
End Sub
Sub CreatePivotData()
'startingrow
'in which row is the table header
tableHeader = 1
i = tableHeader + 1
'colum with loop criteria
datacolum = 6
'name of sheet to be run through
sourceSheet = "raw"
'name of sheet to store the data onto
targetsheet = "rawPivot"
Dim newSheet As Worksheet
On Error Resume Next
Worksheets(targetsheet).Delete
On Error GoTo 0
Set newSheet = Worksheets.Add()
newSheet.Name = targetsheet
targetcount = 1
While Worksheets(sourceSheet).Cells(i, datacolum) <> ""
' in which colum do the table start?
xPos = 11
While Worksheets(sourceSheet).Cells(tableHeader, xPos) <> ""
If Worksheets(sourceSheet).Cells(i, xPos).Value <> "" Then
newSheet.Cells(targetcount, 1).Value = Worksheets(sourceSheet).Cells(i, datacolum).Value
newSheet.Cells(targetcount, 2).Value = Worksheets(sourceSheet).Cells(tableHeader, xPos).Value
newSheet.Cells(targetcount, 3).Value = Worksheets(sourceSheet).Cells(i, xPos).Value
targetcount = targetcount + 1
End If
xPos = xPos + 1
Wend
i = i + 1
Wend
End Sub
Liegen Daten nur als Matrix vor,
| C1 | C2 | C3 | |
| R1 | a | b | c |
| R2 | d | e | f |
| R3 | g | h | i |
so kann man sie in eine Listenform überführen, indem man einen numerischen Index durch Teiler und Teilerrest in eine Excel- Zellenadressierung umrechnet und sich so per Formel den 1.. ,2.. ,3.. Wert aus der Tabelle holt:
| indizierter Zugriff auf den Tabelleninhalt | |||
|---|---|---|---|
| Index | Reiheninhalt Rx | Reiheninhalt Cx | Tabelleninhalt |
1 | =INDIRECT(ADDRESS(y_offset+FLOOR($index/tabellenbreite;1);x_offset)) | =INDIRECT(ADDRESS(y_offset;x_offset+MOD($index;tabellenbreite))) | =INDIRECT(ADDRESS(y_offset+FLOOR($index/tabellenbreite;1);x_offset+MOD($index;tabellenbreite))) |
2 | =… | =… | =… |
..n | =… | =… | =… |
Die unterschiedlichsten Tools bieten die Möglichkeit, enthaltene VBA- Scripte aus Excel-Daten zu extrahieren. Auf Anhieb geklappt hat zum Beispiel olevba von https://github.com/decalage2/oletools/wiki/olevba
olevba excel.xls
schreibt die enthaltenen Scripte in die Standardausgabe