Hejterzy!
Jest tu kos kto agarnia Makra w Excel?
Mam gotowa tabele, jej celem jest zautomatyzowane wysyłane faktur/rachunków na email z bazy klienta.
Jedyny porblme jest taki, ze napisane Macro nie działa na MacOS.
Ktos mógłby mi pomóc w tym? jestem w stanie zpłacić.
#excel #programowanie #macos
dsol17

Jedyny porblme jest taki, ze napisane Macro nie działa na MacOS.

No pewnie,że może nie działać bo inne aplikacje i inny system a wysyłanie czegokolwiek z excela na email oznacza uruchamianie klienta pocztowego. Pomijając to,że zbyt sobie cenię anonimowość: Nie znam się na tyle,żeby ci to zrobić bo nie kumam różnic zachowania excela na maku i na windowsie i podejrzewam,że:


  • wersja excela na maca może być zjebana

  • wersja kodu na maca może być inaczej pisana

  • skrypt vba odwołuje się do systemu i na tym się wykrzacza.

  • możesz nie mieć zainstalowanego outlooka albo uruchomionej w office jakiej biblioteki.


Nawet ktoś pykający w VBA jak nie pracował z macami może mieć problem z tym gównem. To by trzeba przetestować na wirtualce jak to będzie działało albo mieć tego maca - a już łatwiej by było postawić ci tego windowsa na wirtualce dla maca.


Może ci się artykuł przyda jeśli sam będziesz grzebał:

https://www.automateexcel.com/vba/send-emails-outlook/

Set OutApp = CreateObject("Outlook.Application")

Set OutMail = OutApp.CreateItem(0)

Jeśli to nie działa - to nie wiem.


Jeżeli coś takiego jest i nie działa to nie wiem - może łatwiej by było po prostu wygenerować te faktury z excela na dysk twardy a bazę email i puszczenie maili po prostu obskoczyć sobie kodem w pythonie ?


W sensie : baza: nazwa załącznika-faktury <-> mail generowana przy generacji i zapisie faktur jako odrębny skoroszyt przy generowaniu fakturek, z tego skoroszytu robisz kopiuj->wklej do pliku a potem wg tego pliku niech działa skrypt w pythonie - zasysanie w pętelce odpowiednich plików odpowiadających odpowiednim mailom i voila - można to słać dowolną apką pocztową. Gratisowo - zanim odpalasz skrypt pythona możesz losowo zweryfikować faktury przed wysłaniem czy program czegoś nie popierdolił


Ale - ja ci tego pisał nie będę. Raz - nie mam maca. Dwa - biorąc kasę bym musiał podać dane a za darmo to robił nie będę.

Bigos

@Taxidriver W sumie to sam jestem teraz ciekaw jak to można rozgryźć Masz już gotowe makro na Windowsie??

Taxidriver

@Bigos tak, wrzucilbym tutaj ale nie mozna dodawac plików.

Bigos

@Taxidriver Spróbuję mojego starego maca ogarnąć i odpalić Excela. Dam znać jak coś się uda

Taxidriver

@Bigos @WolandWspanialy @dsol17 moge Wam wyslac na email ale zaraz psozukam gdzie to moge wrzucić na jakis hosting.

Doceniam zaangażowanie "from mountain"


tutaj jest plik https://1drv.ms/x/s!AgkYGvJofm8pgZhNLShHjOX5cD_-Hg?e=SWUZeb

dsol17

@Bigos Najprostszy sposób rozgryzienia problemu to obejście problemu wg. mojego posta powyżej.

W sensie: wygenerować faktury i odrębną listę - pliczek<->email

zrobić skrypt pythona który robi tyle:

puszcza to w pętelce czy inaczej (nie pamiętam już - python chyba tu nie wymaga pętelek koniecznie) zasysającej jako zmienne w każdej linijce:


  • &nazwa pliku

  • &email.


wywołanie aplikacji z załączeniem &nazwa_pliku i ewentualnie takim samym tekstem. i wyślij na &email

I niech to skacze po pliczku bazy do ostatniej linijki.


Nie będę sobie pythona przypominał teraz czy klepał bezpośredniego kodu, algorytm wam podałem powyżej reszta to napisać kod. Wiem,że to było łatwe ale za mało klepałem w #python -ie żeby się znać i napisać z pamięci kod który to obsłuży. Dla osoby która pyka w pythonie to będzie banał,ja nie pamiętam niestety na dziś (i się mi nie chce)


