diff --git a/ve/ve7.cpp b/ve/ve7.cpp
index 0df27c371..4a1435778 100755
--- a/ve/ve7.cpp
+++ b/ve/ve7.cpp
@@ -9,6 +9,8 @@ int main( int argc, char** argv )
 
   switch (r)
   {
+  case 4:
+    ve7500(argc, argv); break;  // importazione listini gommisti (michelin,pirelli etc.)
   case 3:
     ve7400(argc, argv); break;  // esportazione bolle CONAD per marpesca
   case 2:
diff --git a/ve/ve7.h b/ve/ve7.h
index b5c365641..42145d192 100755
--- a/ve/ve7.h
+++ b/ve/ve7.h
@@ -5,5 +5,6 @@ int ve7100 (int, char**);
 int ve7200 (int, char**);
 int ve7300 (int, char**);
 int ve7400 (int, char**);
+int ve7500 (int, char**);
 
 #endif
diff --git a/ve/ve7500.cpp b/ve/ve7500.cpp
new file mode 100755
index 000000000..71c8b8d9f
--- /dev/null
+++ b/ve/ve7500.cpp
@@ -0,0 +1,151 @@
+#include <applicat.h>
+#include <filetext.h>
+#include <isamrpc.h>
+#include <mask.h>
+#include <tabutil.h>
+#include <progind.h>
+#include <recarray.h>
+#include <utility.h>
+
+#include "..\mg\umart.h"
+#include "..\mg\anamag.h"
+
+#include "ve7.h"
+#include "ve7500a.h"
+
+
+/////////////////////////////////////////////////////
+// Classe TLis2fil: filetext       //
+/////////////////////////////////////////////////////
+
+class TLis2fil_txt: public TFile_text
+{
+protected:
+//  virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
+
+public:
+  TLis2fil_txt(const TString& file_name, const TString& config_name);
+  virtual ~TLis2fil_txt() { }
+};
+
+TLis2fil_txt::TLis2fil_txt(const TString& file_name, const TString& config_name)
+          : TFile_text(file_name, config_name)
+{
+}
+
+
+/////////////////////////////////////////////////////
+// Classe TLis2fil: applicazione principale        //
+/////////////////////////////////////////////////////
+
+class TLis2fil: public TSkeleton_application
+{
+  TMask*          _msk;
+  
+protected:
+  virtual bool create(void);
+  virtual void main_loop();
+  virtual bool destroy(void);
+  void transfer(void);
+  static bool annulla_handler(TMask_field& f, KEY k);
+  const char * get_ini_name(const TString& filename) const;
+  void import(const TString& filename);
+
+public:
+  const TMask& msk() const { return *_msk; }
+  TLis2fil() {}
+  virtual ~TLis2fil() {}
+};
+
+const char * TLis2fil::get_ini_name (const TString& filename) const
+{
+  TScanner scan_line(filename);
+  const TString& line = scan_line.line();
+  return line[0] == '"' ? "ve7500p.ini" : "ve7500m.ini";
+}
+
+void TLis2fil::import(const TString& filename)
+{
+  //stabilisce quale tipo di listino e' il file corrente (M o P),carica il .ini relativo
+  //lo parsa in modo read
+  const char * ini = get_ini_name (filename);
+  TLis2fil_txt trasfile(filename, ini);
+  trasfile.open(filename,'r');
+  const long dimension = fsize(filename);
+  TString msg;
+  msg << "Acquisizione del file " << filename << " in corso...";
+  TProgind pi(dimension, msg, false, true);
+  
+  TRelation rel(LF_ANAMAG);
+  TRectype& rec_anamag = rel.curr();
+  
+  TRecord_text curr;
+  while (trasfile.read(curr) == NOERR) 
+  { 
+    pi.setstatus(trasfile.read_file()->tellg());
+    trasfile.autosave(rel, curr);
+  }
+
+  trasfile.close();
+}
+
+// creazione dell'applicazione
+bool TLis2fil::create()
+{                        
+  open_files(LF_ANAMAG, LF_UMART, 0);
+  
+  _msk = new TMask("ve7500a");
+  TString default_dir = "A:\\";
+  _msk->set(F_DIRNAME, default_dir);
+
+  return TSkeleton_application::create();
+}
+
+// distruzione dell'applicazione
+bool TLis2fil::destroy()
+{
+  delete _msk;
+  return TSkeleton_application::destroy();
+}
+
+// carica la maschera 
+void TLis2fil::main_loop()
+{
+  // Preimposta gli eventuali valori specificati sulla riga di comando            
+  KEY key = K_ENTER;
+  while (key != K_QUIT)
+  {
+    key = _msk->run();
+    if (key == K_ENTER)
+    {
+      TString_array dir_files;
+      TFilename path = _msk->get(F_DIRNAME);
+      path.add("*.txt");
+      list_files(path, dir_files);
+      FOR_EACH_ARRAY_ROW(dir_files, i, row)
+        import(*row);
+    }      
+  } 
+}
+
+
+// handler per gestire la conferma dell'annullamento dei dati inseriti
+// nella maschera
+bool TLis2fil::annulla_handler(TMask_field& f, KEY k)
+{
+  TMask &m = f.mask();
+  if (k == K_SPACE)
+  {
+    if (yesno_box("Vuoi veramente annullare i dati inseriti"))
+       m.reset();
+  }
+  return TRUE;
+}
+
+
+int ve7500(int argc, char* argv[])
+{
+  TLis2fil a ;
+  a.run(argc, argv, "Importazione listino");
+  return 0;
+}
diff --git a/ve/ve7500a.h b/ve/ve7500a.h
new file mode 100755
index 000000000..b30c0cdd0
--- /dev/null
+++ b/ve/ve7500a.h
@@ -0,0 +1,4 @@
+// acquisizione dati da file txt formattato: listini gommisti
+// definizione campi per maschera di selezione
+
+#define F_DIRNAME       101 // nome della directory da cui caricare i dati
diff --git a/ve/ve7500a.uml b/ve/ve7500a.uml
new file mode 100755
index 000000000..b7dbe6ae8
--- /dev/null
+++ b/ve/ve7500a.uml
@@ -0,0 +1,23 @@
+#include "ve7500a.h"
+
+
+PAGE "Acquisizione dati da file" -1 -1 78 4
+
+BUTTON DLG_OK 10 2
+BEGIN
+  PROMPT -12 -1 ""
+END
+
+BUTTON DLG_QUIT 10 2
+BEGIN
+  PROMPT -22 -1 ""
+END
+
+STRING F_DIRNAME 45 50
+BEGIN
+  PROMPT 1 1 "Cartella di origine dati "
+  CHECKTYPE REQUIRED
+END
+
+ENDPAGE
+ENDMASK
diff --git a/ve/ve7500m.ini b/ve/ve7500m.ini
new file mode 100755
index 000000000..252e09230
--- /dev/null
+++ b/ve/ve7500m.ini
@@ -0,0 +1,52 @@
+[MAIN]
+DECSEP = 
+FIELDSEP = 
+RECORDSEP =
+RECORDSIZE = 0
+SKIPLINES = 0
+TYPEFIELD = -1
+TYPELEN = -1
+TYPEPOS = -1
+
+[TYPE COD]
+ALIGN = L
+DATA = 
+DECIMAL = 0
+FILLER =
+LENGTH = 8
+PICTURE =
+
+[TYPE EURO]
+ALIGN = R
+DATA =
+DECIMAL = 2
+FILLER =
+LENGTH = 8
+PICTURE =
+
+[TYPE DES]
+ALIGN = L
+DATA = S
+DECIMAL = 0
+FILLER = ' '
+LENGTH = 54
+PICTURE =
+
+[RECORD]
+NAME(0) = CODART
+TYPE(0) = COD
+FIELD(0) = 47->CODART
+POSITION(0) = 0
+LENGTH(0) = 8
+
+NAME(1) = DESCR
+TYPE(1) = DES
+FIELD(1) = 47->DESCR
+POSITION(1) = 9
+LENGTH(1) = 54
+
+NAME(2) = PRICE
+TYPE(2) = EURO
+POSITION(2) = 63
+LENGTH(2) = 8
+
diff --git a/ve/ve7500p.ini b/ve/ve7500p.ini
new file mode 100755
index 000000000..38438efd7
--- /dev/null
+++ b/ve/ve7500p.ini
@@ -0,0 +1,52 @@
+[MAIN]
+DECSEP = 
+FIELDSEP = 
+RECORDSEP =
+RECORDSIZE = 0
+SKIPLINES = 0
+TYPEFIELD = -1
+TYPELEN = -1
+TYPEPOS = -1
+
+[TYPE COD]
+ALIGN = L
+DATA = 
+DECIMAL = 0
+FILLER =
+LENGTH = 9
+PICTURE =
+
+[TYPE EURO]
+ALIGN = R
+DATA =
+DECIMAL = 2
+FILLER =
+LENGTH = 11
+PICTURE =
+
+[TYPE DES]
+ALIGN = L
+DATA = S
+DECIMAL = 0
+FILLER = ' '
+LENGTH = 31
+PICTURE =
+
+[RECORD]
+NAME(0) = CODART
+TYPE(0) = COD
+FIELD(0) = 47->CODART
+POSITION(0) = 1
+LENGTH(0) = 9
+
+NAME(1) = DESCR
+TYPE(1) = DES
+FIELD(1) = 47->DESCR
+POSITION(1) = 13
+LENGTH(1) = 31
+
+NAME(2) = PRICE
+TYPE(2) = EURO
+POSITION(2) = 47
+LENGTH(2) = 11
+