Jump to content

Recommended Posts

Posted

I denna tråd..Snabbt söka och ersätta radbrytning med text? - Kalkylprogram - Excel m fl - Eforum (idg.se) fick jag hjälp med ett makro, i Excel.

Nu med en ny version av Autohotkey behöver koden ändras något. Min kod ser ut så här:

Sub EditAhk()
Dim MinText As String
Dim rMittOmråde As Range
Dim rAktuellCell As Range


Set rMittOmråde = Selection.SpecialCells(xlCellTypeVisible)

MinText = "!^F6::Reload" & vbNewLine & "!^F5::Send,"
For Each rAktuellCell In rMittOmråde
    MinText = MinText & rAktuellCell.Value & "{down}"
Next rAktuellCell


Open "C:\temp\filldown.ahk" For Output As #1
    Print #1, MinText
Close #1
End Sub

Nu ska "!^F6::Reload" vara "!^F6::Reload()och "!^F5::Send," ska vara  "!^F5::Send(""

Det kan jag ju ändra själv men jag ser att "!^F5::Send("" ändras till att vara "!^F5::Send(""" när jag sparar, alltså en extra "
Det verkar dock inte påverka slutresultatet.

Nu till den del jag behöver hjälp med: Den sista {down} ska avslutas med ") och hur lägger jag in det snyggast?

Jag tänkte pröva själv men garderar mig med denna frågeställning ;)

Posted

Kan själv, ibland.. :rolleyes:

Blev lite extra stökigt för mig när det var just " som skulle petas in..

(en förklaring varför det krävs så många sådana snuffar önskas)

Sub EditAhk()
Dim MinText As String
Dim rMittOmråde As Range
Dim rAktuellCell As Range


Set rMittOmråde = Selection.SpecialCells(xlCellTypeVisible)

MinText = "!^F6::Reload()" & vbNewLine & "!^F5::Send("""
For Each rAktuellCell In rMittOmråde
    MinText = MinText & rAktuellCell.Value & "{down}"
Next rAktuellCell

MinText = MinText & """)"

Open "C:\temp\filldown.ahk" For Output As #1
    Print #1, MinText
    
Close #1
End Sub

 

  • Thanks 1
Posted (edited)
46 minuter sedan, Mikael63 sade:

(en förklaring varför det krävs så många sådana snuffar önskas)

Eftersom " är en textavgränsare (som inte skall synas) så blir det väldigt knepigt att få in ett synligt " i en textsträng.

I en del program skiljer på " och '.  Fast inte...   i t.ex SPSS skulle:

MinText & """)"
Blir 
'MinText' & '")'
Med reservation för att jag inte minns om man använder & i SPSS-skript. 

I excel skriver man in två "" inom citattecknen för att få ut ett synligt ". 
Typ " "" "
men sammanskrivet """""

Och om det står i ena änden av strängen blir det 3 st ", typ:  """ xxx"

=SAMMANFOGA("Här skall det synas ett: ";"""-tecken")

Ett ensamt "-tecken blir det  4 """" på rad (läs som " "" ")

=SAMMANFOGA("Här skall det synas ett: ";"""";"-tecken")
eller om det är en enda textsträng

=SAMMANFOGA("Här skall det synas ett: ""-tecken")

Typ samma sak i VBA. 

Det där är lite extra förvirrande eftersom "" normalt sett betyder tom sträng/tomt värde. Men mellan två Citattecken betyder det uppenbarligen ett citattecken ...

Edited by MH_
  • Thanks 1
  • 1 month later...
Posted

Ny version av Office tror jag det är som stökar till detta ytterligare, eller så har jag inte haft texter med ÅÄÖ tidigare.

Jag behöver spara filen filldown.ahk som UTF8 och det kan jag enkelt göra med NoteTab Light men det hade varit bra om filen sparades med den kodningen direkt från Excel.

Går det att lösa?

Koden ser ut så här:

Sub EditAhk()
Dim MinText As String
Dim rMittOmråde As Range
Dim rAktuellCell As Range


Set rMittOmråde = Selection.SpecialCells(xlCellTypeVisible)

MinText = "#SingleInstance Force" & vbNewLine & "SendMode 'Event'" & vbNewLine & "!^F6::Reload()" & vbNewLine & "!^F5::Send("""
For Each rAktuellCell In rMittOmråde
    MinText = MinText & rAktuellCell.Value & "{down}"
Next rAktuellCell

MinText = MinText & """)"

Open "C:\temp\filldown.ahk" For Output As #1
    Print #1, MinText
    
Close #1
End Sub

 

Posted

Här diskuterar dom olika metoder:

https://stackoverflow.com/questions/2524703/save-text-file-utf-8-encoded-with-vba

Där jag tycker att svaret som hänvisar till

https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/aa265347(v=vs.60)

verkar lättast att köra. Dvs du skippar "Print #1" helt och lägger till någonting i stil med (ombyggt från exemplet längst ner på microsoftsidan):

    '...
    MinText = MinText & """)"
    
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("C:\temp\filldown.ahk", ForAppending,TristateTrue)
    f.Write MinText
    f.Close
End SUB

Jag har inte testat men det ser ju smidigt ut. Du får väl kör en testomgång på låtsasdata.

  • Thanks 1
  • Solution
Posted (edited)

Min länk gick ju inte till excel VBA utan någon gammal visual basic. Wooops!🙈

 

Kollar du excels riktiga dokumentation här:

OpenTextFile method (Visual Basic for Applications) | Microsoft Learn

Så är det helt andra värden för konstanterna och parametrarna skall in i en annan ordning

    '...
    MinText = MinText & """)"

	Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    
    Dim fs As Object, f As Variant
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(Filename:="C:\temp\filldown.ahk", iomode:=ForAppending, Create:=True, Format:=TristateTrue)
    f.Write MinText
    f.Close
End sub

eller så här om du vill ha det kompaktare (men svårbegripligare)

'...
MinText = MinText & """)"
        
    Dim fs As Object, f As Variant
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("C:\temp\filldown.ahk", 8, True, -1)
    f.Write MinText
    f.Close
End Sub

 

Edited by MH_
  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...