Excel VBA, Byta föreslaget namn på dokumentet.

Permalänk
Medlem

Excel VBA, Byta föreslaget namn på dokumentet.

Har ett makro som bland annat delar upp en stor fil i tre delar och sparar var del med olika namn i formatet .csv
Normalt föreslår Excel att filen ska sparas som "Filnamn.xlsx"

Efter att makrot har körts så föreslår (när jag väljer spara som) Excel att jag ska spara filen som "Canopy.csv", dvs det filnamnet som senast sparades vilket jag kan förstå.
Men jag vill att efter markot är kört så ska "allt vara som innan".

Har försökt googla på Suggest filename på google men hittar ingen lösning som faktiskt fungerar.
Det jag vill är alltså att "toppraden" i Excel ska visa <<<< "Filnamn" - Microsoft Excel ...... >>>>> alltså menyraden, eller vad den heter?

Någon som har en lösning på detta?
Gäller 2007-2010.

Kan lägga upp makro om så önskas, men det är ett add-in makro så det måste installeras i Excel.

Permalänk
Medlem

När du sparar filen gör du detta med Save eller SaveAs samt vilken nivå gör du detta på WorkBook eller WorkSheet?

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem

När filen delats så sparas den sista delen med denna koden.

ActiveSheet.Cells.ClearContents Sheets(shtName).Range("B" & EndRow & ":" & "C" & LastRow).Copy Destination:=Sheets("csv").Columns(1) Sheets("csv").Rows(1).EntireRow.Insert Sheets(shtName).Range("B1:C1").Copy Destination:=Sheets("csv").Range("A1:B1") wb.Sheets("csv").SaveAs Filename:=FilePath & "\" & shtName & "\" & "Canopy.csv", FileFormat:=xlCSVWindows

csv är alltså det bladet som bara tillfälligt skapats för att sen sparas som en csv-fil och därefter tas bort igen.
shtName är det bladet där siffrorna plockas från.
shtName är dessutom filens ursprungsnamn (utan efternamn).

Permalänk
Medlem

Provar jag ändra namnet på filen med följande kod:

With Dialogs(wdDialogFileSummaryInfo) .Title = wkbName .Execute End With

vilket verkar vara den metod som "alla" säger ska fungera så får jag application defined error.
Även om jag har Application.Dialogs så fungerar det inte.
wkbName är ursprungsnamnet med efternamn

EDIT: wdDialogFileSummaryInfo visar empty. Vilket får mig att tro att det är där problemet ligger

Permalänk
Medlem

Om jag inte missförstått dig så är det som så att när VBA makrot kört och sparat filerna så visar den aktuella Excelinstansen "fel" filnamn och fil format när man trycker på Save As i GUI? Jag har googlat lite men inte kunna hitta något som fixar detta.

Jag är dock nyfiken på varför detta är ett problem? Öppnar jag en ny instans av Excel är allt som vanligt och "problemet" finns bara i den excelinstansen med makrot.

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem

Det är korrekt att det endast påverkar det förnstret.

Jag ska försöka förklara bättre.
Jag har en fil som heter ex. 10-47-56.CSV (det är ett klockslag).
Jag öppnar denna filen som innehåller GPSdata, mitt makro som är ett Add-in upptäcker att jag öppnar en fil som har GPSdata.
En serie beräkningar utförs och nya siffror presenteras på bladet.
Fler blad skapas med olika grafer.

Beroende på vilka inställningar användaren valt så kan man även dela upp filen i maximalt tre delar.
Om man nu väljer att dela filen så skapas ett nytt blad där endast longitud och latitud siffror kopieras in och sen sparas detta blad som en ny csv-fil i en annan map.
Efter att allt detta är gjort får användaren tillbaka kontrollen över Excel och kan då se siffrorna och graferna.
Om då användaren vill spara filen måste filen sparas som Exceldokument eftersom annars sparas inte Grafer och formler.
Problemet är dessutom att Excel vill döpa filen till ett annat namn än ursprungsnamnet, vilket kan göra det svårt att hitta rätt fil.

Jag har lagt upp en kopia på projektet.
Jag har tyvärr inte tid att förklara hur man installerar ett add-in.
Men här finns förklaring http://office.microsoft.com/en-us/excel-help/about-add-in-pro...
samt hur man laddar det:
http://office.microsoft.com/en-us/excel-help/load-or-unload-a...

Filen:
http://www.hellis.me/Flysight.zip

EDIT: när koden begär att man ska markera, välj rad 370-584.
Markera hela rader eller bara celler antingen med musen eller Shif+piltangenter.

