Học tiếng Nhật: tải bài từ web, sắp xếp, phát âm, dịch nghĩa

Liên hệ QC
Bác ơi, hiện tại bác đang sử dụng trình phát âm của Google vậy nếu phải để phát âm từ trang https://responsivevoice.org. , thì code có thay đổi nhiều không ạ?
Nếu ít Bác xem giúp con với ạ, bác có thểm thêm giúp con mục lựa chọn nguồn theo Google hoặc trang https://responsivevoice.org. tại ô nào đó trên bảng tính được không
Khác nhiều. Mà tôi không muốn nghiên cứu API.

Bạn chờ xem có ai đã hoặc muốn tìm hiểu API của responsiveVoice.
 
Lần chỉnh sửa cuối:
Khác nhiều. Mà tôi không muốn nghiên cứu API.

Bạn chờ xem có ai đã hoặc muốn tìm hiểu API của responsiveVoice.
Con cảm ơn Bác đã thông tin ạ,
Bác ơi có thể lấy dữ liệu phần ngữ pháp của tất cả các bài về 1 sheet như mục từ vựng được không a?
Nếu được, Bác xem giúp con ạ.
 
@NHN_Phương

Một phương pháp mạnh mẽ khác để tham khảo

Code lấy dữ liệu từ vựng mà không cần phải chép tay

Chỉ cần gõ hàm:
=S_Scraper("https://tiengnhatvn.com/minna-no-nihongo/bai-[x]-tu-vung", 1, 50)


Ứng dụng hoạt động cần cài đặt trong ứng dụng Internet Explorer nếu chưa cài:
tls-ssl-protocols.png
 

File đính kèm

  • Web_Scraper.xlsm
    83.2 KB · Đọc: 7
Lần chỉnh sửa cuối:
@NHN_Phương
Dưới đây là code để đọc chữ thành tiếng

Có hai hàm:
SpeakerXL Đọc không cần đợi
SpeakerXL_Busy Đọc và ở trang thái bận đọc
Speaker là giọng đọc, cần cài tiếng Nhật cho window để có thể đọc tiếng Nhật


JavaScript:
'                    _,
' ___   _   _  _ ___(_)
'/ __| / \ | \| | _ | |
'\__ \/ \ \| \\ | _ \ |
'|___/_/ \_|_|\_|___/_|
'
' Speaker
Option Explicit
#If VBA7 Then
  Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
  Private Declare PtrSafe Function GetShortPathName Lib "KERNEL32" Alias "GetShortPathNameW" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
#Else
  Private Declare  Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
  Private Declare  Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameW" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
#End If

'                    _,
' ___   _   _  _ ___(_)
'/ __| / \ | \| | _ | |
'\__ \/ \ \| \\ | _ \ |
'|___/_/ \_|_|\_|___/_|
'
'==================================================================================================

Private Sub SpeakerXL_Busy_Test()
  Call SpeakerXL_Busy("My NickName is Sanbi", 0, 1.5)
 
End Sub

Sub SpeakerXL_Busy(Optional Text As String, _
              Optional Speaker As Integer = 0, _
              Optional Speed As Double = 1, _
              Optional Volume As Integer = 100, _
              Optional IsSpeakerVietnamese As Boolean = True)
  DoEvents
  Dim oVoice As SpeechLib.SpVoice
  Set oVoice = VBA.CreateObject("SAPI.SpVoice")
  If VBA.IsNumeric(Speaker) Then
    Set oVoice.Voice = oVoice.GetVoices.Item(Speaker)
  Else
    Set oVoice.Voice = oVoice.GetVoices("Name=" & Speaker).Item(0)
  End If
  If IsSpeakerVietnamese Then
    Dim i As Long
    For i = 0 To oVoice.GetVoices.Count - 1
      Set oVoice.Voice = oVoice.GetVoices.Item(i)
      If oVoice.Voice.GetDescription Like "* An*" Then
        Exit For
      End If
    Next
  End If
  oVoice.Rate = Speed
  oVoice.Volume = Volume
  oVoice.Speak Text
  Set oVoice = Nothing
End Sub
'                    _,
' ___   _   _  _ ___(_)
'/ __| / \ | \| | _ | |
'\__ \/ \ \| \\ | _ \ |
'|___/_/ \_|_|\_|___/_|
'
Private Sub SpeakerXL_test()
  Call SpeakerXL("My NickName is Sanbi", 0, 1.5, 100, 0)
  'Call SpeakerXL("NickName c" & VBA.ChrW$(7911) & "a t" & VBA.ChrW$(244) & "i l" & VBA.ChrW$(224) & " Sanbi")