Odwoływanie się do systemu w excelu wymaga uruchamiania bibliotek których excel nie wczytał, potem zwykle to nie chce i tak zadziałać cholera wie dlaczego i ogólnie strasznie to ssie. Obchodzenie problemów skryptami w sposób który podałem ratuje dupę a mój sposób ma tą zaletę że możesz sprawdzić czy maszyna czegoś nie zjebała generując faktury. A zwykle - zmienisz kilka komórek albo głupie formatowanie i excel ci coś pochrzani - skrypty vba wymagają testowania jak aplikacje, zwłaszcza skrypty z książek,stacka czy gpt.


Jak op @Taxidriver nie zrobi testów to przekona się szybko,że i tak coś się pojebało nawet gdy maszynka zacznie wysyłać maile.

WolandWspanialy

Bez cienia szydery - próbowałeś ChatGPT zapytać ? Jakiś konkretny problem ?

Taxidriver

@WolandWspanialy probowalem, roziaznie podane przez ChatGPT nie dziala (ale tuatj tez moze wyjsc moje hamerstwo)

WolandWspanialy

@Taxidriver Ok ale nie działa bo ? Możesz wrzucić na pastebin aczkolwiek nie wiem czy pomogę.

plemnik_w_piwie

@Taxidriver a jakbyś makrem wywalił skrypt, który tworzyłby jakiś csv, gdzie w jednej kolumnie adres email, w drugiej treść maila itd, a potem w programie pocztowym spróbował go wczytywać i tam oskryptować wysyłanie.

Wiesz, półautomat.

Gdybam, bo nie wiem nawet czy zwykły outlook by to potrafił. A masz dostęp do powerautamate'a?

dsol17

@plemnik_w_piwie no właśnie podobną rzecz mu proponuję choć nieco inną:


  • niech skrypt excela generuje fakturki osobno i jeden zbiorczy pliczek/arkusz z nazwą pliku fakturki i odpowiadającym mailem

  • postawić kolejny skrypt np. pythona (nie wiem,może i czymś w rodzaju basha by się dało) który mu będzie zasysał te nazwy pliku i maile i rozsyłał: pliczek-mail, pliczek-mail z tekstem. Oczywiście skrypt będzie to zasysał z osobnego pliku też zapisanego na dysk a nie arkusza.


Łopatologia i dwie warstwy,krzynka więcej klikania - ale powinno tak na 99,9% zadziałać - wtedy masz tylko excel robiący excelowską robotę i osobno systemową obsługę klepania maili. Kolejna zaleta jak pisałem - możliwość skontrolowania zanim pójdzie do klienta.


Moim zdaniem najpewniej skrypt mu się jakoś wyłożył przy wywołaniu systemowym outlooka lub wysyłaniu do niego danych,ale nie wiem bo przecież nie widzialem kodu ani go nie testowałem.

Taxidriver

@dsol17 problem jest taki, że ja jestem taksówkarzem i pisanie kodu to dla mnie czarna magia.

Zmienienie miejsca zapisania pliku w macro to już prawdopodobnie szczyt moich możliwości.

dsol17

@Taxidriver No dobra, brachu zróbmy tak: ty mi wyjaśnij jak krowie na miedzy - uczciwie co masz a czego nie masz.

Bo niestety te pytania do gpt to obecnie albo ukrywasz to co zrobiłeś z kodem,albo kurwa nie wiesz co ty właściwie robisz.

Obstawiam,że nie wiesz co robisz niestety.


Kod mogę ci ułożyć do przetestowania pewnie najwcześniej jutro (ale zakładam pojutrze no max do piątku).Za darmochę wyobraź sobie (tia,psuje rynek panom 15k blah blah blah) ale nie będzie od razu działało. Ponieważ nie mam apple brachu a w dzień będzie troszkę roboty. Ja trochę bowiem programowanie rozumiem. Ale nie jakoś wybitnie. Spróbuję wygenerować sensowniejszy kod, ty sprawdzisz czy to działa,wykonasz kilka testów i może pospinasz to do kupy - kapiszczi ?


Termin jaki jest to jest bo za darmo i bez gwarancji - większość dnia mam teraz tak dupacko,że pomoc rodzince - rodzicielka do szpitala trafiła a po szpitalu jeszcze większy kipisz będzie i będę niezbędny co chwilę więc czasu notorycznie mało.


