Lỗi Đường Dẫn Khi Có Tiếng Nhật

Liên hệ QC

vuongtoituonglai

Thành viên thường trực
Tham gia
7/5/14
Bài viết
350
Được thích
47
Chào Anh, Chị Và Các Bạn,
Mình thêm chữ nhật 今日 vào "D:\今日 Hinh\" thì không được. Kết quả "D:\?? Hinh\"
Anh chị và các bạn biết cách làm chỉ mình với.
Function InsertPic(ByVal picname As String) As String
Dim fullName As String, pic As Shape, cell_ As Range, fs As Object
Dim mPath As String
mPath = "D:\Hinh\"
Set cell_ = Application.ThisCell
On Error Resume Next
cell_.Parent.Shapes(cell_.Address).Delete
If Err.Number Then Err.Clear
On Error GoTo 0
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(mPath & picname & ".jpg") Then
fullName = picname & ".jpg"
ElseIf fs.FileExists(mPath & picname & ".bmp") Then
fullName = picname & ".bmp"
End If
If fullName <> "" Then
Set pic = cell_.Parent.Shapes.AddPicture(mPath & fullName, _
msoFalse, msoTrue, cell_.Left, cell_.Top, cell_.Width, cell_.Resize(4).Height)
pic.LockAspectRatio = msoTrue
pic.Name = cell_.Address
End If
Set cell_ = Nothing
Set fs = Nothing
End Function
 
Vì mấy cái chữ tượng hình mà bàn phím sx riêng cho thị trường Nhật Bản, Hàn Quốc, khựa. Đến Unicode còn không được hỗ trợ thì tìm cách khắc phục thôi.
 
Dán đoạn code dưới vào cửa sổ Immediate (Ctrl+G) và nhấn Enter và dán tiếng Nhật vào Box nhập liệu
mPath = "D:\" & VBA.ChrW(20170) & VBA.ChrW(26085) & " Hinh\"

PHP:
A = Application.InputBox(""): _
  For I = 1 To VBA.Len(A): _
    S = S & VBA.IIf(S = "", "", " & ") & "VBA.ChrW(" & _
            VBA.AscW(VBA.Mid(A, I, 1)) & ")" : _
  Next I: _
?S
 
thị trường Nhật Bản,
Em thấy có khác đó anh.
Với phiên bản Windows, Office cho thị trường Nhật Bản thì hoàn toàn hỗ trợ ngôn ngữ của họ. Cụ thể ở trường hợp VBA này, họ nhập chữ của họ vào môi trường VBE hoàn toàn bình thường, tên file/ tên sheet/ msgbox dùng với chữ Nhật được luôn.
 
Em thấy có khác đó anh.
Với phiên bản Windows, Office cho thị trường Nhật Bản thì hoàn toàn hỗ trợ ngôn ngữ của họ. Cụ thể ở trường hợp VBA này, họ nhập chữ của họ vào môi trường VBE hoàn toàn bình thường, tên file/ tên sheet/ msgbox dùng với chữ Nhật được luôn.
Vì ở đó Windows bán được nhiều , nên họ hỗ trợ các nơi đó vậy
 
Vì ở đó Windows bán được nhiều , nên họ hỗ trợ các nơi đó vậy
Ngoài yếu tố số lượng khách hàng còn nhiều vấn đề nữa ấy anh.
Vị thế quốc gia trên bản đồ thế giới, dữ liệu đã có về loại ngôn ngữ đó.
Ví dụ như hiện tại thời đại của AI, trợ lý ảo thì các ngôn ngữ xưa nay chiếm ưu thế trên các phần mềm đều được hỗ trợ trước.
 