End Sub
Sub SpeakerXL(Optional Text As String, _
              Optional Speaker = 0, _
              Optional Speed As Double = 1, _
              Optional Volume As Integer = 100, _
              Optional IsSpeakerVietnamese As Boolean = True)
  On Error Resume Next
  Call mciSendString("close all", "", 0, 0)
  Const SAFT48kHz16BitStereo = 39
  Const SSFMCreateForWrite = 3
  Dim oFileStream As SpeechLib.SpFileStream
  Dim oVoice As SpeechLib.SpVoice
  Dim xpath As String
  xpath = VBA.Environ$("temp") & "\Sample.wav"
  GoSub Save
  xpath = GetShortPath(xpath)
  Set oFileStream = VBA.CreateObject("SAPI.SpFileStream")
  oFileStream.Format.Type = SAFT48kHz16BitStereo
  oFileStream.Open xpath, SSFMCreateForWrite, True
  Set oVoice = VBA.CreateObject("SAPI.SpVoice")
  If VBA.IsNumeric(Speaker) Then
    Set oVoice.Voice = oVoice.GetVoices.Item(Speaker)
  Else
    Set oVoice.Voice = oVoice.GetVoices("Name=" & Speaker).Item(0)
  End If
 
'  If IsSpeakerVietnamese Then
'    Dim I As Long
'    For I = 0 To oVoice.GetVoices.Count - 1
'      Set oVoice.Voice = oVoice.GetVoices.Item(I)
'      Debug.Print oVoice.Voice.GetDescription
'      If oVoice.Voice.GetDescription Like "* An*" Then
'
'        Exit For
'      End If
'    Next
'  End If

  Set oVoice.AudioOutputStream = oFileStream
  oVoice.Volume = 100
  oVoice.Speak Text, SpeechLib.SpeechVoiceSpeakFlags.SVSFDefault
  oVoice.Rate = Speed
  oVoice.Volume = 100
  oFileStream.Close
  Set oFileStream = Nothing
  Set oVoice = Nothing
 
  Call mciSendString("open " & xpath & " alias fmusic", "", 0, 0)
  Call mciSendString("play fmusic", "", 0, 0)
Exit Sub
Save:
  With VBA.CreateObject("ADODB.Stream")
    .Type = 2 'Stream type
    .Charset = "utf-8" 'or utf-16 etc
    .Open
    .WriteText ""
    .SaveToFile xpath, 2 'Save binary data To disk
  End With
  VBA.err.Clear
Return
End Sub

'                    _,
' ___   _   _  _ ___(_)
'/ __| / \ | \| | _ | |
'\__ \/ \ \| \\ | _ \ |
'|___/_/ \_|_|\_|___/_|
'
Private Function GetShortPath(ByVal Path As String) As String
  Dim ret&, Buff As String * 512
  ret = GetShortPathName(VBA.StrConv(Path, 64), Buff, 512)
  GetShortPath = VBA.Left(StrConv(Buff, 128), ret)
End Function
 
Lần chỉnh sửa cuối:
@NHN_Phương

Một phương pháp mạnh mẽ khác để tham khảo

Code lấy dữ liệu từ vựng mà không cần phải chép tay

Chỉ cần gõ hàm:
=S_Scraper("https://tiengnhatvn.com/minna-no-nihongo/bai-[x]-tu-vung", 1, 50)


Ứng dụng hoạt động cần cài đặt trong ứng dụng Internet Explorer nếu chưa cài:
View attachment 251104
Cảm ơn HeSanbi rất nhiều,
Phiền bạn có thể làm thêm giúp OT các hàm lấy, mục Renshuu B , Kaiwa , Mondai , Bunkei , Renshuuc , Reibun , Renshuuc được không ạ?
 
