Makro – die neusten Beiträge

Sicherheitsrisiko von Office-Makros im Privaten- vs. Unternehmensumfeld

Die Sicherheit von Makros ist vor allem im Unternehmensumfeld stark umstritten bzw. das Risiko hinter der Nutzung eindeutig und klar. Trotz der unterschiedlichen Methoden wie Passwörter oder Signaturen verzichten viele Unternehmen komplett auf Makros und sperren diese komplett, z.B. via Policies.

Persönlich ist Office bzw. Makros einfach zu bequem und vorteilhaft: Office ist ein weit verbreitetes Tool, zukunftssicherer Support, keine zusätzliche Installation von Software etc. ... Da bösartige Makros oft bereits den Schadcode enthalten und im Rahmen von Phishing oder aus dem Internet in Unternehmen gelangen und Schaden anrichten, frage ich mich wie es mit der Sicherheit dem Einsatz im persönlichen Gebrauch aussieht.

Meiner Meinung nach sind Makros hauptsächlich im Unternehmensumfeld sicherheitskritisch und auch meistens nur dann, wenn diese von nicht-vertrauenswürdigen Quellen (z.B. dem Internet) stammen. Im persönlichen Gebrauch (inkl. Absicherungen wie Passwörter und Signaturen) sehe ich kein großes Sicherheitsproblem die Makros wegen allgemeinen Umstrittenheit komplett zu meiden. Wie seht ihr das?

Zu folgenden Fragen (im privaten Gebrauch) bin ich Froh um eure Meinungen und Input:

  • Kann ich mich mit einem Makro-Passwort gut absichern oder sind diese mittlerweile zu leicht zu knacken?
  • Reicht eine Signatur von Markos aus?
  • Welche weiteren Einstellungen kann ich vornehmen, wenn ich Makros sicher einsetzen möchte?
  • Sehr komplexes und fortgeschrittenes Szenario: Gibt es die Gefahr, dass ich mir Schadsoftware herunterlade welche bereits vorhandene (gutartige) Makros auf meinem PC erkennt und diese dann so manipuliert dass diese Schadcode ausführen können? Ist das realistisch?
Microsoft Excel, Microsoft Office, Makro, VBA

Spalten via VBA ein und Ausblenden lassen, Wenn "Name" im Dropdown Menü?

Hallo Zusammen,

ich erarbeite aktuell ein Formular aus, dass mir und meinen Kollegen die Arbeit erleichtern soll. Jedoch komme ich gerade in VBA nicht weiter.

Hier ein Screenshot vom aktuellen Prototypen

Folgendes ist geplant

1. Anfragetyp
hat 3 Werte, nennen wir Sie "A", "B" und "C".
1.1. Je nach ausgewähltem Wert sollen sich Spalten Ein- und Ausblenden. Wenn kein Wert drinnen steht, aber "Bitte Auswählen" wie oben im Screenshot angezeigt, dann sollen alle Spalten eingeblendet sein.

2. Zusatzanfrage
hat auch 3 Werte, dieselben wie oben "A", "B" und "C".
2.1. Hier möchte ich, dass wenn ich beim Anfragetypen "A" ausgewählt habe, ich die Möglichkeit habe, separat bei Zusatzanfrage "B" oder "C" auszuwählen, oder halt in verschiedenen variationen.
2.2. Meine Problematik hierbei ist, dass wenn ich bei Anfragetyp "A" Ausgewählt habe, dann sollen sich alle anderen Typen ausblenden, sprich, der Punkt Zusatzanfrage muss den Anfragetypen wieder überschreiben.
2.3. Wenn Option ausgewählt ist, soll nichts passieren. Dies dient lediglich als Info.

Vielleicht denke ich, dass auch einfach komplizierter als es ist. :)

3.1. Lieferantenmenü
Für das Dropdownmenü "Lieferant" werde ich ebenfalls über VBA Spalten Ein- und Ausblenden lassen. Ich habe hier 27 verschiedene Daten, die sich über ebenfalls verschiedene Spalten erstecken.
Meine nächste Problematik ist folgende, dass ich bspw. Spalte "F" und dann "S - Z" ausblenden lassen muss, der Rest in den Spalten davor und auch danach soll aber eingeblendet bleiben. Wie kriege ich das vernünftig in den Code von VBA?