EDIT2: Notera hur namnet byts om ni väljer att dela filen.
Inställningsfilen sparas på C.\flysight\ För att ändra inställningar, ta bort filen som ligger i mappen

Permalänk
Medlem

Funderar på om det kanske går att lösa med en beforesave?
Får testa det imorgon

Permalänk
Medlem

Jag har testat och sett vad som händer, den väljer att det aktiva är det som senast sparades ner. Jag labbade lite med att försöka få den att skapa en ny Excel instans och låta denna instansen spara ner WorkSheet men den vill inte riktigt skapa en ny instans (Dim xApp As New Excel.Application) utan tycks använda min befintliga och då blir resultatet samma. Kan man få den att skapa en ny instans bör det fungera och när man är klar måste man göra xApp.Quit för annars hänger instansen kvar i ramminnet. Ett annat alternativ är att du helt enkelt sparar filerna enligt den metod du använder när du skapar settingsfilen.

Sedan kanske det skulle finnas en lösning genom att arbeta med WorkBook objektet då detta har en metod som heter SaveCopyAs.

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem

Jag har lyckats få den att öppna ett nytt fönster, men problemet då är att det aktiverar mitt makro igen och jag har två "körningar" av mitt makro som körs i bakgrunden samtidigt.
Och det blir inte vackert...
Jag vet inte exakt varför makrot startade andra gången, men jag konstaterade att jag inte ville gå den vägen och skrotade den koden.
Kanske skulle kört vidare på det ändå....

Men jag tror helt klart på din ide att spara som settingsfilen! Varför tänkte jag inte på det?
Det kanske blir lite pilligt att få ihop en sträng som kan hantera all datai ett svep men det ska nog gå.

Tack för hjälpen!
Ska ge mig på ett försök att spara som settingsfilen

Permalänk
Medlem

Det fungerade!
Kunde dock inte skapa en lång sträng utan fick spara en rad i taget till filen.
Men nu fungerar det precis som det ska.

Nu ska jag bara buggtesta allt och eventuellt bygga en installationsfil.

Tack!

Permalänk
Medlem

Jätte kul att det fungerade. Som vanligt är jag nyfiken, varför gick det inte att spara ner som en enda lång sträng? Om problemet var att filen blev sparad i block istället för rader beror det på att du måste peta in vbcrlf på alla ställen där filen ska byta rad.

Den lösning du nu skapat är bättre än att använda Excel för att skapa filen, det är snabbare och säkrare att skapa filen själv.

Jag har programmerat i 14 år och hittills har jag aldrig gått bet på ett problem...dock måste man ibland "go back to basic" för att något ska fungera som det är tänkt då många inbyggda grejer gör det svårare än det är. Jag har aldrig varit särskilt bra på att bygga in mig i ett hörn av ramverk eller kärnobjekt, utan skrivit det mesta av metoderna och funktionalitet själv vilket lett till att i princip alla program jag skrev till Windows 95 fungerar precis lika bra i Window 7.

Lycka till med allt annat i livet

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem

Jag provade med Range & "," & Range & Chr(10)
Och 13, men ingen av dem fungerade.
Själva strängen kunde hantera det, kollade jag på vad strängen innehöll så var det precis vad jag ville ha.
Men när jag kom till raden då koden skulle skrivas in i filen så fick jag ett fel.
Kan inte minnas vad det var för fel, tror det var typ missmatch eller nått.
Vill minnas att print endast hanterar en rad i taget.

Men den nya lösningen är mycket bättre.
Eftersom det bara går ta en rad i taget får jag loopa mig fram.
Men jag har gjort det till en funktion så jag bara skickar med start, slutvärde och filnamn.
Tar ingen tid alls.

Permalänk
Medlem

Perfekt

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem

Om du nu påstår att du aldrig "gått bet på ett problem", har du nån lösning för att få in en karta med GPSkordinator (typ googlemaps) i Excel?

Permalänk
Medlem

Menar du att länka in en webbsida eller att rita upp den själv eller...? Beskriv vad du vill göra så ska jag ge det ett försök.

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem

Ja alltså i en perfekt värld så hade man fått en karta med en linje ritad.
När man markerar en rad i dokumentet så visas var på kartan man är.

Jag har använt mig av gpsvisualizer, där man då kan ladda upp dessa tre delar jag med koden skapar och kan då se på en karta linjen.
Det är en fungerande lösning, men optimala hade så klart varit att man antingen får kartan som en "interaktiv karta" (så som google maps fungerar) eller att man kanske kan bli länkad direkt till den färdiga kartan på gpsvisualizer.
Alltså att excel kan skicka upp filerna till sidan.

Jag har under många år försökt hitta nån lösning som ens liknar detta men det verkar nästan omöjligt.