Xin chào tất cả mọi người ( @batman1 @ptm0412 @Ba Tê @excel_lv1.5 ...)
Con đã tạo thêm một mẫu sheet "ON TAP" với ý tưởng như ảnh kèm bên dưới,Bác/Thầy và Chú xem & giúp con xem thiết kế như này có ổn không ạ?
Hic con xin phép, giờ con phải học một chút tiếng Nhật ạ tối mai con đi học rồi mà cả ngày nay loay hoay mãi cái công cụ chưa được chữ nào vào đầu cả, ngày mai con vẫn phải đi làm chắc đêm mai con mới code thử được ạ. Nếu thầy/Chú/Bác có nhã hứng & thời gian code chơi & phát triển thêm giúp con được thì còn gì bằng ạ.
Cảm ơn tất cả mọi người ạ.
Tôi không để ý là trên trang học tiếng Nhật các tên bài "Bài 1", ..., "Bài 50", các từ tiếng Nhật (có thể cả các từ tiếng Việt) lại có thừa dấu cách ở cuối. Vì vậy trong Sub saveData:
sửa
Mã:
result(count, 0) = lessonName
thành
Mã:
result(count, 0) = Trim(lessonName)

và sửa
Mã:
If c Then result(count, c) = text.innerText
thành.
Mã:
If c Then result(count, c) = Trim(text.innerText)

Trong tập tin đính kèm ở dưới tôi đã loại bỏ dấu cách thừa trong dữ liệu.
------------
1. Về nút ÔN TẬP tôi thấy không cần thiết.

2. Cột Q không cần thiết vì dựa vào J1 có thể biết các đáp án đúng nằm ở cột nào. Nếu J1 = "JP" thì đáp án đúng là cột C, ngược lại thì cột D.

3. Về vùng F4:J13 tôi đề nghị Conditional Formatting và chọn mầu vàng.
Mã:
=COUNTIF($B$2:$B$7320,F4)
Nếu chọn (select) ô chưa có mầu vàng thì code thêm Bài thích hợp vào cột B, và do CF nên ô chuyển sang mầu vàng. Nếu chọn ô đang vàng thì code sẽ xóa các bài thích hợp khỏi cột B, và do CF nên ô mất mầu vàng. Có thể chọn cùng lúc nhiều ô. Vd. lúc đầu chọn "Bài 5" -> code thêm các dòng thuộc "Bài 5" từ "TU VUNG" sang cột B sheet ON TAP, và do CF nên J4 được tô vàng. Nếu tiếp theo chọn J4:J5 thì dữ liệu thuộc "Bài 5" bị xóa khỏi cột B và dữ liệu thuộc "Bài 10" được thêm vào, và do CF thì J4 mất mầu vàng còn J5 được tô vàng.

4. Khi dữ liệu trong cột B thay đổi trong điểm 3 thì dữ liệu trong cột L cũng thay đổi theo.

5. Nếu H1 thay đổi thì J1 cũng thay đổi và ngược lại. Cụ thể khi H1 = VI thì J1 = JP và ngược lại. Làm thế để không có chuyện H1 = V và J1 = VI.

6. Công thức trong cột O, P đã bị thay bởi code.

7. Code trong module sheet ON TAP
 

File đính kèm

  • Tai bai tieng Nhat.xlsm
    189.3 KB · Đọc: 7
Tôi không để ý là trên trang học tiếng Nhật các tên bài "Bài 1", ..., "Bài 50", các từ tiếng Nhật (có thể cả các từ tiếng Việt) lại có thừa dấu cách ở cuối. Vì vậy trong Sub saveData:
sửa
Mã:
result(count, 0) = lessonName
thành
Mã:
result(count, 0) = Trim(lessonName)

và sửa
Mã:
If c Then result(count, c) = text.innerText
thành.
Mã:
If c Then result(count, c) = Trim(text.innerText)

Trong tập tin đính kèm ở dưới tôi đã loại bỏ dấu cách thừa trong dữ liệu.
------------
1. Về nút ÔN TẬP tôi thấy không cần thiết.

2. Cột Q không cần thiết vì dựa vào J1 có thể biết các đáp án đúng nằm ở cột nào. Nếu J1 = "JP" thì đáp án đúng là cột C, ngược lại thì cột D.

3. Về vùng F4:J13 tôi đề nghị Conditional Formatting và chọn mầu vàng.
Mã:
=COUNTIF($B$2:$B$7320,F4)
Nếu chọn (select) ô chưa có mầu vàng thì code thêm Bài thích hợp vào cột B, và do CF nên ô chuyển sang mầu vàng. Nếu chọn ô đang vàng thì code sẽ xóa các bài thích hợp khỏi cột B, và do CF nên ô mất mầu vàng. Có thể chọn cùng lúc nhiều ô. Vd. lúc đầu chọn "Bài 5" -> code thêm các dòng thuộc "Bài 5" từ "TU VUNG" sang cột B sheet ON TAP, và do CF nên J4 được tô vàng. Nếu tiếp theo chọn J4:J5 thì dữ liệu thuộc "Bài 5" bị xóa khỏi cột B và dữ liệu thuộc "Bài 10" được thêm vào, và do CF thì J4 mất mầu vàng còn J5 được tô vàng.