Chào Anh, Chị Và Các Bạn,
Mình thêm chữ nhật 今日 vào "D:\今日 Hinh\" thì không được. Kết quả "D:\?? Hinh\"
Anh chị và các bạn biết cách làm chỉ mình với.
Function InsertPic(ByVal picname As String) As String
Dim fullName As String, pic As Shape, cell_ As Range, fs As Object
Dim mPath As String
mPath = "D:\Hinh\"
Set cell_ = Application.ThisCell
On Error Resume Next
cell_.Parent.Shapes(cell_.Address).Delete
If Err.Number Then Err.Clear
On Error GoTo 0
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(mPath & picname & ".jpg") Then
fullName = picname & ".jpg"
ElseIf fs.FileExists(mPath & picname & ".bmp") Then
fullName = picname & ".bmp"
End If
If fullName <> "" Then
Set pic = cell_.Parent.Shapes.AddPicture(mPath & fullName, _
msoFalse, msoTrue, cell_.Left, cell_.Top, cell_.Width, cell_.Resize(4).Height)
pic.LockAspectRatio = msoTrue
pic.Name = cell_.Address
End If
Set cell_ = Nothing
Set fs = Nothing
End Function
đã xài Fso ròi thì thêm tẹo nữa như bài số 3 là ok đó ... Or bài số 2 ( bài số 2 mình chưa thử bao giờ mà đoán thế ... sai bỏ qua)
 
Không hiểu .NET có hỗ trợ mấy cái hình kỳ dị này không :)
 
đã xài Fso ròi thì thêm tẹo nữa như bài số 3 là ok đó ...
Có 2 vấn đề hoàn toàn khác nhau:
- làm sao nhập chuỗi unicode trong VBE
- xử lý thế nào khi function hay sub nào đó không phục vụ unicode.

Theo tôi chủ thớt đã nói rõ, và chủ thớt có vấn đề 1. Nếu đúng thế thì ShortPath có liên quan gì tới cách nhập unicode trong VBE?

Chủ thớt không thể có vấn đề 2 được. Đơn giản vì Shapes.AddPicture phục vụ unicode. Tiếng Việt, và tôi tin là cả tiếng Nhật vì nói cho cùng chúng đều là unicode, chỉ có thể làm khó vd. LoadPicture của stdole chứ không làm khó Shapes.AddPicture.

Chủ thớt: hãy nhập D:\...Hinh\ vào vd. K1 trên sheet1. Trong code thì
Mã:
mPath = Sheet1.Range("K1").Value
 
Có 2 vấn đề hoàn toàn khác nhau:
- làm sao nhập chuỗi unicode trong VBE
- xử lý thế nào khi function hay sub nào đó không phục vụ unicode.

Theo tôi chủ thớt đã nói rõ, và chủ thớt có vấn đề 1. Nếu đúng thế thì ShortPath có liên quan gì tới cách nhập unicode trong VBE?

Chủ thớt không thể có vấn đề 2 được. Đơn giản vì Shapes.AddPicture phục vụ unicode. Tiếng Việt, và tôi tin là cả tiếng Nhật vì nói cho cùng chúng đều là unicode, chỉ có thể làm khó vd. LoadPicture của stdole chứ không làm khó Shapes.AddPicture.

Chủ thớt: hãy nhập D:\...Hinh\ vào vd. K1 trên sheet1. Trong code thì
Mã:
mPath = Sheet1.Range("K1").Value
Em mới coi lại thấy Em phán hơi ẩu chút :D ... trường hợp này trên Cells là hợp lý
 
5
Dán đoạn code dưới vào cửa sổ Immediate (Ctrl+G) và nhấn Enter và dán tiếng Nhật vào Box nhập liệu
mPath = "D:\" & VBA.ChrW(20170) & VBA.ChrW(26085) & " Hinh\"

PHP:
A = Application.InputBox(""): _
  For I = 1 To VBA.Len(A): _
    S = S & VBA.IIf(S = "", "", " & ") & "VBA.ChrW(" & _
            VBA.AscW(VBA.Mid(A, I, 1)) & ")" : _
  Next I: _
?S
Mình đã làm với cách của bạn thấy có kết quả đúng rồi.
Cảm ơn bạn.
Bài đã được tự động gộp:

Thử để đường dẫn ở 1 cell
Rồi trong code, gán mpath = giá trị cell đó
Cảm ơn bác nha.
Bài đã được tự động gộp:

đã xài Fso ròi thì thêm tẹo nữa như bài số 3 là ok đó ... Or bài số 2 ( bài số 2 mình chưa thử bao giờ mà đoán thế ... sai bỏ qua)
Cảm ơn bác nha.
Bài đã được tự động gộp:

Em mới coi lại thấy Em phán hơi ẩu chút :D ... trường hợp này trên Cells là hợp lý
Cảm ơn bác nha. :)
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom