Kalendersynchronisation per App:
- DAVx⁵ – CalDAV/CardDAV-Client (kostenfrei bei F-Droid)
Kalendersynchronisation per App:
Nextcloud ist eine Software zur Server-basierten Datenspeicherung. Für den Zugriff auf die Daten stehen Weboberflächen, Desktopclients und auch Apps für mobile Endgeräte bereit. Bereits in der Grundinstallation werden umfangreiche Funktionen bereitgestellt. Der Funktionsumfang kann durch Plugins erweitert werden.
Die Installation von NextCloud kann auf verschiedenen Wegen erfolgen:
Manchmal kommt es vor, dass durch das Einfügen von Abschnittswechseln die Seitenzahlen seltsam durchnumeriert (z.B. 0/20) sind.
Seitenzahlen erst. einfügen, wenn das Dokument “fertiggestellt” ist (wenn alle Abschnittswechsel bereits vorher eingefügt worden sind).
Wenn nachträglich Abschnittswechsel eingefügt wurden, dann kann im Menü mit
Menü -> Einfügen -> Seitenzahl -> Seitenzahlen formatieren ... -> Seitennummerierung -> Fortsetzen mit vorherigem Abschnitt
die Seitenzahlennummerierung pro Abschnitt weitergeführt werden. Es ist dabei darauf zu achten, dass nicht wieder für den allerersten Abschnitt diese Eigenschaft gesetzt wird, da sonst auch auf dem Deckblatt Seitenzahlen stehen.
Alle Seitenzahlen im gesamten Dokument können wieder im Menü über
Menü -> Einfügen -> Seitenzahl -> Seitenzahlen entfernen
entfernt werden.
Der Aufruf der versteckte Konfigurationsseiten erfolgt jeweils durch Eingabe folgender Kommandos in der URL-Zeile des Browsers:
about:flags
chrome://flags
und about://flags
about:config
Ab Version 4.0.17 kann man aus jeder installierten Version von Pain.NET eine Portable Version erstellen.
PaintDotNet.exe.config
editieren und im Abschnitt appSettings
den Eintrag add key="PaintDotNet.EnablePortableMode" value="true"
hinzufügen:
<?xml version="1.0"?> <configuration> <runtime> <gcAllowVeryLargeObjects enabled="true"/> <generatePublisherEvidence enabled="false"/> <legacyCorruptedStateExceptionsPolicy enabled="true"/> <loadFromRemoteSources enabled="true"/> </runtime> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/> </startup> <appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="true"/> <add key="PaintDotNet.EnablePortableMode" value="true" /> </appSettings> </configuration>
PaintDotNet.exe.config
speichernPaintDotNet.exe
von dort gestartet werdenMenü -> Speichern unter … -> Dateityp “CSV (Trennzeichen-getrennt) (*.csv)”
Windows -> Systemsteuerung -> Region und Sprache -> Formate -> Weitere Einstellungen … -> Listentrennzeichen
Menü -> Speichern unter … -> Dateityp “Text (Tabstopp-getrennt) (*.txt)”
Weiterführende Infos: Link
Option Explicit Sub SAP() Dim oSapGui As Object ' Extras -> Verweise ... -> Durchsuchen ... ' C:\Program Files\SAP\FrontEnd\SAPgui\sapfewse.ocx ' Aktivieren: SAP GUI Scripting API Dim oApp As SAPFEWSELib.GuiApplication Dim oConn As SAPFEWSELib.GuiConnection Dim oSession As SAPFEWSELib.GuiSession Dim oSessionInfo As SAPFEWSELib.GuiSessionInfo Dim oWindow As SAPFEWSELib.GuiMainWindow Dim oComponent As SAPFEWSELib.GuiComponent Dim oSubComponent As SAPFEWSELib.GuiComponent Debug.Print "----------" ' Ref auf SAPGUI Set oSapGui = GetObject("SAPGUI") If IsObject(oSapGui) Then ' Ref auf ScriptingEngine Set oApp = oSapGui.GetScriptingEngine If IsObject(oApp) Then Debug.Print oApp.ID Debug.Print oApp.Name ' Liste Connections For Each oConn In oApp.Children Debug.Print "|--" & oConn.ConnectionString Debug.Print "| " & oConn.Description Debug.Print "| " & oConn.ID Debug.Print "| " & oConn.Name ' Sessions sind nur verfügbar, wenn RZ11 Parameter sapgui/user_scripting = TRUE ' Liste Sessions For Each oSession In oConn.Children Debug.Print " |--" & oSession.ID Debug.Print " | " & oSession.Busy ' Ref auf Session Info Set oSessionInfo = oSession.Info If IsObject(oSessionInfo) Then Debug.Print " |--" & oSessionInfo.SystemSessionId Debug.Print " | " & oSessionInfo.ApplicationServer Debug.Print " | " & oSessionInfo.SystemName Debug.Print " | " & oSessionInfo.Client Debug.Print " | " & oSessionInfo.Transaction Debug.Print " | " & oSessionInfo.User End If ' Ref auf Fenster For Each oWindow In oSession.Children Debug.Print " |--" & oWindow.ID Debug.Print " | " & oWindow.Text Debug.Print " | " & oWindow.Left Debug.Print " | " & oWindow.Top Debug.Print " | " & oWindow.Width Debug.Print " | " & oWindow.Height ' Liste mit Komponenten im Fenster For Each oComponent In oWindow.Children Debug.Print " |--" & oComponent.ID Debug.Print " | " & oComponent.Name Debug.Print " | " & oComponent.Type Debug.Print " | " & oComponent.ContainerType ' Liste mit Unterkomponenten (können wiederum auch Unterkomponenten haben -> besser rekursiv aufrufen) For Each oSubComponent In oComponent.Children Debug.Print " |--" & oSubComponent.ID Debug.Print " | " & oSubComponent.Name Debug.Print " | " & oSubComponent.Type Debug.Print " | " & oSubComponent.ContainerType Next Next Next Next Next End If End If Set oSubComponent = Nothing Set oComponent = Nothing Set oWindow = Nothing Set oSessionInfo = Nothing Set oSession = Nothing Set oConn = Nothing Set oApp = Nothing Set oSapGui = Nothing End Sub
Option Explicit Sub SAP() Dim oSapGui As Object ' Extras -> Verweise ... -> Durchsuchen ... ' C:\Program Files\SAP\FrontEnd\SAPgui\sapfewse.ocx ' Aktivieren: SAP GUI Scripting API Dim oApp As SAPFEWSELib.GuiApplication Dim oConn As SAPFEWSELib.GuiConnection Dim oSession As SAPFEWSELib.GuiSession ' Ref auf SAPGUI Set oSapGui = GetObject("SAPGUI") If IsObject(oSapGui) Then ' Ref auf ScriptingEngine Set oApp = oSapGui.GetScriptingEngine If IsObject(oApp) Then ' Sind Connections vorhanden? If oApp.Children.Count > 0 Then ' 1. Connection der App Set oConn = oApp.Children(0) ' 1. Session der Connection Set oSession = oConn.Children(0) ' Fenster minimieren oSession.FindById("wnd[0]").Iconify ' SE16 starten oSession.StartTransaction ("SE16") ' Selektionsbild ' Tabelle MARA oSession.FindById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "MARA" ' Button "Tabelleninhalt (F7)" oSession.FindById("wnd[0]/tbar[1]/btn[7]").Press ' max. 10 Einträge oSession.FindById("wnd[0]/usr/txtMAX_SEL").Text = "10" ' Button "Ausführen (F8)" oSession.FindById("wnd[0]/tbar[1]/btn[8]").Press ' ALV-Ansicht aktivieren ' Menü suchen Dim oMenu As GuiComponent Set oMenu = oSession.FindById("wnd[0]/mbar") ' Menüpunkt "Einstellungen" Dim oOptions As GuiComponent Set oOptions = oMenu.FindByName("Einstellungen", "GuiMenu") ' Menüpunkt "Benutzerparameter ..." Dim oUserPar As GuiComponent Set oUserPar = oOptions.FindByName("Benutzerparameter...", "GuiMenu") oUserPar.Select ' Databrowser -> Ausgabeliste -> ALV-Grid-Darstellung Dim oALVParam As GuiComponent Set oALVParam = oSession.FindById("wnd[1]/usr/tabsG_TABSTRIP/tabp0400/ssubTOOLAREA:SAPLWB_CUSTOMIZING:0400/radRSEUMOD-TBALV_GRID") ' wenn ALV-Ansicht noch nicht ausgewählt, dann anhaken If oALVParam.Selected = vbFalse Then oALVParam.Select End If ' Einstellungen übernehmen oSession.FindById("wnd[1]/tbar[0]/btn[0]").Press Set oUserPar = Nothing Set oOptions = Nothing Set oMenu = Nothing ' ALV-Grid holen Dim oALV As GuiComponent Set oALV = oSession.FindById("wnd[0]/usr/cntlGRID1/shellcont/shell") ' Zeilen Dim iRows As Integer iRows = oALV.RowCount() - 1 ' Spalten Dim iCols As Integer iCols = oALV.ColumnCount() - 1 ' Spaltentitel lesen Dim oColumns Set oColumns = oALV.ColumnOrder Dim c As Integer Dim r As Integer ' Überschriften einfügen For c = 0 To iCols ActiveWorkbook.ActiveSheet.Cells(1, c + 1) = oColumns(c) Next ' Daten einfügen For r = 0 To iRows ' ALV-Grid weiterscrollen, damit ein Update des Inhalts erfolgt oALV.FirstVisibleRow = r For c = 0 To iCols ActiveWorkbook.ActiveSheet.Cells(r + 2, c + 1) = oALV.GetCellValue(r, CStr(oColumns(c))) Next Next ' Fenster maximieren oSession.FindById("wnd[0]").Maximize Else MsgBox "Bitte an einem SAP-System anmelden." End If End If End If Set oSession = Nothing Set oConn = Nothing Set oApp = Nothing Set oSapGui = Nothing End Sub
Option Explicit Sub SAP() Dim oSapGui As Object ' Extras -> Verweise ... -> Durchsuchen ... ' C:\Program Files\SAP\FrontEnd\SAPgui\sapfewse.ocx ' Aktivieren: SAP GUI Scripting API Dim oApp As SAPFEWSELib.GuiApplication Dim oConn As SAPFEWSELib.GuiConnection Dim oSession As SAPFEWSELib.GuiSession ' Ref auf SAPGUI Set oSapGui = GetObject("SAPGUI") If IsObject(oSapGui) Then ' Ref auf ScriptingEngine Set oApp = oSapGui.GetScriptingEngine If IsObject(oApp) Then ' Zu System verbinden, wobei <SYSTEM> == vollst. (!) Systemname aus SAP Logon Pad -> Verbindungen Set oConn = oApp.OpenConnection("<SYSTEM>") If IsObject(oConn) Then ' 1. Session der Connection Set oSession = oConn.Children(0) ' Username und Passwort setzen oSession.FindById("wnd[0]/usr/txtRSYST-BNAME").Text = "<USER>" oSession.FindById("wnd[0]/usr/pwdRSYST-BCODE").Text = "<PASS>" ' Enter-Taste oSession.FindById("wnd[0]").SendVKey 0 ' SE16 starten oSession.StartTransaction ("SE16") End If End If End If Set oSession = Nothing Set oConn = Nothing Set oApp = Nothing Set oSapGui = Nothing End Sub
Option Explicit Sub GetMATNR() ' Verbindung zu SAP herstellen Dim oSAP As Object Set oSAP = CreateObject("SAP.Functions") ' Verbindungsdaten vorbelegen oSAP.Connection.ApplicationServer = "1.1.1.1" ' IP des Appl-Servers (SM51->Details) oSAP.Connection.SystemNumber = "01" ' Systemnummer, meißt im Namen des Appl-Servers enthalten oSAP.Connection.System = "XD1" ' Entwicklungs-, Test-, Produktivsystem oSAP.Connection.Client = "100" ' Mandant oSAP.Connection.Language = "DE" ' Sprache "EN", "DE" ... ' RFC-Login: Logon-Fenster anzeigen If oSAP.Connection.Logon(0, False) = True Then ' BAPI_MATERIAL_GET_DETAIL abfragen Dim oFuBa As Object Set oFuBa = oSAP.Add("BAPI_MATERIAL_GET_DETAIL") ' EXPORTING Dim e_material As Variant Set e_material = oFuBa.Exports("MATERIAL") e_material.Value = ActiveWorkbook.ActiveSheet.Cells(1, 2) ' MATNR in B1 ' IMPORTING Dim i_material_general_data As Variant Set i_material_general_data = oFuBa.Imports("MATERIAL_GENERAL_DATA") Dim i_return As Variant Set i_return = oFuBa.Imports("RETURN") ' Wenn Fuba-Aufruf ok If oFuBa.Call = True Then ' RETURN auswerten If i_return.Value("TYPE") = "E" Then ' Bei Fehler: Fehlermessage ausgeben in B2 ActiveWorkbook.ActiveSheet.Cells(2, 2) = i_return.Value("MESSAGE") Else ' Wenn OK: Materialkurztext in B2 ActiveWorkbook.ActiveSheet.Cells(2, 2) = i_material_general_data.Value("MATL_DESC") End If End If End If End Sub
Sub RFCReadTable() ' https://www.linkedin.com/pulse/connect-sap-r3-call-custom-fm-from-ms-excel-erkan-kopuz ' https://saplsmw.com/Import_tables_directly_into_Access_from_SAP_using_RFCs ' http://sapass.metro.client.jp/Sap_Active_X/UseFunctionControl.htm Set oSAP = CreateObject("SAP.Functions") oSAP.Connection.ApplicationServer = "1.1.1.1" ' IP des Appl-Servers (SM51->Details) oSAP.Connection.SystemNumber = "01" ' Systemnummer, meißt im Namen des Appl-Servers enthalten oSAP.Connection.System = "XA1" ' Entwicklungs-, Test-, Produktivsystem oSAP.Connection.Client = "100" ' Mandant oSAP.Connection.Language = "DE" ' Sprache "EN", "DE" ... oSAP.Connection.User = "USER1" ' SAP-User 'oSAP.Connection.Password = "xyz" ' SAP-Passwort oSAP.Connection.UseSAPLogonIni = False ' RFC-Login, wobei ' Logon(0, False): Logon-Fenster anzeigen ' Logon(0, True): Silent logon, Passwort muss gesetzt sein If oSAP.Connection.Logon(0, False) = True Then Dim oFuBa As Object ' FuBa RFC_READ_TABLE abfragen Set oFuBa = oSAP.Add("RFC_READ_TABLE") ' EXPORTING Set e_query_table = oFuBa.Exports("QUERY_TABLE") Set e_delimiter = oFuBa.Exports("DELIMITER") Set e_rowCount = oFuBa.Exports("ROWCOUNT") e_query_table.Value = "STXH" ' Tabelle STXH e_delimiter.Value = ";" ' Spalten mit ";" getrennt e_rowCount.Value = "100" ' max. 100 Datensätze lesen, 0 = alle ' TABLES Set t_options = oFuBa.Tables("OPTIONS") Set t_fields = oFuBa.Tables("FIELDS") Set t_data = oFuBa.Tables("DATA") ' WHERE-Bedingung t_options.AppendRow t_options(1, "TEXT") = "TDOBJECT EQ 'TEXT'" ' Welche Spalten sollen gelesen werden t_fields.AppendRow t_fields(1, "FIELDNAME") = "TDOBJECT" t_fields.AppendRow t_fields(2, "FIELDNAME") = "TDNAME" t_fields.AppendRow t_fields(3, "FIELDNAME") = "TDID" t_fields.AppendRow t_fields(4, "FIELDNAME") = "TDTITLE" t_fields.AppendRow t_fields(5, "FIELDNAME") = "TDLUSER" If oFuBa.Call = True Then ' Schnittstellenparameter "TABLES-DATA" holen ' Rückgabe in Excel-Sheet einfügen Dim iRow As Integer iRow = 1 ' Rückgabemenge beinhaltet Strings, die mit dem festgelegten Separator ";" getrennt sind For Each oDataLine In t_data.Rows ' Spalten einer Datenzeile anhand des Separators ";" aufsplitten Dim vFields As Variant vFields = Split(oDataLine(1), ";") ' Inhalt der Spalten in die Zellen schreiben For iCol = LBound(vFields) To UBound(vFields) ActiveWorkbook.Sheets(1).Cells(iRow, iCol + 1) = Trim(vFields(iCol)) Next iCol iRow = iRow + 1 Next Else ' Exception? MsgBox oFuBa.Exception End If ' Logoff oSAP.Connection.Logoff Else ' Kein Login möglich MsgBox "Login fehlgeschlagen." End If End Sub