4. Khi dữ liệu trong cột B thay đổi trong điểm 3 thì dữ liệu trong cột L cũng thay đổi theo.

5. Nếu H1 thay đổi thì J1 cũng thay đổi và ngược lại. Cụ thể khi H1 = VI thì J1 = JP và ngược lại. Làm thế để không có chuyện H1 = V và J1 = VI.

6. Công thức trong cột O, P đã bị thay bởi code.

7. Code trong module sheet ON TAP
Con chào Bác Siwtom,
Con cảm ơn Bác nhiều ạ, hơn cả những gì con đang muốn,
Bác ơi vẫn là sheet "ON TAP" khi gộp bài có thể thêm câu lệnh sắp xếp ngẫu nhiên các từ vựng không ạ?
Hình như cần thêm cả phần xóa hết dữ liệu cũ khi muốn làm lại nữa Bác nhỉ.
 
Lần chỉnh sửa cuối:
Tôi không để ý là trên trang học tiếng Nhật các tên bài "Bài 1", ..., "Bài 50", các từ tiếng Nhật (có thể cả các từ tiếng Việt) lại có thừa dấu cách ở cuối. Vì vậy trong Sub saveData:
sửa
Mã:
result(count, 0) = lessonName
thành
Mã:
result(count, 0) = Trim(lessonName)

và sửa
Mã:
If c Then result(count, c) = text.innerText
thành.
Mã:
If c Then result(count, c) = Trim(text.innerText)

Trong tập tin đính kèm ở dưới tôi đã loại bỏ dấu cách thừa trong dữ liệu.
------------
1. Về nút ÔN TẬP tôi thấy không cần thiết.

2. Cột Q không cần thiết vì dựa vào J1 có thể biết các đáp án đúng nằm ở cột nào. Nếu J1 = "JP" thì đáp án đúng là cột C, ngược lại thì cột D.

3. Về vùng F4:J13 tôi đề nghị Conditional Formatting và chọn mầu vàng.
Mã:
=COUNTIF($B$2:$B$7320,F4)
Nếu chọn (select) ô chưa có mầu vàng thì code thêm Bài thích hợp vào cột B, và do CF nên ô chuyển sang mầu vàng. Nếu chọn ô đang vàng thì code sẽ xóa các bài thích hợp khỏi cột B, và do CF nên ô mất mầu vàng. Có thể chọn cùng lúc nhiều ô. Vd. lúc đầu chọn "Bài 5" -> code thêm các dòng thuộc "Bài 5" từ "TU VUNG" sang cột B sheet ON TAP, và do CF nên J4 được tô vàng. Nếu tiếp theo chọn J4:J5 thì dữ liệu thuộc "Bài 5" bị xóa khỏi cột B và dữ liệu thuộc "Bài 10" được thêm vào, và do CF thì J4 mất mầu vàng còn J5 được tô vàng.

4. Khi dữ liệu trong cột B thay đổi trong điểm 3 thì dữ liệu trong cột L cũng thay đổi theo.

5. Nếu H1 thay đổi thì J1 cũng thay đổi và ngược lại. Cụ thể khi H1 = VI thì J1 = JP và ngược lại. Làm thế để không có chuyện H1 = V và J1 = VI.

6. Công thức trong cột O, P đã bị thay bởi code.

7. Code trong module sheet ON TAP
Bác ơi, vẫn sheet "ON TAP" con thêm phần ôn tập từ cột T:W như hình,nhưng cái này con chưa thể code được, nếu Bác và mọi người có hứng thú thì xem & giúp con với ạ.
Con cảm ơn Bác ạ.

1607755956624.png
Bài đã được tự động gộp:

Vui tay viết nhiêu đó thôi. OT có thể nhờ các thành viên khác.
Cảm ơn HeSanbi, vậy OT chúc bạn luôn vui vẻ ạ.
 

File đính kèm

  • Tai bai tieng Nhat (2).xlsm
    246.6 KB · Đọc: 7
