求問各位大大~
使用excel搭配code128條碼,雖然能顯示出條碼形式,但實際上用Barcode槍或是手機app都掃不出來,爬了很多文,如果用巨集設定的方式最終也算有成功,但是這個方法、過程太複雜無法移植到公司的副系統,詢問了兩個公司的資訊人員,研究了快半年了大家還是無解,想問問大家是否有什麼經驗分享? 謝謝。
不是隨便打字 按變更字型 就可以用。

無聊技術研究院-由 Code 128 Font 建立 BarCode (含規則)
現在不都改用QRCODE? CODE39在EXCEL好像有內建的字型檔可以用,或許是你的CODE128字型檔本身有問題
,先直接在螢幕上或印出來掃掃看
把整個檔案丟上來,也行
milkojia wrote:
有研究過檢查碼的問題,確實是字體檔案有問題沒錯,但網路可以找到的檔案都只有這一種,實在是內建在excel的換字體來轉code這個模式太好用又簡單,但是到目前都還找不到可以掃成功的字體檔案,覺得很可惜
你誤會了
條碼有四個部份
1.起始碼 (start code)
2.資料碼 (data code)
3.結束碼 (end code)
4.檢查碼 (check code):可有可無
code39 的起始碼和結束碼就是 * 符號,你可以自己輸入在EXCEL欄位內,所以會感覺更換字型即可輸出條碼
例如: *33* 用條碼字型轉換出來的條碼刷下去會得到 33
code128 必須先用程式轉換出起始碼+結束碼,然後再整個套用 條碼字型 轉換成條碼,所以直接更換字型的條碼是無效的
樓上"無聊技術研究院"的網站有範例說明:code128條碼資料要帶出XYZ,整個條碼的結構換算後應該是 ËXYZCÎ,再把 ËXYZCÎ 用條碼字型轉換成條碼才能掃
因為我手邊沒有 Excel
所以先寫 javascript 版本再請 ChatGPT 幫我翻譯成 vba
下列是翻譯後的結果
(他還幫我加註解,我給他的東西並沒有註解)
Function Code128Text(str As String) As String
Dim i As Integer
Dim ascii As Integer
Dim digit As Integer
Dim charCode As Integer
' 起始碼 B 的數值
digit = 104
' 檢查字串中的每個字元
For i = 1 To Len(str)
charCode = Asc(Mid(str, i, 1))
' 判斷是否超出有效 ASCII 範圍
If charCode < 32 Or charCode > 126 Then
Code128Text = "轉換失敗"
Exit Function
End If
' 計算校驗碼
digit = (digit + (charCode - 32) * i) Mod 103
Next i
' 轉換校驗碼到 Code128 的字元範圍
If digit < 95 Then
digit = digit + 32
Else
digit = digit + 100
End If
' 組合最終結果
Code128Text = "Ì" & str & Chr(digit) & "Î"
End Function
使用方式大概是這樣
應該掃得出來
(下圖是 LibreOffice Calc 的畫面)

內文搜尋

X