Zusatzinformation: Ich bin ein kompletter Laie in VBA und habe davor damit noch nie gearbeitet, versuche mich aber gerade im Coding ein wenig einzulesen. Wenn Ihr mir zusätzlich zu euren Vorschlägen eine kurze Erklärung geben könntet, wie und warum Ihr das genau so aufgebaut wie Ihr es getan habt, würde mir das sehr für die Zukunft helfen.

Ich danke euch vielmals für eure Unterstützung.

Mit freundlichen Grüßen
Ark

Bild zum Beitrag
Microsoft Excel, Makro, VBA, Formel, Excel-Formel

Excel 2016 Makros: Button zum Löschen bestimmter Zeilen?

Hey Leute,

ich arbeite derzeit intensiver an einer Excel-Tabelle, wodurch ich mich wahrscheinlich noch öfter mit Fragen rund um diese Tabelle melden werde, wenn ich mal nicht weiter weiß :D. Nun möchte ich diese Tabelle im nächsten Schritt mit Makros bereichern. Leider hatte ich bislang nahezu nichts mit Makros am Hut und benötige aus diesem Grund Hilfe.

Die dargestellte Tabelle bzw. der Ausschnitt soll zukünftig projektbezogen verwendet werden. Es handelt sich dabei um eine Funktionsliste, in der ich in Spalte B Bauteile auswähle, die ich in dem jeweiligen Projekt benötige. Da jedes Projekt individuell ist, habe ich in einigen Projekten mal 20 Bauteile, mal 50. Also nie ein im Voraus festgelegter Wert. Da in einem Projekt mehrere Anlagen vorhanden sein können, die jeweils so eine eigene Funktionsliste benötigen, möchte ich eine Schaltfläche implementieren, die mit einem Makro versehen ist. Durch Anklicken dieser Schaltfläche sollen Zeilen (nicht nur die Inhalte, sondern die gesamte Zeile) in einem bestimmten Bereich (vom dritten Bauteil bis zum letzten Bauteil) gelöscht werden. In dem Bildbeispiel z.B. würde ich wollen, dass die Zeilen 11 bis 17 gelöscht werden. Da es in einem anderen Projekt aber z.B. 20 Bauteile geben kann, müsste ich Zeile 11 bis 30 löschen. Die Ergebniszeile ganz am Ende ist unabhängig von der Tabelle und soll immer bestehen bleiben. Kann mir jemand bei dem Code helfen, um so ein "dynamisches Löschen" durch eine Schaltfläche zu ermöglichen? Unabhängig davon, wie viele Bauteile ich auswähle, soll immer nur bis zum letzten Bauteil gelöscht werden. :)

Bild zum Beitrag
Microsoft, Microsoft Excel, Microsoft Office, programmieren, Makro, VBA, Formel, Tabellenkalkulation, Excel-Formel, Office 365, Excel 2016

Excel VBA Makro Code?

Guten Tag zusammen,

Undzwar geht es darum das ich ein Makro erstellt habe der sieht so aus :

Sub Makro1()

' Makro1 Makro

'

   

  Range("D3").Select

  Application.CutCopyMode = False

  Selection.Copy

  Sheets("1M").Select

  Range("C6").Select

  ActiveSheet.Paste

  Sheets("Tabelle1").Select

  Range("J3").Select

  Application.CutCopyMode = False

  Selection.Copy

  Sheets("1M").Select

  Range("C7").Select

  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

    :=False, Transpose:=False

  Sheets("Tabelle1").Select

  Range("R3").Select

  Application.CutCopyMode = False

  Selection.Copy

  Sheets("1M").Select

  Range("C13").Select

  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

    :=False, Transpose:=False

  Range("D26").Select

  Application.CutCopyMode = False

  Selection.Copy

  Sheets("Tabelle1").Select

  Range("H3").Select

  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

    :=False, Transpose:=False

End Sub

Das Problem ist jetzt das ich möchte das er in der Excel Tabelle jede Zeile mit diesem Makro ausfüllt sprich er soll bei Zeile 3 anfangen und bis 322 weiterführen ich habe 2 Mappen 1. "Tabelle1" und "1M"

Tabelle1 hatt die 322 Zeilen aber er springt nicht zur jeder Zeile und die Zelle "D3" , "J3", "R3", "H3" sollten dann auf die nächste Zeile Springen Sprich "D4", "J4" , "R3" , "H4" wenn er auch in der 4 Zeile ist

die restlichen Zellen sollen festbleiben zugehörig zu Mappe "1M"

