diff --git a/summerize-part-list/tool_search_part_user.py b/summerize-part-list/tool_search_part_user.py
index 5ae60a17012fb34816778542d6dd06bf41d2c750..06912ba4ca3640af12bcdcc88e703da728cdbba6 100644
--- a/summerize-part-list/tool_search_part_user.py
+++ b/summerize-part-list/tool_search_part_user.py
@@ -23,9 +23,13 @@ import config, xlsx_conv, utils
 
 def main():
     def contains_id(fname, _id):
-        s = xlsx_conv.read_as_csv(fname)
-        s = s.replace(' ', '').replace(',', '')
-        return s.find(_id) != -1
+        try:
+            s = xlsx_conv.read_as_csv(fname)
+            s = s.replace(' ', '').replace(',', '')
+            return s.find(_id) != -1
+        except:
+            # Catch PermissionError etc. 
+            return False
 
     if len(sys.argv) == 1:
         raise RuntimeError('Usage: drag a file into me...')
diff --git a/utils.py b/utils.py
index dc6dbf98e259e4ffacce1ea350d07ce35157f945..3b7bba8761ba0646c4b46df2fc0f592955d05d81 100644
--- a/utils.py
+++ b/utils.py
@@ -40,7 +40,7 @@ def npmat_truncate_cols(mat, max_cols):
 def get_id_prefix_from_string(s):
     first_illegal_char_index = 0
     for i, c in enumerate(s.replace(' ', '')):
-        if c not in 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm.-':
+        if c not in 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm-':
             break
         else:
             first_illegal_char_index = i + 1