在 PowerPoint 中使用 VBA 显示重音字符

Displaying accented characters using VBA in PowerPoint

我创建了一个 PowerPoint 来显示 this excellent tutorial.

之后的 .txt 文件中的 5 个随机单词

问题是,我的 .txt 文件中的文字是西班牙语,因此带有重音符号。当 PowerPoint 显示它们时,它们看起来已损坏。例如秘鲁看起来像秘鲁。

这是我的代码:

Public myArray, Word1, Word2, Word3, Word4, Word5

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)

If SSW.Presentation.SlideShowSettings.StartingSlide Then
Randomize
Label1.Caption = ""
Label2.Caption = ""
Label3.Caption = ""
Label4.Caption = ""
Label5.Caption = ""

Dim path
path = ActivePresentation.path & "\palabras.txt"

Open path For Input As #1
filecontent = Input(LOF(1), #1)
Close #1

myArray = Split(filecontent, vbCrLf)

End If

End Sub


Private Sub CommandButton1_Click()

Word1 = Int((UBound(myArray)) * Rnd)
Word2 = Int((UBound(myArray)) * Rnd)
Word3 = Int((UBound(myArray)) * Rnd)
Word4 = Int((UBound(myArray)) * Rnd)
Word5 = Int((UBound(myArray)) * Rnd)

Do While Word1 = Word2
Word2 = Int((UBound(myArray)) * Rnd)
Loop

Label1.Caption = myArray(Word1)
Label2.Caption = myArray(Word2)
Label3.Caption = myArray(Word3)
Label4.Caption = myArray(Word4)
Label5.Caption = myArray(Word5)


End Sub

我知道结尾也很乱,不知道怎么弄才让Word3、4、5不重复。这是我第一次使用 VBA.

有人能帮忙吗?

Files

VBA 和 COM 在内部使用 Unicode。但是当与 Windows API VBA 交互时使用 ANSI 作为 Windows 9x 没有 Unicode API 调用。

Open 语句已折旧。它将调用 Windows' CreateFileA。使用 FileSystemObjecthttps://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/openastextstream-method

确保在打开文件时指定 Unicode。

或者将您的非 Unicode 设置设置为西班牙语或其他设置。

   Const ForReading = 1, ForWriting = 2, ForAppending = 8
   Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
   Dim fso, f, ts
   Set fso = CreateObject("Scripting.FileSystemObject")
   fso.CreateTextFile "test1.txt"   ' Create a file.
   Set f = fso.GetFile("test1.txt")
   Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
   ts.Write "Hello World"
   ts.Close
   Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
   TextStreamTest = ts.ReadLine
   ts.Close

来自帮助。


Set TS = CreateObject("Scripting.FileSystemObject").GetFile("test1.txt").OpenAsTextStream(1, -1)
x = ts.readall