VBA i Excel - spara fil till USB-minne med okänd enhetsbokstav

Permalänk

VBA i Excel - spara fil till USB-minne med okänd enhetsbokstav

Hej,

Jag har en fil som jag använder för registerhållning med "knappkopplade" macron som gör det enkelt för användaren att söka och lägga till poster. Jag arbetar normalt stationärt på kontoret och vet mot vilken enhet jag arbetar (oftast c:\). Kommandot jag använder mig av är SaveAs och det funkar klockrent så länge jag vet vilken enhet jag ska spara på.

Har en fråga som jag hoppas någon kan hjälpa mig med:

Kan jag med hjälpa av VBA-kommandot SaveAs spara min excel-fil, till en i relation till "moderfilen" given plats (exempelvis en nivå upp i katalogen "Spara" på en USB-sticka?

Jag har försökt att ange sökvägen som \\Klara\ men det verkar inte funka...

Här är min kod, fetmarkerat det jag har problem med:

Sub Skicka_SN() Sheets("Till System").Select Dim lRow As Long, sFileName As String, sPath As String lRow = Range("A65536").End(xlUp).Row While lRow > 0 If Cells(lRow, 46).Value < 1 Then Rows(lRow).Delete shift:=xlUp End If lRow = lRow - 1 Wend sPath = "C:\Projekt\AH\Klara\" sFileName = Range("I2").Text + " - " + Range("AV1").Text + " - " + Range("D2").Value Range("A2:AQ104").Copy Range("A2:AQ104").PasteSpecial xlPasteValues ActiveWorkbook.SaveAs (sPath & sFileName) sPath = "C:\Projekt\AH\Klara\System\" sFileName = Format(Now(), "yymmdd") + "_" + Range("A2").Value + "_" + Range("D2").Value ActiveSheet.Copy ActiveWorkbook.SaveAs (sPath & sFileName & ".xls") ActiveWorkbook.Close (sPath & sFileName) End Sub

Permalänk
Medlem
Skrivet av Toggelito:

Kan jag med hjälpa av VBA-kommandot SaveAs spara min excel-fil, till en i relation till "moderfilen" given plats (exempelvis en nivå upp i katalogen "Spara" på en USB-sticka?

Testa ActiveWorkbook.Path

Permalänk
Medlem

Det finns en metod som heter ThisWorkBook.FullName som returnerar hela länken till filen inklusive filnamn

Permalänk
Skrivet av veggie_d:

Testa ActiveWorkbook.Path

Tusen tack, fick det att fungera som jag ville mha

Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\"))

Jag fattar nog inte hur det funkar men tack ändå!

Permalänk
Medlem
Skrivet av Toggelito:

Tusen tack, fick det att fungera som jag ville mha

Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\"))

Jag fattar nog inte hur det funkar men tack ändå!

Från pathen plockar du ut den del som utgörs av alla tecken fram till det första backslashet. Om pathen är "C:\Projekt\AH\Klara\System\", så tar InStrRev reda på positionen för det första backslashet (position 2), och Left returnerar därmed strängen "C:". Inte alltid nödvändigt att förstå hur någonting funkar, bara att det gör det, men nästa gång man är i en liknande situation kan det hjälpa att man förstod vad man gjorde första gången

Permalänk
Skrivet av veggie_d:

Från pathen plockar du ut den del som utgörs av alla tecken fram till det första backslashet. Om pathen är "C:\Projekt\AH\Klara\System\", så tar InStrRev reda på positionen för det första backslashet (position 2), och Left returnerar därmed strängen "C:". Inte alltid nödvändigt att förstå hur någonting funkar, bara att det gör det, men nästa gång man är i en liknande situation kan det hjälpa att man förstod vad man gjorde första gången

Lysande!

Du är en värd en fredagsöl för hjälpen!