Z tego co ja widzę to masz (po cholerę akurat tak drogi i 'egzotyczny" komp - ale to nie mój problem) tego jabcoka więc po prostu będziesz musiał wg porad jakoś przetestować kod na nim. Niestety tego nie przeskoczymy,ja apple nie mam a na wirtualce stawiał nie będę bo nie mam tyle czasu.


To co dostałeś od GPT to z całym szacunkiem jest niemal GÓWNO. Gówno mówiące,że:


  1. Z VBA sobie nie odpalisz outlooka pod makiem tak jak się spodziewałem bo Excel pod maca tego nie obsługuje

  2. Chat GPT doradził ci applescript (czyli cudeńko potencjalnie prostsze niż pythonek) tylko potem wyszło na to,że ci do nie zadziałało,bo funkcja MacScript nie działa ci w Excelu pod maka. Bezmyślna "sztuczna inteligencja" nie zrozumiała tego,że to może nie działać więc nie zadziałało,ups. Ot GPT to debil,wiedziałem,no suprise...

  3. Masz przykład skryptu applescript wysyłającego prawdopodobnie raz maila. Nie jest to podpięte pod żadne źródła danych oczywiście. Tamten przykład co miałeś wcześniej - też ciul wie co to jest nie ogarniam co za kuweta. Najpewniej wysryw GPT po tym jak poprosiłeś o skrypt dla taksówkarza w twojej sytuacji co ?


Piszesz:

Zmienienie miejsca zapisania pliku w macro to już prawdopodobnie szczyt moich możliwości.

I ty chcesz mimo to spiąć to wszystko... Nie obraź się,ale bez podstawowej wiedzy albo pokazuje się ten kod co się ma w całości (jak się ma) ,albo nie bawimy się w kodzenie. I należy być szczerym pisząc co się robi,co się potrafi,co się ma !


Dlatego potrzebuję (czy ewentualny programista który by chciał ci to zrobić za kasę też potrzebuje) wiedzieć na początek:


  1. Masz gotowe fakturki czy po prostu je sobie generujesz w excelu. Jeżeli generujesz - czy masz do tego skrypt excela czy nie. Działa on wypluwając ci tą fakturkę - czy nie ? Fakturki zapisuje ci na dysk - czy nie ? Możesz ten skrypt (zakładając,że go masz i wypliwa ci fakturkę) udostępnić - czy nie.

  2. Masz jakieś źródło z którego bierzesz maila dopasowanego do faktury ? Jakiś plik wg którego:


ta faktura ->ten mail klienta ?


A jak nie możesz kontynuować i mówić co masz to zrobić możesz sam po przeczytaniu: http://macosxautomation.com/applescript/firsttutorial/index.html i szukaj jeszcze wtedy w google podręczników do autoscripta. Choć pewnie pod pythona może było by mi łatwiej ułożyć skrypcik (kluczowe rzeczy pod pythona: https://stackoverflow.com/questions/3362600/how-to-send-email-attachments )

Ale jak nawet nie wiesz co to jest pętelka i nie eksperymentowałeś a piszesz,że się nie znasz.


To co wrzucasz to nie wiem do czego się ma nadawać. Piszesz:

problem jest taki, że ja jestem taksówkarzem i pisanie kodu to dla mnie czarna magia.

To jak wyżej: co masz,co chcesz zrobić. Jak krowie lub chłopu na miedzy. I błagam,nie wyręczaj się idiotą-GPT jeśli nie rozumiesz kodu - on może wspomagać programistę który rozumie kodzenie choć minimalnie.Ale to tyle.

Taxidriver

applescript

set theSubject to “ACE TAXI invoice =date()”

set theContent to "Content"

set theAddress to “acewinderemere@***.com”

set theAttachmentFile to "/Users/aj/ACE ACC 2023/"


tell application "Mail"

  set theNewMessage to make new outgoing message with properties {subject:theSubject, content:theContent & return & return, visible:true}

  tell theNewMessage

    make new to recipient at end of to recipients with properties {address:theAddress}

    tell content

      make new attachment with properties {file name:theAttachmentFile as alias} at after the last paragraph

    end tell

  end tell

  send theNewMessage

end tell


vba

Dim script As String

script = "do shell script ""osascript /Users/aj/ACE ACC 2023/Script/ExcelEmail.scpt"""

MacScript(script)

Taxidriver

taka rade dal mi ChatGPT ale po zaimplementowaniu tego nic nie rusyzlo

lexico

@Taxidriver to piszesz, że nie działa i niech zaproponuje inne rozwiązanie

dsol17

@Taxidriver już nieaktualne ?

Taxidriver

Ale co? Link? Powinien działać.

Problem jest dalej, tylko ja jestem w pracy.

Zaloguj się aby komentować