ich hoffe es ist verständlich was ich meinte :'D

Microsoft Excel, Makro, VBA, Code, Datenbank, VBA Excel

Makro mit VBA in Excel zerschossen, brauche dringend Hilfe!?

Hallo zusammen,

vorab schonmal, nein ich habe hier absolut 0% Ahnung hiervon und brauche dringend Hilfe!

Ich habe auf der Arbeit bei einer wichtigen Excel Datei eine neue Spalte eingefügt, was dafür gesorgt hat, dass eine wichtige Spalte rechts davon weiter nach rechts verschoben wurde um eine Zelle.

In dieser Spalte wurden Enddatum eingetragen und diese wurden mit einem Makro über VBA Absteigend von jüngerem Datum oben, nach späteren Datum nach unten hin sortiert.

Nachdem ich die neue Spalte zugefügt habe, funktionierte eins nach dem anderen nicht mehr richtig und ich war so dumm zu versuchen das Makro minimal anzugleichen, sodass es funktioniert und habe es dann getestet.

Dadurch habe ich es nur schlimmer gemacht...

Zudem kann ich jetzt nicht mal mehr in der Tabelle scrollen, zumindest in diesem Reiter, in einem anderen Reiter unten, kann ich scrollen in der Datei.

Der Text in VBA Stand jetzt:

Sub Sortieren()

'

' Sortieren Makro

'

'

  Rows("3:500").Select

  Range("B3").Activate

  ActiveWorkbook.Worksheets("Übersicht").Sort.SortFields.Clear

  ActiveWorkbook.Worksheets("Übersicht").Sort.SortFields.Add Key:=Range( _

    "H4:Hl34"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

    xlSortNormal

  With ActiveWorkbook.Worksheets("Übersicht").Sort

    .SetRange Range("A3:L500")

    .Header = xlYes

    .MatchCase = False

    .Orientation = xlTopToBottom

    .SortMethod = xlPinYin

    .Apply

  End With

  ActiveWindow.SmallScroll Down:=3

  ActiveSheet.Range("$A$3:$L$97").AutoFilter Field:=12, Criteria1:="="

  ActiveWindow.SmallScroll Down:=-12

End Sub

Bild zum Beitrag
Microsoft Excel, programmieren, Makro, VBA, VBA Programmierung, VBA Makro, VBA-Code, VBA Excel, makros erstellen

Excel VBA: Tabellenblätter bei gewissen Zellenwert ausblenden?

Hallo Zusammen,

Ich will mittels VBA ein Excel modifizieren, damit möglichst wenige Tabellenblätter angezeigt werden. In einem Tabellenblatt (z.B. "Auswahl") habe ich die Zellen C62, C88 und C114, die jeweils ein spezielles Tabellenblatt anzeigen sollen. Jedoch gibt es im Moment nur LZF-Meldungen.

Es soll jeweils bei "Yes" nichts angezeigt, bei "No" die entsprechende Tabelle eingeblendet werden.

Ansonsten sollen die "nicht betroffenen" Tabellen ausgeblendet bleiben

Hier der Code im Worksheet "DieseArbeitsmappe":

Private Sub Worksheet_Open()

'Beim Öffnen des Excels die betroffenen Blätter ausblenden
    ThisWorkbook.Worksheets("Tabelle4").Visible = False 
    ThisWorkbook.Worksheets("Tabelle5").Visible = False
    ThisWorkbook.Worksheets("Tabelle6").Visible = False
    
End Sub

In Blatt "Auswahl" (Tabelle7) habe ich folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)

   

‘Hier sind vorher noch andere IF-Regeln hinterlegt, die nur Reihen in Tabelle7 ein/ausblenden

   

    If Range("C62").Value = "No" Then 'Tabellenblätter einblenden, sobald in der jeweiligen Zelle "No" ausgewählt wird

        ThisWorkbook.Worksheets("Tabelle6").Visible = True

       

        Else

        ThisWorkbook.Worksheets("Tabelle6").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?

    End If

   

    If Range("C88").Value = "No" Then

        ThisWorkbook.Worksheets("Tabelle5").Visible = True

       

        Else

        ThisWorkbook.Worksheets("Tabelle5").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?

    End If

   

    If Range("C114").Value = "No" Then

        ThisWorkbook.Worksheets("Tabelle4").Visible = True

       

        Else

        ThisWorkbook.Worksheets("Tabelle4").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?

    End If

   