Hình như cần thêm cả phần xóa hết dữ liệu cũ khi muốn làm lại nữa Bác nhỉ.
Con đã phát hiện thấy chỗ này rồi chỉ cần tích lại những vùng đã được lựa chọn thì dữ liệu tại vùng đó sẽ mất màu vàng & dữ liệu cũng sẽ xóa... cứ như undo vậy xịn quá ahihi
Con cảm ơn Bác Siwtom.
 
Con đã phát hiện thấy chỗ này rồi chỉ cần tích lại những vùng đã được lựa chọn thì dữ liệu tại vùng đó sẽ mất màu vàng & dữ liệu cũng sẽ xóa... cứ như undo vậy xịn quá ahihi
Con cảm ơn Bác Siwtom.
Thì tôi viết rõ rồi mà, chỉ cần đọc thôi. Chọn ô chưa có mầu thì dữ liệu được thêm, và do CF thì ô được tô mầu. Khi chọn ô có mầu thì dữ liệu bị mất, và do CF thì mầu cũng mất.
 
Con chào Bác Siwtom,
Bác ơi vẫn là sheet "ON TAP" khi gộp bài có thể thêm câu lệnh sắp xếp ngẫu nhiên các từ vựng không ạ?
Ý bạn là vd. chọn Bài 12 và Bài 23 thì trong A: D và trong cột L đều có 85 dòng dữ liệu, nhưng 85 dòng của Bài 12 và Bài 23 được sắp xếp ngẫu nhiên trong cột L? Kiểu như: từ của Bài 12, từ của Bài 12, từ của Bài 23, từ của Bài 23, từ của Bài 23, từ của Bài 12, từ của Bài 23, từ của Bài 23, từ của Bài 12, ...?
 
Ý bạn là vd. chọn Bài 12 và Bài 23 thì trong A: D và trong cột L đều có 85 dòng dữ liệu, nhưng 85 dòng của Bài 12 và Bài 23 được sắp xếp ngẫu nhiên trong cột L? Kiểu như: từ của Bài 12, từ của Bài 12, từ của Bài 23, từ của Bài 23, từ của Bài 23, từ của Bài 12, từ của Bài 23, từ của Bài 23, từ của Bài 12, ...?
Dạ vâng đúng rồi Bác, vì hiện tại từ vựng lấy về cũng đang theo thứ tự như tính từ, động từ rồi ạ, nên khi nhớ được thứ tự gần nhau thì khi viết từ này sẽ hình dung được từ sau là gì ạ.
Con cảm ơn Bác nhiều ạ.
 
Con cảm ơn Bác đã thông tin ạ,
Bác ơi có thể lấy dữ liệu phần ngữ pháp của tất cả các bài về 1 sheet như mục từ vựng được không a?
Nếu được, Bác xem giúp con ạ.
Nhưng lấy những gì và trình bầy như thế nào? Tôi nghĩ là ngữ pháp nó như cuốn sách ấy. Tức vd. chọn Bài 23 thì ra 1 trang và ta lấy tất cả từ đầu tới cuối của phần giữa, tức bỏ menu ở trái và bỏ bảng 50 Bài ở phải. Toàn bộ nội dung mỗi bài ngữ pháp sẽ được ghi ở dạng sách, tức tập tin TXT hoặc DOCX ở ngoài đĩa trong cùng thư mục với tập tin Excel. Trong tập tin Excel chỉ cần Hyperlink, nếu cần thì nhấn để mở sách ngữ pháp.

Như trên?
 
Nhưng lấy những gì và trình bầy như thế nào? Tôi nghĩ là ngữ pháp nó như cuốn sách ấy. Tức vd. chọn Bài 23 thì ra 1 trang và ta lấy tất cả từ đầu tới cuối của phần giữa, tức bỏ menu ở trái và bỏ bảng 50 Bài ở phải. Toàn bộ nội dung mỗi bài ngữ pháp sẽ được ghi ở dạng sách, tức tập tin TXT hoặc DOCX ở ngoài đĩa trong cùng thư mục với tập tin Excel. Trong tập tin Excel chỉ cần Hyperlink, nếu cần thì nhấn để mở sách ngữ pháp.

Như trên?
Vâng Bác đúng như những gì Bác đã mô tả, kiểu quyét các vùng dữ liệu từ web sau đó copy và dán vào bảng tính ạ.
Vì phần ngữ pháp này con cũng thấy rất khó trình bày thế nào cho nó dễ nhìn ạ.
 
