Új hozzászólás Aktív témák
-
Zalanius
tag
Szerintem elég egy If, ha a pénteket vesszük bázisnak, és jól értelmeztem az eddigieket, azaz február 9-15. között kell március 1-jét kihozni. Ha az az egy If nincs, akkor is csak péntekenként ugrana +1 hetet. Excel-VBA-ban valahogy így:
Dim fri%, add%, d1 As Date, d2 As Date
fri = Weekday(Now, vbFriday)
add = 14
If fri <> 1 Then add = add + 8 - fri
d1 = Now
d2 = DateAdd("d", add, d1)
MsgBox d2 -
Zalanius
tag
1-2 ötlet:
1. mintha nem volna a config hozzárendelve cdoMail objectedhez. Valami ilyesmit hiányolok:Set cdoMail.Configuration = cdoConf
Amúgy és a továbblépéshez:
- attachment nélkül megy?
- próbáld ki a .Update beillesztését is még a config blokkjának a végén
- ugye próba esetén már nem maradnak kommentben az autentikációs sorokVégül pedig: mit mond az Err? Lehetne mondjuk egy Goto címkés blokk az onerrornál, amiben érdemes megnézni, hogy mi az Err.Description
-
Zalanius
tag
válasz
Rellind #3073 üzenetére
1000+1 ok lehet, ennyi infóból nem lehet megmondani, hol csúszik el a dolog szemantikailag. Azokból, hogy "form" és "feladat", arra tippelnék, hogy valami gombklikk vagy hasonló eseményre várnád, hogy egy adott kódrészlet meginduljon, de innentől bizonytalan, hogy mi is történik. Breakpointokkal, lépésenkénti debuggal kellene kezdeni.
-
Zalanius
tag
Ehhez nem kell makró, elég egy ^p Replace. Szemléletesebben itt.
-
Zalanius
tag
Excelben, VBA-val akarod ezt megoldani? Vagy valamilyen dotnetes nyelven inkább?
Ha előbbi, akkor nem igazán látom, mi akasztott meg, ha már a feladat lényege elkészült. A 2-es ponthoz segíthet például ez:
Option Base 1
Function GetFileNames(directoryPath As String) As String()
Dim namepathlist() As String
Dim fshelper As Object
Dim targetdir As Object
Dim filecnt%, i%
On Error Resume Next
Set fshelper = CreateObject("Scripting.FileSystemObject")
Set targetdir = fshelper.GetFolder(directoryPath)
filecnt = targetdir.Files.Count
If filecnt > 0 Then
ReDim namepathlist(filecnt, 2)
i = 1
For Each f In targetdir.Files
namepathlist(i, 1) = f.Name
namepathlist(i, 2) = f.path
i = i + 1
Next
End If
On Error GoTo 0
GetFileNames = namepathlist
End FunctionPersze nem biztos, hogy érdemes külön függvényt írni csak ezért, és akár a Dir() függvényre is rá lehet nézni, aztán amelyik egyszerűbb, azzal menni tovább.
Ami meg a 3. pontot illeti, ezt nem így csinálnám, de ennek csak praktikus okai vannak. Mielőtt az egész 50-es iteráció elindul, azelőtt kellene beolvasni változókba az összes előírt fájlnevet és jelszót, ezután jöhet a könyvtár aktuális tartalma, lásd fent, és végül egy olyan iteráció, ami az aktuális listán megy végig, és ha talál az adott példányhoz jelszót, akkor elvégzi a már kész lépéseket.
-
Zalanius
tag
válasz
Bobrooney #3050 üzenetére
Ez félig bugnak tűnik, de található rá magyarázat. A szürke popup kivételével sikerült is reprodukálnom. A cellához tartozó link nem egy egyedi string érték, hanem egy collection. Két cella egyesítésekor az első cella linkje marad csak meg, a többié elveszik, eddig rendben. Ha ezután módosítod a grafikus nézetben a linket, akkor a háttérben egy .Add() függvényt használhat az Excel. Ez csak tipp, de eléggé gyanús. Mi történik ezután: az egyesített cella első részcellájában KETTŐ link lesz, az (1) indexen a régi, a (2) indexen az új. A többi részcellában eddig semmi nem volt, ezért oda az (1) indexen az új kerül.
Tegyük fel, hogy az A oszlopban vannak a linkes cellák, némelyik egyesített. Ekkor egy teljeskörű teszthez például bevethető ez, most 4 sort feltételezve:
Dim rowcount%
rowcount = 4
For i = 1 To rowcount
If Range("A1").Offset(i - 1, 0).Hyperlinks.Count > 0 Then
For j = 1 To Range("A1").Offset(i - 1, 0).Hyperlinks.Count
MsgBox Range("A1").Offset(i - 1, 0).Hyperlinks(j).Address, vbOKOnly, _
Range("A1").Offset(i - 1, 0).AddressLocal & ", index: " & j & _
", full count: " & Range("A1").Offset(i - 1, 0).Hyperlinks.Count
Next
End If
NextHa a problémádat jól leírja a fenti, és VBA-ban kell feldolgoznod a linkeket, akkor a Count tulajdonságot kell indexként használni, és így mindig a legutoljára beállított linket olvassa a kód.
Persze van egy olyan olvasata is ennek az enyhén bugos helyzetnek, hogy formailag szép dolog az egyesített cella, de amint a tábla célja nem a külsőségekről szól, hanem valamilyen automatizált feldolgozásról, ott részemről csak felesleges nyűg.
-
Zalanius
tag
válasz
Bobrooney #3045 üzenetére
Ez elég furcsa, efféle url encodingot automatikusan nem kellene kapnod, kipróbáltam saját fájlban is, simán benne hagyta a szóközöket. Van egyébként olyan beépített függvény Encodeurl néven, ami ilyen átalakításokat csinál, de a fordított irányról nem tudok (2013-assal bezárólag). Kerülő úton lehet megpróbálni, mondjuk cserékkel, lásd például itt.
-
Zalanius
tag
válasz
Bobrooney #3042 üzenetére
Kipróbáltam két oszloppal, 10 ezer sorban, de nehezítésképpen úgy, hogy az első 5000-ben csak X volt mindenhol, és az egyik gyümölcsnél később is csak X volt. Nem is igazán mérhető a futásidő, fél másodpercnél is kevesebb. Tehát vagy rengeteg oszlopod lehet, vagy sok százezer sor, vagy még egyéb tényezők. De a 10 perc mindenképpen túlzás.
Tudom h nem kértél konkrétumot, de csak bemásolok ide egy rövidke scriptet, egyszerű megközelítésben, valami támpontot adhat azért.
Option Base 1
Sub t()
Dim gimilc()
Dim vannemX()
Dim n%, i%
Dim g As String
n = 1
ReDim Preserve gimilc(n)
ReDim Preserve vannemX(n)
gimilc(1) = Cells(2, 1).Value
vannemX(1) = False
If Cells(2, 2).Value <> "X" Then
vannemX(1) = True
End If
For i = 3 To 10000
g = Cells(i, 1).Value
Dim gindex%
gindex = -1
For j = 1 To n
If gimilc(j) = g Then
gindex = j
Exit For
End If
Next
If gindex = -1 Then
n = n + 1
ReDim Preserve gimilc(n)
ReDim Preserve vannemX(n)
gimilc(n) = g
vannemX(n) = False
If Cells(i, 2).Value <> "X" Then vannemX(n) = True
Else
If vannemX(gindex) = False Then
If Cells(i, 2).Value <> "X" Then vannemX(gindex) = True
End If
End If
Next
End Sub -
Zalanius
tag
Valami ilyesmire lesz akkor szükség. Ez most C#, a szélesség, fájlnév stb. átírandó, de a lényeg ugyanaz.
wp.Range.Text = "line1";
wp.Range.Paragraphs.Add();
Shape shape = wd.Shapes.AddShape(1, 0, 0, 200, 100);
shape.Fill.UserPicture(@"C:\kep.png");
InlineShape inlineShape = shape.ConvertToInlineShape();
inlineShape.Range.Cut();
wp.Range.Paste();
wp.Range.Paragraphs.Add();
wp = wd.Content.Paragraphs.Add();
wp.Range.Text = "Line2";Lehet még variálni ezeket a range meg paragraph dolgokat, hozzáfűzéssel új object helyett stb. biztos van sokkal elegánsabb út is, ha valaki rászánja az időt. Ami ezeknél fontosabb, hogy ha ezután elmentjük a doksit, egy rakás referencia marad még lógva, azokat a COM dolgokat is illik eltakarítani. Tippek bővebben itt.
-
Zalanius
tag
Az első tipp látatlanban is, hogy ugyanannak a range objectnek a szövegét íratod át a második alkalommal is. Ha a beírandó részek különállóak, akkor például meg lehetne ismételni a Paragrahps.Add() hívást.
wp = wd.Content.Paragraphs.Add
wp.Range.Text = "This text will be d"
...
wp = wd.Content.Paragraphs.Add
wp.Range.Text = "Foo" & Chr(10) & Chr(11) -
Zalanius
tag
Nem tudom teljesen reprodukálni az alaphelyzetet, de van itt egy egyszerű megoldás. Új standard modulba beírtam ezt:
Sub FormatZoleehDates()
For Each c In ActiveSheet.UsedRange.Cells
c.NumberFormat = "m/d/yyyy"
Next
End SubNyilván a numberformatot lehet még alakítani. Kipróbálás: beírtam pár dátumot egy tartományba, átkapcsoltam custom -> general beállításra a formatot, utána kijelöltem, és ráküldtem a fentit.
Új hozzászólás Aktív témák
Hirdetés
- E-roller topik
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Kazy Computers - Fehérvár - Megbízható?
- Amatőr csillagászat
- Kerékpárosok, bringások ide!
- PlayStation 5
- Elektromos cigaretta 🔞
- AliExpress tapasztalatok
- Goddess of Victory:Nikke
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- További aktív témák...
- LG 34GS95UE - 34" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- ÁRGARANCIA!Épített KomPhone i3 10105F 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! MSI B550 R7 5700X 32GB DDR4 500GB SSD RTX 3070 8GB ZALMAN Z1 Plus Be quiet! 650W
- AKCIÓ! Apple iPad Pro 11 2024 1TB WiFi + Cellular tablet garanciával hibátlan működéssel
- Így lesz a Logitech MX Keys magyar billentyűzetes
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest