Hoàng Nhật Phương
Thành viên gắn bó
- Tham gia
- 5/11/15
- Bài viết
- 1,895
- Được thích
- 1,219
Nhưng lúc đó sẽ có y như trong tập tin TXT, vd.Định dạng cột trong Excel là Text, rồi sau đó copy/ paste là được thôi mà.
Tất nhiên phần mềm nào cũng xuất ra dữ liệu thống nhất. Hoặc toàn ngày/tháng/năm hoặc toàn tháng/ngày/năm hay gì khác nữa. Đã lấy 1 chuẩn thì mọi dòng đều cùng chuẩn ấy.
Ở đây ta có thể đoán mà không cần tập tin của chủ thớt.
Nhìn dữ liệu thì có thể đoán là phần mềm xuất theo chuẩn tháng/ngày/năm. Nhưng khi load vào Excel thì Excel sẽ tự "cố" (???) chuyển thành ngày tháng. Vd. 09/02/2019 (chuẩn tháng/ngày/năm). Cái này có thể "thử" chuyển thành ngày tháng được. Thiết lập trên máy thớt là ngày/tháng/năm (???) nên Excel "thử" và cho là 09 là ngày, 02 là tháng. Vì thế chuyển thành 09/02/2019. Tất nhiên 09/02/2019 là ngày tháng sai so với "dụng ý" của phần mềm - phải là ngày 02 tháng 09 (chuẩn tháng/ngày/năm)
Còn vd. 09/13/2013 theo thiết lập ngày/tháng/năm của system thì không thể cố chuyển thành ngày tháng được nên để nguyên.
Vấn đề là tại sao phần mềm cứ chọn một chuẩn cứng nhắc tháng/ngày/năm. Lẽ ra nó phải chọn chuẩn dựa theo thiết lập trong system hiện hành mới phải.
Đúng là đừng Copy qua Excel, nhưng nên đưa dữ liệu file text ý lên, may ra đoán được làm sao để trở thành kiểu dữ liệu Ngày-tháng-năm như mong muốn;
Mình nghĩ khi Copy, Excel tài lanh biến hóa đủ thứ đi rồi là mệt!
Dạ phần mềm này chỉ có thể xuất ra file text được thôi ạ.. mà phần mềm của khách hàng nữa chứ.Cách tốt nhất, là gõ đầu công ty cung cấp phần mềm kia sửa lại: xuất thẳng ra excel hoặc file text với định dạng ngày tháng mong muốn
Sao phải vất vả xử lý cái đã rồi.
Bạn làm phương pháp của thế kỷ 20. Thời buổi bi giờ không ai copy/paste cả.Xin chào tất cả mọi người,
Dạ dữ liệu OT gửi lên đúng là xuất ra từ phần mềm ạ, OT cũng không hiểu sao phần mềm lại xuất ra như vậy.
Phần mềm xuất là dữ liệu file txt sau đó QT copy/pase vào excel ạ.
Cảm ơn Bác/Anh và các Bạn đã quan tâm ạ.
Import theo text. Sau đó sử lý bằng công thức....
Dạ phần mềm này chỉ có thể xuất ra file text được thôi ạ.. mà phần mềm của khách hàng nữa chứ.
Công ty OT chỉ là nhận lại file text khi đã xuất ra ạ.
Thay đổi người? Thế công ty tuyển người thẳng từ "ngoài đường" vào à? Tuyển người mà ngay cả ABC Windows không biết à? Không biết vào CP để thay đổi thiết lập? Nhân viên mở tập tin TEXT mà "nó" bắt phải chọn encoding, nó đưa ra các lựa chọn mà không biết chọn cái gì? Thì hoặc là cho đi học một khóa ngắn hạn hoặc là sa thải. Thế thôi. Nếu công ty tuyển người chưa biết gì thì công ty phải đào tạo họ. Còn nếu tuyển người có "chứng chỉ" tin học mà sau đó lòi ra là nhân viên không biết gì thì gửi cho nhân viên "tối hậu thư". Thế thôi.Không hẳn người dùng nào cũng biết xử lý hệ thống và cũng không phải lúc nào cũng có thể hướng dẫn được khi thay đổi người.
Thế bạn đã thử làm như tôi hướng dẫn không? Chỉ copy/paste. Nếu được thì dạy ai đó cách thao tác đổi thiết lập trong CP mất bao nhiêu thời gian? 5 phút? Hay theo bạn việc thay đổi thiết lập trong CP quá khó và nhân viên không thể tiếp thu được? Nhân viên "thông minh" ở mức đó thì nếu giữ lại thì cũng chỉ nên ở cương vị gác cổng hoặc quét dọn mà thôi.Dạ phần mềm này chỉ có thể xuất ra file text được thôi ạ.. mà phần mềm của khách hàng nữa chứ.
Công ty OT chỉ là nhận lại file text khi đã xuất ra ạ.
Ở mấy bài trên kêu không nên / dán vào Excel bị nhảy lung tung. Nếu kết quả y chang trong tập tin *.txt ban đầu thì quá tuyệt rồi mà anh.Nhưng lúc đó sẽ có y như trong tập tin TXT, vd.
08/29/2019 22:52:12
09/02/2019 23:09
Mà ta đang muốn có
29/08/2019 22:52:12
02/09/2019 23:09
cơ mà.
Tức là không phải nhân viên sợ công ty sa thải mình mà là công ty sợ nhân viên sa thải mình? Hơi lạ.Công ty con nghèo (chế độ thấp) nên việc tuyển người và giữ chân được người lao động cũng là một vấn đề nan giải của đội ngũ quản lý ạ.
Thì nhân viên nào làm để nhân viên đó đi hỏi (hỏi ai , hỏi ở đâu ... google hay 4rum là chuyện của nhân viên - giờ lớp trẻ vào mạng google veo veo lo chi). Như thế vừa dễ quản lý vừa nâng trình độ nhân viên của mình, thay vì người quản lý lại đi làm chuyện bao đồng.Dạ con cảm ơn Bác Siwtom ạ,
Công ty con nghèo (chế độ thấp) nên việc tuyển người và giữ chân được người lao động cũng là một vấn đề nan giải của đội ngũ quản lý ạ.
Vâng, đến thời điểm này ngoài cách Bác chỉ thì cách của Bác VetMini và Bạn befaint cũng rất an toàn ạ. Có cái tất cả các cách làm đều mang tính thủ công mà thủ công thì có thể sẽ dẫn đến sai sót ạ, do đó mà con muốn code ạ, ai cũng có thể sử dụng được ạ.
Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean
Declare Function GetUserDefaultLCID% Lib "kernel32" ()
Const LOCALE_SSHORTDATE = &H1F
Sub OpenTextFile(sShortDate)
Dim Locale As Long, sCurrentShortDate As String, i As Long
Locale = GetUserDefaultLCID()
i = GetLocaleInfo(Locale, LOCALE_SSHORTDATE, sCurrentShortDate, 0)
sCurrentShortDate = String(i, 0)
GetLocaleInfo Locale, LOCALE_SSHORTDATE, sCurrentShortDate, i
sCurrentShortDate = Left(sCurrentShortDate, InStr(sCurrentShortDate, Chr(0)) - 1)
SetLocaleInfo Locale, LOCALE_SSHORTDATE, sShortDate
SaveAsXlsx
SetLocaleInfo Locale, LOCALE_SSHORTDATE, sCurrentShortDate
End Sub
Private Sub SaveAsXlsx()
Dim sFilePath As String, NewExApp As Object, TmpWb As Workbook
With Application.FileDialog(msoFileDialogFilePicker)
.Filters.Clear
.Filters.Add "Text file", "*.txt"
.AllowMultiSelect = False
If .Show Then sFilePath = .SelectedItems(1)
End With
If sFilePath <> "" Then
With CreateObject("Excel.Application")
.EnableEvents = False
Set TmpWb = .Workbooks.Open(Filename:=sFilePath)
sFilePath = sFilePath & ".xlsx"
TmpWb.SaveAs Filename:=sFilePath, FileFormat:=xlOpenXMLWorkbook
TmpWb.Close False
.Quit
End With
Set TmpWb = Workbooks.Open(sFilePath)
TmpWb.ChangeFileAccess xlReadOnly
Kill sFilePath
End If
End Sub
Sub OpenTextFileMDY()
OpenTextFile "MM/dd/yyyy"
End Sub
Tức là không phải nhân viên sợ công ty sa thải mình mà là công ty sợ nhân viên sa thải mình? Hơi lạ.
Giống như không ít trường hợp ô sin mà như bà chủ. Ô sin ho một tiếng là chủ sợ xanh mặt.
Xin chào anh huuthang_bd,Thớt thử xem sao
Mã:Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean Declare Function GetUserDefaultLCID% Lib "kernel32" () Const LOCALE_SSHORTDATE = &H1F Sub OpenTextFile(sShortDate) Dim Locale As Long, sCurrentShortDate As String, i As Long Locale = GetUserDefaultLCID() i = GetLocaleInfo(Locale, LOCALE_SSHORTDATE, sCurrentShortDate, 0) sCurrentShortDate = String(i, 0) GetLocaleInfo Locale, LOCALE_SSHORTDATE, sCurrentShortDate, i sCurrentShortDate = Left(sCurrentShortDate, InStr(sCurrentShortDate, Chr(0)) - 1) SetLocaleInfo Locale, LOCALE_SSHORTDATE, sShortDate SaveAsXlsx SetLocaleInfo Locale, LOCALE_SSHORTDATE, sCurrentShortDate End Sub Private Sub SaveAsXlsx() Dim sFilePath As String, NewExApp As Object, TmpWb As Workbook With Application.FileDialog(msoFileDialogFilePicker) .Filters.Clear .Filters.Add "Text file", "*.txt" .AllowMultiSelect = False If .Show Then sFilePath = .SelectedItems(1) End With If sFilePath <> "" Then With CreateObject("Excel.Application") .EnableEvents = False Set TmpWb = .Workbooks.Open(Filename:=sFilePath) sFilePath = sFilePath & ".xlsx" TmpWb.SaveAs Filename:=sFilePath, FileFormat:=xlOpenXMLWorkbook TmpWb.Close False .Quit End With Set TmpWb = Workbooks.Open(sFilePath) TmpWb.ChangeFileAccess xlReadOnly Kill sFilePath End If End Sub Sub OpenTextFileMDY() OpenTextFile "MM/dd/yyyy" End Sub
Thôi được. Nếu công ty nghèo, nhân viên luôn dọa sa thải chủ thì ngoài thay đổi thiết lập trong CP như huuthang_bd làm thì bạn thử test xemDạ, cũng gần như là vậy Bác ạ.
Sub ImportText()
Dim filename
filename = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If filename = False Then Exit Sub
Workbooks.OpenText filename, Origin:=65001, StartRow:=2, DataType:=xlDelimited, Tab:=True, Space:=True
End Sub
, Space:=False
Dùng code lấy dữ liệu file data.txtXin chào tất cả mọi người,
Dạ dữ liệu OT gửi lên đúng là xuất ra từ phần mềm ạ, OT cũng không hiểu sao phần mềm lại xuất ra như vậy.
Phần mềm xuất là dữ liệu file txt sau đó QT copy/pase vào excel ạ.
Cảm ơn Bác/Anh và các Bạn đã quan tâm ạ.
Sub ABC()
Dim fso As Object, TextSource As Object
Dim Deli As String, TextFile As String, Res(), S, Arr
Dim k As Long, j As Integer, i As Long
Dim tmp As String, Ngay As String
Deli = vbTab
TextFile = ThisWorkbook.Path & "\data.txt" 'Duong dan va Ten file Text
Set fso = CreateObject("Scripting.FileSystemObject")
Set TextSource = fso.OpenTextFile(TextFile, 1, False, -2)
S = Split(TextSource.ReadAll, vbCrLf)
ReDim Res(0 To UBound(S), 0 To 0)
k = -1
For i = 0 To UBound(S)
Arr = Split(S(i), Deli)
If UBound(Res, 2) < UBound(Arr) Then
ReDim Preserve Res(0 To UBound(S), 0 To UBound(Arr))
End If
k = k + 1
For j = 0 To UBound(Arr)
If i > 0 And j < 2 Then 'Du lieu ngay thang
tmp = Mid(Arr(j), 1, 10)
Ngay = Mid(tmp, 7, 4) & "/" & Mid(tmp, 1, 2) & "/" & Mid(tmp, 4, 2)
Res(k, j) = Replace(Arr(j), tmp, Ngay)
Else
Res(k, j) = Arr(j)
End If
Next
Next
Sheet1.Range("A1").Resize(k + 1, UBound(Res, 2) + 1) = Res
End Sub
Như tôi đã khẳng định, chả có phần mềm nào đưa ra kết quả không đồng bộ cả. Chuyện không đồng bộ xảy ra khi bạn copy dữ liệu, bên đi và bên đến không tương thích nhau. Như vậy, để giải quyết vấn đề từ đầu mối thì bạn nên có thêm một phần mềm hay công cụ trung gian.... đến thời điểm này ngoài cách Bác chỉ thì cách của Bác *** và Bạn *** cũng rất an toàn ạ. Có cái tất cả các cách làm đều mang tính thủ công mà thủ công thì có thể sẽ dẫn đến sai sót ạ, do đó mà con muốn code ạ, ai cũng có thể sử dụng được ạ.