Vâng Bác đúng như những gì Bác đã mô tả, kiểu quyét các vùng dữ liệu từ web sau đó copy và dán vào bảng tính ạ.
Vì phần ngữ pháp này con cũng thấy rất khó trình bày thế nào cho nó dễ nhìn ạ.
Bạn đọc kỹ thì sẽ thấy tôi không nói là dán vào bảng tính.

Mà bạn giải thích chút vì tôi không hiểu. Phần từ vựng bạn muốn kéo về Excel thì hợp lý. Vì kéo về Eccel thì bạn có thể trình bầy theo cách của mình và ẩn đáp án, sắp xếp các từ theo thứ tự ngẫu nhiên.

Còn các phần khác như ngữ pháp và các phần tiếp theo nó như là những cuốn sách thì tại sao lại tải về ghi trên đĩa cho tốn công tốn đĩa? Muốn học ngữ pháp thì vào trang web rồi đọc thôi. Tôi không hiểu nhu cầu của bạn.
 
Lần chỉnh sửa cuối:
Nhưng lấy những gì và trình bầy như thế nào? Tôi nghĩ là ngữ pháp nó như cuốn sách ấy. Tức vd. chọn Bài 23 thì ra 1 trang và ta lấy tất cả từ đầu tới cuối của phần giữa, tức bỏ menu ở trái và bỏ bảng 50 Bài ở phải. Toàn bộ nội dung mỗi bài ngữ pháp sẽ được ghi ở dạng sách, tức tập tin TXT hoặc DOCX ở ngoài đĩa trong cùng thư mục với tập tin Excel. Trong tập tin Excel chỉ cần Hyperlink, nếu cần thì nhấn để mở sách ngữ pháp.

Như trên?
Bạn đọc kỹ thì sẽ thấy tôi không nói là dán vào bảng tính.
Vâng con tưởng dán đâu cũng được nên con nghĩ dán vào hết vào trong bảng tính cho tiện.
Nhưng ý Bác là dán riêng ra các file txt hoặc file docx để gọi từ link trong excel chắc là cũng thuận tiện ạ. Vì vấn đề này hiện con cũng đang chưa có ý tưởng gì Bác ạ.
Con cảm ơn Bác.
 
Vâng con tưởng dán đâu cũng được nên con nghĩ dán vào hết vào trong bảng tính cho tiện.
Nhưng ý Bác là dán riêng ra các file txt hoặc file docx để gọi từ link trong excel chắc là cũng thuận tiện ạ. Vì vấn đề này hiện con cũng đang chưa có ý tưởng gì Bác ạ.
Con cảm ơn Bác.
Thế còn câu hỏi của tôi?
Mà bạn giải thích chút vì tôi không hiểu. Phần từ vựng bạn muốn kéo về Excel thì hợp lý. Vì kéo về Eccel thì bạn có thể trình bầy theo cách của mình và ẩn đáp án, sắp xếp các từ theo thứ tự ngẫu nhiên.

Còn các phần khác như ngữ pháp và các phần tiếp theo nó như là những cuốn sách thì tại sao lại tải về ghi trên đĩa cho tốn công tốn đĩa? Muốn học ngữ pháp thì vào trang web rồi đọc thôi. Tôi không hiểu nhu cầu của bạn.
 
Thế còn câu hỏi của tôi?
Con chào Bác,
Câu hỏi phần sau hình như lúc con thông tin lại đến Bác chưa có,có thể Bác hỏi thêm vì con không thấy có thông báo mới về bài viết gửi về mail qua điện thoại nên con không biết.
Con muốn tải dữ liệu về chỉ mong muốn có thêm đầy đủ kiến đầy đủ cho ứng dụng này, nếu mỗi nhu cầu của con thì không quá cần thiết nhưng ở cơ quan con, có nhưng người cũng học cũng có máy tính nhưng máy tính của các bạn đó không được quyền truy cập internet nên con muốn tải thêm dữ liệu về ạ. Đúng là dữ liệu các phần sau như một cuốn sách nên khó có thể sắp xếp và làm cho nó đẹp theo ý như phần tự vựng được ạ.
Con cảm ơn Bác đã quan tâm và có ý giúp con ạ.
 
Web KT
Back
Top Bottom