End Sub

Weshalb gibt es jeweils einen Fehler und wie kann ich diesen am einfachsten beheben?

Vielen Dank, Michael

Microsoft Excel, programmieren, Makro, VBA

Excel Makro, PDF versenden, Anhang klappt nicht?

Hallo, ich würde gerne eine Rechnung mit einem Makro erstellen. Soweit klappt das auch und die Mail öffnet sich auch, aber diese wird nicht als Anhang hinzugefügt. Ich komme leider nicht drauf. Ich denke, es liegt daran, dass er die Datei nicht findet, aber ich wüsste keinen Lösungsansatz. Hier der Code:

Dim Result As VbMsgBoxResult

Sub RechnungsnrUndDrucken()

Sheets("Rechnung_Video").Select

[D15] = [D15] + 1 'Rechnungsnummer 1 hochzählen

  Dim sCC As String

  Dim sName As String

  Dim sText As String

  Dim sObject As String

  Dim sCompany As String

  Dim sRefNr As String

  Dim sTempFileName As String

   

  If (CStr(ThisWorkbook.ActiveSheet.Name) = "Rechnung") Then

    Result = MsgBox("Rechnung fertig?", vbApplicationModal Or vbQuestion Or vbYesNo)

    If Result = vbNo Then Exit Sub

  End If

Const DateiPfad = "C:\Temp\"

  Dim DateiName As String

  

  DateiName = DateiPfad & Range("C15") & Range("D15") & ".pdf"

  Range("A1:F54").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

    DateiName, Quality:=xlQualityStandard, _

 IncludeDocProperties:=True, _

  IgnorePrintAreas:=False, _

  OpenAfterPublish:=False

      

Dim Nachricht As Object, OutApp As Object

Dim AWS As String

Set OutApp = CreateObject("Outlook.Application")

AWS = strFileName

'InitializeOutlook = True

Set Nachricht = OutApp.CreateItem(0)

With Nachricht

.Subject = "" & Range("A1") & "_" & Range("C15") & Range("D15")

.GetInspector.display

'.Attachments.Add ("C:\Temp\" & Range("C15") & Range("D15") & ".pdf")

End With

Set OutApp = Nothing

Set Nachricht = Nothing

End Sub

Computer, Microsoft Excel, E-Mail, Makro

VBA Dateiauswahl - Bei Abbruch Laufzeitfehler 5, jemand Ideen?

Hallo zusammen,

was müsste ich hinzufügen, um den Laufzeitfehler 5 zu umgehen? Wenn ich den VBA-Code ausführe, öffnet sich das Fenster für den Import von DAT-Dateien. Drücke ich auf Abbrechen, erscheint der Laufzeitfehler 5. Vermerkt wird der Code "Set F = fs.GetFolder(strPfad)". Wo und welchen Code müsste ich hinzufügen, um den Fehler zu beheben? Vielen Dank im Voraus. :)

Sub Schaltfläche1_Klicken()
'
'
'*** Öffnen von DAT-Dateien
Dim strText As String, strFilter As String

strText = "Bitte eine Auswertung Auswählen"
strFilter = "DAT-Dateien (*.DAT), *.DAT"""
strAuswahl = Application.GetOpenFilename(strFilter, 1, strText)
strPfad = Pfad_ermitteln(strAuswahl)
'
Set fs = CreateObject("Scripting.FileSystemObject")
Set F = fs.GetFolder(strPfad)
Set fc = F.Files

If ActiveSheet Is Nothing Then Workbooks.Add
For Each File In fc
    Zeile = Cells(65000, 1).End(xlUp).Row + 2
    strEinfügen = Cells(Zeile, 1).Address
    strAuswahl = File.Path

    'Einfügen
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & strAuswahl _
        , Destination:=Range(strEinfügen))
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileThousandsSeparator = ","
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
  End With
  Range(strEinfügen).QueryTable.Delete
Next
End Sub
_______________________________

 Function Pfad_ermitteln(ByVal strAuswahl As String) As String
 
 For i = Len(strAuswahl) To 1 Step -1
    If Mid(strAuswahl, i, 1) = "\" Then
        Pfad_ermitteln = Left(strAuswahl, i - 1)
        Exit Function
    End If
Next
End Function
Computer, Microsoft Excel, Microsoft Office, Makro, VBA, Code

Meistgelesene Beiträge zum Thema Makro